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  * Modifications Copyright (c) 2021 Orange
 
  12  * ================================================================================
 
  13  * Licensed under the Apache License, Version 2.0 (the "License");
 
  14  * you may not use this file except in compliance with the License.
 
  15  * You may obtain a copy of the License at
 
  17  *      http://www.apache.org/licenses/LICENSE-2.0
 
  19  * Unless required by applicable law or agreed to in writing, software
 
  20  * distributed under the License is distributed on an "AS IS" BASIS,
 
  21  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  22  * See the License for the specific language governing permissions and
 
  23  * limitations under the License.
 
  24  * ============LICENSE_END=========================================================
 
  27 package org.onap.so.bpmn.infrastructure.workflow.tasks;
 
  29 import static org.hamcrest.CoreMatchers.containsString;
 
  30 import static org.hamcrest.CoreMatchers.equalTo;
 
  31 import static org.junit.Assert.assertEquals;
 
  32 import static org.junit.Assert.assertFalse;
 
  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.mockito.ArgumentMatchers.any;
 
  37 import static org.mockito.ArgumentMatchers.anyList;
 
  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.nio.file.Files;
 
  49 import java.nio.file.Paths;
 
  50 import java.util.ArrayList;
 
  51 import java.util.Arrays;
 
  52 import java.util.List;
 
  54 import java.util.Optional;
 
  56 import java.util.UUID;
 
  57 import java.util.stream.Collectors;
 
  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.junit.Before;
 
  62 import org.junit.Ignore;
 
  63 import org.junit.Rule;
 
  64 import org.junit.Test;
 
  65 import org.junit.rules.ExpectedException;
 
  66 import org.mockito.InjectMocks;
 
  67 import org.mockito.Mock;
 
  68 import org.mockito.Mockito;
 
  69 import org.mockito.Spy;
 
  70 import org.onap.aai.domain.yang.GenericVnf;
 
  71 import org.onap.aai.domain.yang.Relationship;
 
  72 import org.onap.aai.domain.yang.RelationshipList;
 
  73 import org.onap.aai.domain.yang.ServiceInstance;
 
  74 import org.onap.aai.domain.yang.VfModule;
 
  75 import org.onap.aai.domain.yang.VolumeGroup;
 
  76 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
 
  77 import org.onap.aaiclient.client.aai.entities.Relationships;
 
  78 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 
  79 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 
  80 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
 
  81 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.Types;
 
  82 import org.onap.so.bpmn.BaseTaskTest;
 
  83 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.ServiceEBBLoader;
 
  84 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.UserParamsServiceTraversal;
 
  85 import org.onap.so.bpmn.infrastructure.workflow.tasks.ebb.loader.VnfEBBLoader;
 
  86 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
 
  87 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 
  88 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
 
  89 import org.onap.so.bpmn.servicedecomposition.entities.ExecuteBuildingBlock;
 
  90 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
 
  91 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
 
  92 import org.onap.so.client.orchestration.AAIEntityNotFoundException;
 
  93 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
 
  94 import org.onap.so.db.catalog.beans.CollectionResource;
 
  95 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
 
  96 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
 
  97 import org.onap.so.db.catalog.beans.ConfigurationResource;
 
  98 import org.onap.so.db.catalog.beans.CvnfcConfigurationCustomization;
 
  99 import org.onap.so.db.catalog.beans.CvnfcCustomization;
 
 100 import org.onap.so.db.catalog.beans.HeatEnvironment;
 
 101 import org.onap.so.db.catalog.beans.HeatTemplate;
 
 102 import org.onap.so.db.catalog.beans.InstanceGroup;
 
 103 import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization;
 
 104 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
 
 105 import org.onap.so.db.catalog.beans.Service;
 
 106 import org.onap.so.db.catalog.beans.VfModuleCustomization;
 
 107 import org.onap.so.db.catalog.beans.macro.NorthBoundRequest;
 
 108 import org.onap.so.db.catalog.beans.macro.OrchestrationFlow;
 
 109 import org.onap.so.serviceinstancebeans.RequestDetails;
 
 110 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
 
 111 import org.springframework.core.env.Environment;
 
 113 public class WorkflowActionTest extends BaseTaskTest {
 
 115     private static final String MACRO_ACTIVATE_DELETE_UNASSIGN_JSON = "Macro/ServiceMacroActivateDeleteUnassign.json";
 
 116     private static final String MACRO_ASSIGN_JSON = "Macro/ServiceMacroAssign.json";
 
 117     private static final String MACRO_ASSIGN_NO_CLOUD_JSON = "Macro/ServiceMacroAssignNoCloud.json";
 
 118     private static final String VF_MODULE_CREATE_WITH_FABRIC_JSON = "VfModuleCreateWithFabric.json";
 
 119     private static final String VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON = "VfModuleCreateWithFabricNoParams.json";
 
 120     private static final String VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON =
 
 121             "VfModuleReplaceRebuildVolumeGroups.json";
 
 122     private static final String MACRO_CREATE_NETWORK_COLLECTION_JSON = "Macro/CreateNetworkCollection.json";
 
 123     private static final String MACRO_VNF_MACRO_REPLACE_JSON = "Macro/VnfMacroReplace.json";
 
 124     private static final String MACRO_CREATE_JSON = "Macro/ServiceMacroAssignVnfAndPnf.json";
 
 125     private static final String MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE =
 
 126             "Macro/ServiceMacroCreateMultipleSameModelVnfsAndVfModules.json";
 
 129     protected Environment environment;
 
 131     protected UserParamsServiceTraversal userParamsServiceTraversal;
 
 134     private AaiResourceIdValidator aaiResourceIdValidator;
 
 136     protected WorkflowAction workflowAction;
 
 138     private DelegateExecution execution;
 
 142     protected WorkflowAction SPY_workflowAction;
 
 145     protected ExecuteBuildingBlockBuilder executeBuildingBlockBuilder;
 
 149     protected VnfEBBLoader vnfEBBLoaderSpy;
 
 153     protected ServiceEBBLoader serviceEBBLoader;
 
 156     public ExpectedException thrown = ExpectedException.none();
 
 158     private String RESOURCE_PATH = "src/test/resources/__files/";
 
 160     private List<OrchestrationFlow> replaceVfModuleOrchFlows =
 
 161             createFlowList("DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
 162                     "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
 
 163                     "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
 
 164                     "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 165     private List<OrchestrationFlow> replaceRetainAssignmentsVfModuleOrchFlows = createFlowList("DeactivateVfModuleBB",
 
 166             "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "UnassignVolumeGroupBB",
 
 167             "AssignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 168             "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 169     private List<OrchestrationFlow> replaceVfModuleWithFabricOrchFlows = createFlowList("DeleteFabricConfigurationBB",
 
 170             "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB",
 
 171             "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "AssignVfModuleBB",
 
 172             "CreateVfModuleBB", "ActivateVfModuleBB", "AddFabricConfigurationBB", "CreateVolumeGroupBB",
 
 173             "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
 176     public void before() throws Exception {
 
 177         execution = new DelegateExecutionFake();
 
 178         org.onap.aai.domain.yang.ServiceInstance servInstance = new org.onap.aai.domain.yang.ServiceInstance();
 
 179         servInstance.setServiceInstanceId("TEST");
 
 180         when(bbSetupUtils.getAAIServiceInstanceByName(anyString(), anyObject())).thenReturn(servInstance);
 
 181         workflowAction.setBbInputSetupUtils(bbSetupUtils);
 
 182         workflowAction.setBbInputSetup(bbInputSetup);
 
 190     public void selectExecutionListALaCarteNetworkCreateTest() throws Exception {
 
 191         String gAction = "createInstance";
 
 192         String resource = "Network";
 
 193         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 194         initExecution(gAction, bpmnRequest, true);
 
 195         execution.setVariable("requestUri", "v6/networks/123");
 
 197         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 198         List<OrchestrationFlow> orchFlows =
 
 199                 createFlowList("AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 200         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 202         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 203                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 205         workflowAction.selectExecutionList(execution);
 
 206         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 207         assertEqualsBulkFlowName(ebbs, "AssignNetwork1802BB", "CreateNetworkBB", "ActivateNetworkBB");
 
 211     public void selectExecutionListALaCarteNetworkDeleteTest() throws Exception {
 
 212         String gAction = "deleteInstance";
 
 213         String resource = "Network";
 
 214         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 215         initExecution(gAction, bpmnRequest, true);
 
 216         execution.setVariable("requestUri", "v6/networks/123");
 
 218         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 219         List<OrchestrationFlow> orchFlows =
 
 220                 createFlowList("DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 221         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 223         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 224                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 226         workflowAction.selectExecutionList(execution);
 
 227         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 228         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetwork1802BB");
 
 232     public void selectExecutionListALaCarteServiceCreateTest() throws Exception {
 
 233         String gAction = "createInstance";
 
 234         String resource = "Service";
 
 235         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 236         initExecution(gAction, bpmnRequest, true);
 
 237         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 240         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 241         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 242         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 244         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 245                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 246         workflowAction.selectExecutionList(execution);
 
 247         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 248         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 252     public void selectExecutionListDuplicateNameExceptionTest() throws Exception {
 
 253         String gAction = "createInstance";
 
 254         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 255         initExecution(gAction, bpmnRequest, true);
 
 256         execution.setVariable("requestUri", "v6/serviceInstances");
 
 258         doThrow(new DuplicateNameException(
 
 259                 "serviceInstance with name (instanceName) and different version id (3c40d244-808e-42ca-b09a-256d83d19d0a) already exists. The name must be unique."))
 
 260                         .when(aaiResourceIdValidator).validateResourceIdInAAI(anyString(), eq(WorkflowType.SERVICE),
 
 261                                 eq("test"), any(RequestDetails.class), any(WorkflowResourceIds.class));
 
 263         SPY_workflowAction.selectExecutionList(execution);
 
 264         assertEquals(execution.getVariable("WorkflowActionErrorMessage"),
 
 265                 "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.");
 
 267         // verify default values are present in failure case
 
 268         assertEquals(true, execution.getVariable("isTopLevelFlow"));
 
 269         assertEquals(false, execution.getVariable("sentSyncResponse"));
 
 273      * SERVICE MACRO TESTS
 
 276     public void selectExecutionListServiceMacroAssignTest() throws Exception {
 
 277         String gAction = "assignInstance";
 
 278         String resource = "Service";
 
 279         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 280         initExecution(gAction, bpmnRequest, false);
 
 281         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 283         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 284         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 285                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 286         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 288         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 289         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 290         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 291         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 292         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 293         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 294         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 295         vfModuleCustomization.setVfModule(vfModule);
 
 297         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 298         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 299         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 300         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 301         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 302         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 303         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 304         vfModuleCustomization2.setVfModule(vfModule2);
 
 306         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 307         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 309         when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
 
 310                 .thenReturn(prepareListWithResources(false, false));
 
 311         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 312                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 313         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 314                 .thenReturn(vfModuleCustomization);
 
 315         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 316                 .thenReturn(vfModuleCustomization2);
 
 317         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 318                 .thenReturn(vfModuleCustomization3);
 
 320         workflowAction.selectExecutionList(execution);
 
 321         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 322         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 323                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 327     public void selectExecutionListServiceMacroAssignNoCloudTest() throws Exception {
 
 328         String gAction = "assignInstance";
 
 329         String resource = "Service";
 
 330         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_NO_CLOUD_JSON);
 
 331         initExecution(gAction, bpmnRequest, false);
 
 332         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 334         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 335         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "AssignNetworkBB", "AssignVnfBB",
 
 336                 "AssignVolumeGroupBB", "AssignVfModuleBB");
 
 337         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 339         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 340         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 341         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 342         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 343         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 344         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 345         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 346         vfModuleCustomization.setVfModule(vfModule);
 
 348         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 349         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 350         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 351         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 352         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 353         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 354         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 355         vfModuleCustomization2.setVfModule(vfModule2);
 
 357         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 358         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 360         when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
 
 361                 .thenReturn(prepareListWithResources(false, false));
 
 362         when(environment.getProperty("org.onap.so.cloud-owner")).thenReturn("att-aic");
 
 363         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 364                 false, "att-aic")).thenReturn(northBoundRequest);
 
 365         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 366                 .thenReturn(vfModuleCustomization);
 
 367         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 368                 .thenReturn(vfModuleCustomization2);
 
 369         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 370                 .thenReturn(vfModuleCustomization3);
 
 371         workflowAction.selectExecutionList(execution);
 
 372         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 373         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 374                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB");
 
 378     public void selectExecutionListServiceMacroActivateTest() throws Exception {
 
 379         String gAction = "activateInstance";
 
 380         String resource = "Service";
 
 381         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 382         initExecution(gAction, bpmnRequest, false);
 
 383         execution.setVariable("requestUri", "v6/serviceInstances/si0");
 
 385         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 386         List<OrchestrationFlow> orchFlows =
 
 387                 createFlowList("CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 388                         "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
 
 389         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 391         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 392         serviceInstanceAAI.setServiceInstanceId("si0");
 
 393         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 394                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 395         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 396                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 397         vnf.setVnfId("vnf0");
 
 399         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 400         vnf.getVfModules().add(vfModule);
 
 401         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 402         vnf.getVfModules().add(vfModule2);
 
 404         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 405                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 406         volumeGroup.setVolumeGroupId("volumeGroup0");
 
 407         vnf.getVolumeGroups().add(volumeGroup);
 
 409         serviceInstanceMSO.getVnfs().add(vnf);
 
 411         VfModule aaiVfModule = new VfModule();
 
 412         aaiVfModule.setIsBaseVfModule(false);
 
 414         doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
 
 415         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("si0");
 
 416         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 417         doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
 
 418         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 419                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 420         workflowAction.selectExecutionList(execution);
 
 421         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 422         assertEqualsBulkFlowName(ebbs, "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 423                 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 424                 "ActivateServiceInstanceBB");
 
 425         assertEquals("volumeGroup0", ebbs.get(0).getWorkflowResourceIds().getVolumeGroupId());
 
 426         assertEquals("volumeGroup0", ebbs.get(1).getWorkflowResourceIds().getVolumeGroupId());
 
 427         assertEquals("testVfModuleId1", ebbs.get(2).getWorkflowResourceIds().getVfModuleId());
 
 428         assertEquals("testVfModuleId1", ebbs.get(3).getWorkflowResourceIds().getVfModuleId());
 
 429         assertEquals("testVfModuleId2", ebbs.get(4).getWorkflowResourceIds().getVfModuleId());
 
 430         assertEquals("testVfModuleId2", ebbs.get(5).getWorkflowResourceIds().getVfModuleId());
 
 431         assertEquals("vnf0", ebbs.get(6).getWorkflowResourceIds().getVnfId());
 
 432         assertEquals("si0", ebbs.get(7).getWorkflowResourceIds().getServiceInstanceId());
 
 436     public void selectExecutionListServiceMacroDeactivateTest() throws Exception {
 
 437         String gAction = "deactivateInstance";
 
 438         String resource = "Service";
 
 439         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 440         initExecution(gAction, bpmnRequest, false);
 
 441         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 443         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 444         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateServiceInstanceBB");
 
 445         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 447         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 448                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 449         workflowAction.selectExecutionList(execution);
 
 450         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 451         assertEquals(ebbs.get(0).getBuildingBlock().getBpmnFlowName(), "DeactivateServiceInstanceBB");
 
 455     public void selectExecutionListServiceMacroEmptyServiceTest() throws Exception {
 
 456         String gAction = "createInstance";
 
 457         String resource = "Service";
 
 458         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 459         initExecution(gAction, bpmnRequest, false);
 
 460         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 462         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 463         northBoundRequest.setIsToplevelflow(true);
 
 464         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 465                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 466                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 467                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 468                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 469         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 471         Service service = new Service();
 
 472         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 473         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 474                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 475         workflowAction.selectExecutionList(execution);
 
 476         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 477         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "ActivateServiceInstanceBB");
 
 481     public void selectExecutionListServiceMacroCreateJustNetworkTest() throws Exception {
 
 482         String gAction = "createInstance";
 
 483         String resource = "Service";
 
 484         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 485         initExecution(gAction, bpmnRequest, false);
 
 486         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 488         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 489         northBoundRequest.setIsToplevelflow(true);
 
 490         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 491                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 492                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 493                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 494                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 495         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 497         Service service = new Service();
 
 498         NetworkResourceCustomization networkCustomization = new NetworkResourceCustomization();
 
 499         networkCustomization.setModelCustomizationUUID("1234");
 
 500         service.getNetworkCustomizations().add(networkCustomization);
 
 501         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 502         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 503                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 505         workflowAction.selectExecutionList(execution);
 
 506         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 507         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignNetworkBB", "CreateNetworkBB",
 
 508                 "ActivateNetworkBB", "ActivateServiceInstanceBB");
 
 512     public void selectExecutionListServiceMacroCreateWithNetworkCollectionTest() throws Exception {
 
 513         String gAction = "createInstance";
 
 514         String resource = "Service";
 
 515         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 516         initExecution(gAction, bpmnRequest, false);
 
 517         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 519         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 520         northBoundRequest.setIsToplevelflow(true);
 
 521         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 522                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 523                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 524                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 525                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 526         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 528         Service service = new Service();
 
 529         List<NetworkResourceCustomization> networkCustomizations = new ArrayList<>();
 
 530         NetworkResourceCustomization networkCust = new NetworkResourceCustomization();
 
 531         networkCust.setModelCustomizationUUID("123");
 
 532         networkCustomizations.add(networkCust);
 
 533         service.setNetworkCustomizations(networkCustomizations);
 
 534         NetworkCollectionResourceCustomization collectionResourceCustomization =
 
 535                 new NetworkCollectionResourceCustomization();
 
 536         collectionResourceCustomization.setModelCustomizationUUID("123");
 
 538         CollectionResource collectionResource = new CollectionResource();
 
 539         collectionResource.setToscaNodeType("NetworkCollection");
 
 540         InstanceGroup instanceGroup = new InstanceGroup();
 
 541         instanceGroup.setToscaNodeType("NetworkCollectionResource");
 
 542         instanceGroup.setCollectionNetworkResourceCustomizations(new ArrayList<>());
 
 543         CollectionNetworkResourceCustomization collectionNetworkResourceCust =
 
 544                 new CollectionNetworkResourceCustomization();
 
 545         collectionNetworkResourceCust.setModelCustomizationUUID("123");
 
 546         collectionNetworkResourceCust.setNetworkResourceCustomization(collectionResourceCustomization);
 
 547         instanceGroup.getCollectionNetworkResourceCustomizations().add(collectionNetworkResourceCust);
 
 548         List<CollectionResourceInstanceGroupCustomization> collectionInstanceGroupCustomizations = new ArrayList<>();
 
 549         CollectionResourceInstanceGroupCustomization collectionInstanceGroupCustomization =
 
 550                 new CollectionResourceInstanceGroupCustomization();
 
 551         collectionInstanceGroupCustomization.setModelCustomizationUUID("123");
 
 552         collectionInstanceGroupCustomization.setSubInterfaceNetworkQuantity(3);
 
 553         collectionInstanceGroupCustomizations.add(collectionInstanceGroupCustomization);
 
 554         collectionInstanceGroupCustomization.setInstanceGroup(instanceGroup);
 
 555         collectionInstanceGroupCustomization.setCollectionResourceCust(collectionResourceCustomization);
 
 556         instanceGroup.setCollectionInstanceGroupCustomizations(collectionInstanceGroupCustomizations);
 
 557         collectionResource.setInstanceGroup(instanceGroup);
 
 558         collectionResourceCustomization.setCollectionResource(collectionResource);;
 
 559         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
 560         doReturn(service).when(catalogDbClient).getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 561         doReturn(collectionResourceCustomization).when(catalogDbClient)
 
 562                 .getNetworkCollectionResourceCustomizationByID("123");
 
 563         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 564                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 565         workflowAction.selectExecutionList(execution);
 
 566         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 567         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "CreateNetworkCollectionBB", "AssignNetworkBB",
 
 568                 "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
 569                 "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB",
 
 570                 "ActivateServiceInstanceBB");
 
 571         assertEquals("Network id not empty", !ebbs.get(2).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 572         assertEquals("Network id not empty", !ebbs.get(3).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 573         assertEquals("Network id not empty", !ebbs.get(4).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 574         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 575                 ebbs.get(2).getWorkflowResourceIds().getNetworkId() == ebbs.get(3).getWorkflowResourceIds()
 
 577                         && ebbs.get(3).getWorkflowResourceIds().getNetworkId() == ebbs.get(4).getWorkflowResourceIds()
 
 580         assertEquals("Network id not empty", !ebbs.get(5).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 581         assertEquals("Network id not empty", !ebbs.get(6).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 582         assertEquals("Network id not empty", !ebbs.get(7).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 583         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 584                 ebbs.get(5).getWorkflowResourceIds().getNetworkId() == ebbs.get(6).getWorkflowResourceIds()
 
 586                         && ebbs.get(6).getWorkflowResourceIds().getNetworkId() == ebbs.get(7).getWorkflowResourceIds()
 
 589         assertEquals("Network id not empty", !ebbs.get(8).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 590         assertEquals("Network id not empty", !ebbs.get(9).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 591         assertEquals("Network id not empty", !ebbs.get(10).getWorkflowResourceIds().getNetworkId().isEmpty(), true);
 
 592         assertEquals("Network id same for AssignNetworkBB CreateNetworkBB ActivateNetworkBB",
 
 593                 ebbs.get(8).getWorkflowResourceIds().getNetworkId() == ebbs.get(9).getWorkflowResourceIds()
 
 595                         && ebbs.get(9).getWorkflowResourceIds().getNetworkId() == ebbs.get(10).getWorkflowResourceIds()
 
 601     public void selectExecutionListServiceMacroCreateWithUserParams() throws Exception {
 
 602         String gAction = "createInstance";
 
 603         String resource = "Service";
 
 604         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
 605         initExecution(gAction, bpmnRequest, false);
 
 606         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 608         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 609         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 610                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateNetworkBB",
 
 611                 "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 612                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB",
 
 613                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 614         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 616         Service service = new Service();
 
 617         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 619         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 620         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 621         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 622         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 623         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 624         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 625         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 626         vfModuleCustomization.setVfModule(vfModule);
 
 628         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 629         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 630         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 631         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 632         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 633         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 634         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 635         vfModuleCustomization2.setVfModule(vfModule2);
 
 637         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 638         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 640         when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
 
 641                 .thenReturn(prepareListWithResources(false, false));
 
 642         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 643                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 644         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 645                 .thenReturn(vfModuleCustomization);
 
 646         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 647                 .thenReturn(vfModuleCustomization2);
 
 648         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 649                 .thenReturn(vfModuleCustomization3);
 
 650         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 651         workflowAction.selectExecutionList(execution);
 
 652         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 653         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 654                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "CreateVolumeGroupBB",
 
 655                 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
 
 656                 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB",
 
 657                 "ActivateServiceInstanceBB");
 
 659         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 660         int randomUUIDLength = UUID.randomUUID().toString().length();
 
 661         assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
 
 662         assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
 
 663         assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
 
 664         assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
 
 665         assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
 
 666         assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getVolumeGroupId().length());
 
 667         assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getVolumeGroupId().length());
 
 668         assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getVfModuleId().length());
 
 669         assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVfModuleId().length());
 
 670         assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVfModuleId().length());
 
 671         assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
 
 672         assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
 
 673         assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
 
 674         assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVnfId().length());
 
 675         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 676         assertEquals(true, execution.getVariable("homing"));
 
 680     public void selectExecutionListServiceMacroCreateWithUserParamsAndPriorities() throws Exception {
 
 681         String gAction = "createInstance";
 
 682         String resource = "Service";
 
 683         String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_JSON);
 
 684         initExecution(gAction, bpmnRequest, false);
 
 685         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 687         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 688         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 689                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "AssignPnfBB",
 
 690                 "WaitForPnfReadyBB", "ActivatePnfBB", "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB",
 
 691                 "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB", "AssignFabricConfigurationBB",
 
 692                 "ActivateFabricConfigurationBB", "ActivateVnfBB", "ActivateNetworkCollectionBB",
 
 693                 "ActivateServiceInstanceBB");
 
 694         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 696         Service service = new Service();
 
 697         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
 699         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 700         vfModuleCustomization.setModelCustomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f");
 
 701         HeatEnvironment volumeHeatEnv = new HeatEnvironment();
 
 702         vfModuleCustomization.setVolumeHeatEnv(volumeHeatEnv);
 
 703         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 704         HeatTemplate volumeHeatTemplate = new HeatTemplate();
 
 705         vfModule.setVolumeHeatTemplate(volumeHeatTemplate);
 
 706         vfModuleCustomization.setVfModule(vfModule);
 
 708         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 709         vfModuleCustomization2.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 710         HeatEnvironment heatEnvironment = new HeatEnvironment();
 
 711         vfModuleCustomization2.setHeatEnvironment(heatEnvironment);
 
 712         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 713         HeatTemplate moduleHeatTemplate = new HeatTemplate();
 
 714         vfModule2.setModuleHeatTemplate(moduleHeatTemplate);
 
 715         vfModuleCustomization2.setVfModule(vfModule2);
 
 717         VfModuleCustomization vfModuleCustomization3 = vfModuleCustomization2;
 
 718         vfModuleCustomization3.setModelCustomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8");
 
 720         when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), anyString()))
 
 721                 .thenReturn(prepareListWithResources(true, true));
 
 722         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 723                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 724         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f"))
 
 725                 .thenReturn(vfModuleCustomization);
 
 726         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("72d9d1cd-f46d-447a-abdb-451d6fb05fa8"))
 
 727                 .thenReturn(vfModuleCustomization2);
 
 728         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("da4d4327-fb7d-4311-ac7a-be7ba60cf969"))
 
 729                 .thenReturn(vfModuleCustomization3);
 
 730         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
 731         workflowAction.selectExecutionList(execution);
 
 732         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 733         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB", "AssignVnfBB", "AssignVolumeGroupBB",
 
 734                 "AssignVfModuleBB", "AssignVfModuleBB", "AssignVfModuleBB", "AssignPnfBB", "WaitForPnfReadyBB",
 
 735                 "ActivatePnfBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
 736                 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVfModuleBB",
 
 737                 "ActivateVfModuleBB", "ActivateVnfBB", "ActivateServiceInstanceBB");
 
 739         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 740         int randomUUIDLength = UUID.randomUUID().toString().length();
 
 741         assertEquals(randomUUIDLength, ebbs.get(1).getWorkflowResourceIds().getVnfId().length());
 
 742         assertEquals(randomUUIDLength, ebbs.get(2).getWorkflowResourceIds().getVolumeGroupId().length());
 
 743         assertEquals(randomUUIDLength, ebbs.get(3).getWorkflowResourceIds().getVfModuleId().length());
 
 744         assertEquals(randomUUIDLength, ebbs.get(4).getWorkflowResourceIds().getVfModuleId().length());
 
 745         assertEquals(randomUUIDLength, ebbs.get(5).getWorkflowResourceIds().getVfModuleId().length());
 
 746         assertEquals("72d9d1cd-f46d-447a-abdb-451d6fb05fa8", ebbs.get(3).getBuildingBlock().getKey());
 
 747         assertEquals("da4d4327-fb7d-4311-ac7a-be7ba60cf969", ebbs.get(4).getBuildingBlock().getKey());
 
 748         assertEquals("3c40d244-808e-42ca-b09a-256d83d19d0a", ebbs.get(5).getBuildingBlock().getKey());
 
 749         assertEquals(randomUUIDLength, ebbs.get(6).getWorkflowResourceIds().getPnfId().length());
 
 750         assertEquals(randomUUIDLength, ebbs.get(7).getWorkflowResourceIds().getPnfId().length());
 
 751         assertEquals(randomUUIDLength, ebbs.get(8).getWorkflowResourceIds().getPnfId().length());
 
 752         assertEquals(randomUUIDLength, ebbs.get(9).getWorkflowResourceIds().getVolumeGroupId().length());
 
 753         assertEquals(randomUUIDLength, ebbs.get(10).getWorkflowResourceIds().getVolumeGroupId().length());
 
 754         assertEquals(randomUUIDLength, ebbs.get(11).getWorkflowResourceIds().getVfModuleId().length());
 
 755         assertEquals(randomUUIDLength, ebbs.get(12).getWorkflowResourceIds().getVfModuleId().length());
 
 756         assertEquals(randomUUIDLength, ebbs.get(13).getWorkflowResourceIds().getVfModuleId().length());
 
 757         assertEquals(randomUUIDLength, ebbs.get(14).getWorkflowResourceIds().getVfModuleId().length());
 
 758         assertEquals(randomUUIDLength, ebbs.get(15).getWorkflowResourceIds().getVfModuleId().length());
 
 759         assertEquals(randomUUIDLength, ebbs.get(16).getWorkflowResourceIds().getVfModuleId().length());
 
 760         assertEquals(randomUUIDLength, ebbs.get(17).getWorkflowResourceIds().getVnfId().length());
 
 761         assertEquals(3, ebbs.get(0).getWorkflowResourceIds().getServiceInstanceId().length());
 
 762         assertEquals(true, execution.getVariable("homing"));
 
 766     public void selectExecutionListServiceMacroCreateWithMultipleSameModelVnfAndVfModules() throws Exception {
 
 767         String gAction = "createInstance";
 
 768         String resource = "Service";
 
 769         String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_SERVICE_MULTIPLE_SAME_MODEL_VNF_VFMODULE);
 
 770         initExecution(gAction, bpmnRequest, false);
 
 771         execution.setVariable("requestUri", "v7/serviceInstances");
 
 772         execution.setVariable("serviceInstanceId", UUID.randomUUID().toString());
 
 774         // Service-Macro-Create
 
 775         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 776         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB", "CreateNetworkCollectionBB",
 
 777                 "AssignNetworkBB", "AssignVnfBB", "AssignVolumeGroupBB", "AssignVfModuleBB", "ControllerExecutionBB",
 
 778                 "AssignPnfBB", "WaitForPnfReadyBB", "ControllerExecutionBB", "ControllerExecutionBB", "ActivatePnfBB",
 
 779                 "CreateNetworkBB", "ActivateNetworkBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB",
 
 780                 "CreateVfModuleBB", "ActivateVfModuleBB", "ControllerExecutionBB", "ActivateVnfBB",
 
 781                 "ActivateNetworkCollectionBB", "ActivateServiceInstanceBB");
 
 782         orchFlows.get(6).setBpmnAction("config-assign");
 
 783         orchFlows.get(6).setBpmnScope("vnf");
 
 784         orchFlows.get(9).setBpmnAction("config-assign");
 
 785         orchFlows.get(9).setBpmnScope("pnf");
 
 786         orchFlows.get(10).setBpmnAction("config-deploy");
 
 787         orchFlows.get(10).setBpmnScope("pnf");
 
 788         orchFlows.get(18).setBpmnAction("config-deploy");
 
 789         orchFlows.get(18).setBpmnScope("vnf");
 
 790         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 792         Service service = new Service();
 
 793         service.setModelUUID("f2444885-3c76-4ddc-8668-7741c0631495");
 
 795         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
 796         vfModuleCustomization.setModelCustomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0");
 
 797         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
 798         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
 799         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
 800         vfModuleCustomization.setVfModule(vfModule);
 
 802         VfModuleCustomization vfModuleCustomization2 = new VfModuleCustomization();
 
 803         vfModuleCustomization2.setModelCustomizationUUID("83677d89-428a-407b-b4ec-738e68275d84");
 
 804         vfModuleCustomization2.setHeatEnvironment(new HeatEnvironment());
 
 805         org.onap.so.db.catalog.beans.VfModule vfModule2 = new org.onap.so.db.catalog.beans.VfModule();
 
 806         vfModule2.setModuleHeatTemplate(new HeatTemplate());
 
 807         vfModuleCustomization2.setVfModule(vfModule2);
 
 809         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 810                 false, "DEFAULT")).thenReturn(northBoundRequest);
 
 811         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("3bd19000-6d21-49f1-9eb3-ea76a6eac5e0"))
 
 812                 .thenReturn(vfModuleCustomization);
 
 813         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("83677d89-428a-407b-b4ec-738e68275d84"))
 
 814                 .thenReturn(vfModuleCustomization2);
 
 815         when(catalogDbClient.getServiceByID("f2444885-3c76-4ddc-8668-7741c0631495")).thenReturn(service);
 
 818         Resource serviceResource =
 
 819                 new Resource(WorkflowType.SERVICE, "f2444885-3c76-4ddc-8668-7741c0631495", false, null);
 
 820         Resource vnfResource1 =
 
 821                 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
 
 822         vnfResource1.setInstanceName("vnf-instanceName-1");
 
 823         Resource vfmResource1 =
 
 824                 new Resource(WorkflowType.VFMODULE, "3bd19000-6d21-49f1-9eb3-ea76a6eac5e0", false, vnfResource1);
 
 825         vfmResource1.setInstanceName("demo-network-1");
 
 826         Resource vfmResource2 =
 
 827                 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource1);
 
 828         vfmResource2.setInstanceName("demo-1");
 
 829         Resource vnfResource2 =
 
 830                 new Resource(WorkflowType.VNF, "0d0ba1ee-6b7f-47fe-8266-2967993b2c08", false, serviceResource);
 
 831         vnfResource2.setInstanceName("vnf-instanceName-2");
 
 832         Resource vfmResource3 =
 
 833                 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
 
 834         vfmResource3.setInstanceName("demo-2");
 
 835         Resource vfmResource4 =
 
 836                 new Resource(WorkflowType.VFMODULE, "83677d89-428a-407b-b4ec-738e68275d84", false, vnfResource2);
 
 837         vfmResource4.setInstanceName("demo-3");
 
 839         when(userParamsServiceTraversal.getResourceListFromUserParams(any(), anyList(), anyString(), any()))
 
 840                 .thenReturn(Arrays.asList(serviceResource, vnfResource1, vnfResource2, vfmResource1, vfmResource2,
 
 841                         vfmResource3, vfmResource4));
 
 843         workflowAction.selectExecutionList(execution);
 
 845         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 847         Map<String, List<ExecuteBuildingBlock>> flowNamesToEbbList =
 
 848                 ebbs.stream().collect(Collectors.groupingBy(e -> e.getBuildingBlock().getBpmnFlowName()));
 
 850         assertEquals(1, flowNamesToEbbList.get("AssignServiceInstanceBB").size());
 
 851         assertEquals(2, flowNamesToEbbList.get("AssignVnfBB").size());
 
 852         assertEquals(4, flowNamesToEbbList.get("AssignVfModuleBB").size());
 
 853         assertEquals(4, flowNamesToEbbList.get("ControllerExecutionBB").size());
 
 854         assertEquals(4, flowNamesToEbbList.get("CreateVfModuleBB").size());
 
 855         assertEquals(4, flowNamesToEbbList.get("ActivateVfModuleBB").size());
 
 856         assertEquals(2, flowNamesToEbbList.get("ActivateVnfBB").size());
 
 857         assertEquals(1, flowNamesToEbbList.get("ActivateServiceInstanceBB").size());
 
 859         String vnfInstanceId1 = flowNamesToEbbList.get("AssignVnfBB").get(0).getWorkflowResourceIds().getVnfId();
 
 860         String vnfInstanceId2 = flowNamesToEbbList.get("AssignVnfBB").get(1).getWorkflowResourceIds().getVnfId();
 
 862         // should be 3 = 1 AssignVfModuleBB + 1 CreateVfModuleBB + 1 ActivateVfModuleBB
 
 863         boolean allEbbsForVfModule1HaveCorrectParentVnfId =
 
 864                 3 == ebbs.stream().map(ExecuteBuildingBlock::getWorkflowResourceIds)
 
 865                         .filter(w -> "demo-network-1".equals(w.getVfModuleInstanceName())
 
 866                                 && vnfInstanceId1.equals(w.getVnfId()))
 
 868         boolean allEbbsForVfModule2HaveCorrectParentVnfId = 3 == ebbs.stream()
 
 869                 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
 
 870                 .filter(w -> "demo-1".equals(w.getVfModuleInstanceName()) && vnfInstanceId1.equals(w.getVnfId()))
 
 872         boolean allEbbsForVfModule3HaveCorrectParentVnfId = 3 == ebbs.stream()
 
 873                 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
 
 874                 .filter(w -> "demo-2".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
 
 876         boolean allEbbsForVfModule4HaveCorrectParentVnfId = 3 == ebbs.stream()
 
 877                 .map(ExecuteBuildingBlock::getWorkflowResourceIds)
 
 878                 .filter(w -> "demo-3".equals(w.getVfModuleInstanceName()) && vnfInstanceId2.equals(w.getVnfId()))
 
 880         assertTrue(allEbbsForVfModule1HaveCorrectParentVnfId);
 
 881         assertTrue(allEbbsForVfModule2HaveCorrectParentVnfId);
 
 882         assertTrue(allEbbsForVfModule3HaveCorrectParentVnfId);
 
 883         assertTrue(allEbbsForVfModule4HaveCorrectParentVnfId);
 
 885         boolean controllerExecutionBBsforVnf1HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
 
 886                 .filter(e -> vnfInstanceId1.equals(e.getWorkflowResourceIds().getVnfId()))
 
 887                 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
 
 888                 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
 
 889         assertTrue(controllerExecutionBBsforVnf1HaveCorrectVnfId);
 
 891         boolean controllerExecutionBBsforVnf2HaveCorrectVnfId = flowNamesToEbbList.get("ControllerExecutionBB").stream()
 
 892                 .filter(e -> vnfInstanceId2.equals(e.getWorkflowResourceIds().getVnfId()))
 
 893                 .map(ExecuteBuildingBlock::getBuildingBlock).map(BuildingBlock::getBpmnAction)
 
 894                 .collect(Collectors.toSet()).containsAll(Set.of("config-assign", "config-deploy"));
 
 895         assertTrue(controllerExecutionBBsforVnf2HaveCorrectVnfId);
 
 899     public void selectExecutionListServiceMacroDeleteTest() throws Exception {
 
 900         String gAction = "deleteInstance";
 
 901         String resource = "Service";
 
 902         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 903         initExecution(gAction, bpmnRequest, false);
 
 904         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 906         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 907         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 908                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
 
 909                 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
 
 910                 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
 
 911                 "UnassignServiceInstanceBB");
 
 912         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 914         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 915         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 916         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 917                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 918         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
 919                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
 920         org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
 
 921                 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
 
 922         vnf.setVnfId("vnfId123");
 
 923         pnf.setPnfId("pnfId123");
 
 925         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
 926         vnf.getVfModules().add(vfModule);
 
 927         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
 928         vnf.getVfModules().add(vfModule2);
 
 930         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
 931                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
 932         volumeGroup.setVolumeGroupId("vg123");
 
 933         vnf.getVolumeGroups().add(volumeGroup);
 
 935         serviceInstanceMSO.getVnfs().add(vnf);
 
 936         serviceInstanceMSO.getPnfs().add(pnf);
 
 938         VfModule aaiVfModule = new VfModule();
 
 939         aaiVfModule.setIsBaseVfModule(false);
 
 941         doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
 
 942         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 943         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 944         doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
 
 945         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 946                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 947         workflowAction.selectExecutionList(execution);
 
 948         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 949         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVfModuleBB",
 
 950                 "DeleteVfModuleBB", "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB",
 
 951                 "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB", "UnassignVfModuleBB",
 
 952                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignServiceInstanceBB");
 
 956     public void selectExecutionListServiceMacroDeleteWithPnfTest() throws Exception {
 
 957         String gAction = "deleteInstance";
 
 958         String resource = "Service";
 
 959         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 960         initExecution(gAction, bpmnRequest, false);
 
 961         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 963         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 964         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
 965                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivatePnfBB",
 
 966                 "DeactivateNetworkBB", "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB",
 
 967                 "UnassignVfModuleBB", "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB",
 
 968                 "UnassignServiceInstanceBB");
 
 969         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
 971         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
 972         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
 973         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
 974                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
 975         org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf pnf =
 
 976                 new org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf();
 
 977         pnf.setPnfId("pnfId123");
 
 979         serviceInstanceMSO.getPnfs().add(pnf);
 
 981         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
 982         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
 983         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
 984                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
 985         workflowAction.selectExecutionList(execution);
 
 986         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
 987         assertEqualsBulkFlowName(ebbs, "DeactivatePnfBB", "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
 
 991     public void selectExecutionListServiceMacroUnassignTest() throws Exception {
 
 992         String gAction = "unassignInstance";
 
 993         String resource = "Service";
 
 994         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
 995         initExecution(gAction, bpmnRequest, false);
 
 996         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
 998         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
 999         List<OrchestrationFlow> orchFlows = createFlowList("UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
1000                 "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
1001         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1003         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
1004         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
1005         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
1006                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
1007         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
1008                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
1009         vnf.setVnfId("vnfId123");
 
1011         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule = buildVfModule();
 
1012         vnf.getVfModules().add(vfModule);
 
1013         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 = buildVfModule();
 
1014         vnf.getVfModules().add(vfModule2);
 
1016         org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup =
 
1017                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup();
 
1018         volumeGroup.setVolumeGroupId("vg123");
 
1019         vnf.getVolumeGroups().add(volumeGroup);
 
1021         serviceInstanceMSO.getVnfs().add(vnf);
 
1023         VfModule aaiVfModule = new VfModule();
 
1024         aaiVfModule.setIsBaseVfModule(false);
 
1026         doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
 
1027         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
1028         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
1029         doReturn(Mockito.mock(GenericVnf.class)).when(bbSetupUtils).getAAIGenericVnf(any());
 
1030         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1031                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1032         workflowAction.selectExecutionList(execution);
 
1033         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1034         assertEqualsBulkFlowName(ebbs, "UnassignVfModuleBB", "UnassignVfModuleBB", "UnassignVolumeGroupBB",
 
1035                 "UnassignVnfBB", "UnassignServiceInstanceBB");
 
1039     public void selectExecutionListServiceMacroDeleteNetworkCollectionTest() throws Exception {
 
1040         String gAction = "deleteInstance";
 
1041         String resource = "Service";
 
1042         String bpmnRequest = readBpmnRequestFromFile(MACRO_ACTIVATE_DELETE_UNASSIGN_JSON);
 
1043         initExecution(gAction, bpmnRequest, false);
 
1044         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
1046         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1047         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1048                 "DeactivateVolumeGroupBB", "DeleteVolumeGroupBB", "DeactivateVnfBB", "DeactivateNetworkBB",
 
1049                 "DeleteNetworkBB", "DeleteNetworkCollectionBB", "DeactivateServiceInstanceBB", "UnassignVfModuleBB",
 
1050                 "UnassignVolumeGroupBB", "UnassignVnfBB", "UnassignNetworkBB", "UnassignServiceInstanceBB");
 
1051         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1053         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
1054         serviceInstanceAAI.setServiceInstanceId("aaisi123");
 
1055         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
1056                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
1058         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network =
 
1059                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
1060         network.setNetworkId("123");
 
1061         serviceInstanceMSO.getNetworks().add(network);
 
1062         org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network2 =
 
1063                 new org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network();
 
1064         network2.setNetworkId("321");
 
1065         serviceInstanceMSO.getNetworks().add(network2);
 
1067         Collection collection = new Collection();
 
1068         serviceInstanceMSO.setCollection(collection);
 
1070         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
1071         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
1072         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1073                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1074         workflowAction.selectExecutionList(execution);
 
1075         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1076         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1077                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeleteNetworkCollectionBB",
 
1078                 "DeactivateServiceInstanceBB", "UnassignServiceInstanceBB");
 
1082     public void selectExecutionListVnfMacroRecreateTest() throws Exception {
 
1083         String gAction = "recreateInstance";
 
1084         String resource = "Vnf";
 
1085         String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
 
1086         initExecution(gAction, bpmnRequest, false);
 
1087         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/recreate");
 
1088         execution.setVariable("serviceInstanceId", "123");
 
1089         execution.setVariable("vnfId", "1234");
 
1091         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1092         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
1093                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
1094                 "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1095                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
1096                 "AAIUnsetVnfInMaintBB");
 
1097         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1099         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
1100         serviceInstanceAAI.setServiceInstanceId("123");
 
1101         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
1102                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
1103         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
1104                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
1105         vnf.setVnfId("1234");
 
1107         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
1108                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
1109         vfModule.setVfModuleId("vfModule1");
 
1110         vnf.getVfModules().add(vfModule);
 
1111         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
1112                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
1113         vfModule2.setVfModuleId("vfModule2");
 
1114         vnf.getVfModules().add(vfModule2);
 
1116         serviceInstanceMSO.getVnfs().add(vnf);
 
1118         org.onap.aai.domain.yang.VfModule aaiVfModule = new org.onap.aai.domain.yang.VfModule();
 
1119         aaiVfModule.setIsBaseVfModule(false);
 
1121         doReturn(aaiVfModule).when(bbSetupUtils).getAAIVfModule(any(), any());
 
1122         doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
 
1123         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
1124         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
1125         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1126                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
1127         workflowAction.selectExecutionList(execution);
 
1128         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1129         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
 
1130                 "DeleteVfModuleBB", "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "CreateVfModuleBB",
 
1131                 "ActivateVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB", "SDNOVnfHealthCheckBB",
 
1132                 "AAIUnsetVnfInMaintBB");
 
1136     public void selectExecutionListVnfMacroReplaceTest() throws Exception {
 
1137         String gAction = "replaceInstance";
 
1138         String resource = "Vnf";
 
1139         String bpmnRequest = readBpmnRequestFromFile(MACRO_VNF_MACRO_REPLACE_JSON);
 
1140         initExecution(gAction, bpmnRequest, false);
 
1141         execution.setVariable("requestUri", "v7/serviceInstances/123/vnfs/1234/replace");
 
1142         execution.setVariable("serviceInstanceId", "123");
 
1143         execution.setVariable("vnfId", "1234");
 
1145         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1146         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
1147                 "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB", "DeactivateVfModuleBB",
 
1148                 "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
1149                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
 
1150                 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
 
1151                 "AAIUnsetVnfInMaintBB");
 
1152         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1154         ServiceInstance serviceInstanceAAI = new ServiceInstance();
 
1155         serviceInstanceAAI.setServiceInstanceId("123");
 
1156         org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
 
1157                 new org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance();
 
1158         org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf =
 
1159                 new org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf();
 
1160         vnf.setVnfId("1234");
 
1161         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule =
 
1162                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
1163         vfModule.setVfModuleId("vfModule1");
 
1164         vnf.getVfModules().add(vfModule);
 
1165         org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule vfModule2 =
 
1166                 new org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule();
 
1167         vfModule2.setVfModuleId("vfModule2");
 
1168         vnf.getVfModules().add(vfModule2);
 
1169         serviceInstanceMSO.getVnfs().add(vnf);
 
1170         VfModule vfModuleAAI1 = new VfModule();
 
1171         vfModuleAAI1.setIsBaseVfModule(false);
 
1172         VfModule vfModuleAAI2 = new VfModule();
 
1173         vfModuleAAI2.setIsBaseVfModule(false);
 
1174         vfModuleAAI2.setVfModuleId("vfModule2");
 
1175         RelationshipList relationshipList = new RelationshipList();
 
1176         Relationship relationship = new Relationship();
 
1177         relationshipList.getRelationship().add(relationship);
 
1178         vfModuleAAI2.setRelationshipList(relationshipList);
 
1179         Relationships relationships = new Relationships("abc");
 
1180         Configuration config = new Configuration();
 
1181         config.setConfigurationId("configId");
 
1182         Optional<Configuration> configOp = Optional.of(config);
 
1183         Optional<Relationships> relationshipsOp = Optional.of(relationships);
 
1185         doReturn(new org.onap.aai.domain.yang.GenericVnf()).when(bbSetupUtils).getAAIGenericVnf(vnf.getVnfId());
 
1186         doReturn(relationshipsOp).when(workflowActionUtils).extractRelationshipsVnfc(isA(Relationships.class));
 
1187         doReturn(configOp).when(workflowActionUtils).extractRelationshipsConfiguration(isA(Relationships.class));
 
1188         doReturn(vfModuleAAI1).when(bbSetupUtils).getAAIVfModule("1234", "vfModule1");
 
1189         doReturn(vfModuleAAI2).when(bbSetupUtils).getAAIVfModule("1234", "vfModule2");
 
1190         doReturn(serviceInstanceAAI).when(bbSetupUtils).getAAIServiceInstanceById("123");
 
1191         doReturn(serviceInstanceMSO).when(bbInputSetup).getExistingServiceInstance(serviceInstanceAAI);
 
1192         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1193                 false, "cloud-owner")).thenReturn(northBoundRequest);
 
1194         workflowAction.selectExecutionList(execution);
 
1195         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1196         assertEqualsBulkFlowName(ebbs, "AAICheckVnfInMaintBB", "AAISetVnfInMaintBB", "DeactivateVfModuleBB",
 
1197                 "DeleteVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
 
1198                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "DeactivateVnfBB", "ChangeModelVfModuleBB",
 
1199                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
1200                 "ActivateVfModuleBB", "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB",
 
1201                 "ChangeModelVnfBB", "ActivateVnfBB", "ChangeModelServiceInstanceBB", "SDNOVnfHealthCheckBB",
 
1202                 "AAIUnsetVnfInMaintBB");
 
1203         for (ExecuteBuildingBlock executeBuildingBlock : ebbs) {
 
1204             assertEquals("123", executeBuildingBlock.getWorkflowResourceIds().getServiceInstanceId());
 
1210     public void selectExecutionListNetworkCollectionMacroCreate() throws Exception {
 
1211         String gAction = "createInstance";
 
1212         String resource = "NetworkCollection";
 
1213         String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
 
1214         initExecution(gAction, bpmnRequest, false);
 
1215         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
1217         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1218         List<OrchestrationFlow> orchFlows = createFlowList("CreateNetworkCollectionBB", "AssignNetworkBB",
 
1219                 "CreateNetworkBB", "ActivateNetworkBB", "ActivateNetworkCollectionBB");
 
1220         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1222         Service service = new Service();
 
1223         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
1224         CollectionResource collectionResource = new CollectionResource();
 
1225         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
1226         collectionResourceCustomization.setCollectionResource(collectionResource);
 
1227         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
1229         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1230                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1231         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1232         workflowAction.selectExecutionList(execution);
 
1233         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1234         assertEqualsBulkFlowName(ebbs, "CreateNetworkCollectionBB", "AssignNetworkBB", "CreateNetworkBB",
 
1235                 "ActivateNetworkBB", "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB",
 
1236                 "ActivateNetworkCollectionBB");
 
1241     public void selectExecutionListNetworkCollectionMacroDelete() throws Exception {
 
1242         String gAction = "deleteInstance";
 
1243         String resource = "NetworkCollection";
 
1244         String bpmnRequest = readBpmnRequestFromFile(MACRO_CREATE_NETWORK_COLLECTION_JSON);
 
1245         initExecution(gAction, bpmnRequest, false);
 
1246         execution.setVariable("requestUri", "v6/serviceInstances/123/networkCollections/123");
 
1248         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1249         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateNetworkBB", "DeleteNetworkBB",
 
1250                 "UnassignNetworkBB", "DeactivateNetworkCollectionBB", "DeleteNetworkCollectionBB");
 
1251         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1253         Service service = new Service();
 
1254         CollectionResourceCustomization collectionResourceCustomization = new CollectionResourceCustomization();
 
1255         CollectionResource collectionResource = new CollectionResource();
 
1256         collectionResource.setToscaNodeType("Data NetworkCollection Data");
 
1257         collectionResourceCustomization.setCollectionResource(collectionResource);
 
1258         service.getCollectionResourceCustomizations().add(collectionResourceCustomization);
 
1260         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1261                 false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1262         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
1263         workflowAction.selectExecutionList(execution);
 
1264         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1265         assertEqualsBulkFlowName(ebbs, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
1266                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB", "DeactivateNetworkCollectionBB",
 
1267                 "DeleteNetworkCollectionBB");
 
1271     public void selectExecutionListALaCarteVfModuleNoFabricCreateTest() throws Exception {
 
1272         String gAction = "createInstance";
 
1273         String resource = "VfModule";
 
1274         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1275         initExecution(gAction, bpmnRequest, true);
 
1276         execution.setVariable("requestUri",
 
1277                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1279         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1280         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1281                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1282         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
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");
 
1288         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
 
1292     public void selectExecutionListALaCarteVfModuleFabricCreateTest() throws Exception {
 
1293         String gAction = "createInstance";
 
1294         String resource = "VfModule";
 
1295         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1296         initExecution(gAction, bpmnRequest, true);
 
1297         execution.setVariable("requestUri",
 
1298                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1300         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1301         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1302                 "AddFabricConfigurationBB");
 
1303         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1305         List<CvnfcCustomization> cvnfcCustomizations = new ArrayList<CvnfcCustomization>();
 
1306         CvnfcCustomization cvnfcCustomization = new CvnfcCustomization();
 
1307         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization =
 
1308                 new CvnfcConfigurationCustomization();
 
1309         ConfigurationResource configurationResource = new ConfigurationResource();
 
1310         configurationResource.setToscaNodeType("FabricConfiguration");
 
1311         vnfVfmoduleCvnfcConfigurationCustomization.setConfigurationResource(configurationResource);
 
1312         vnfVfmoduleCvnfcConfigurationCustomization.setModelInstanceName("modelInstanceName1");
 
1313         vnfVfmoduleCvnfcConfigurationCustomization.setCvnfcCustomization(cvnfcCustomization);
 
1314         List<CvnfcConfigurationCustomization> custSet = new ArrayList<CvnfcConfigurationCustomization>();
 
1315         custSet.add(vnfVfmoduleCvnfcConfigurationCustomization);
 
1316         cvnfcCustomization.setCvnfcConfigurationCustomization(custSet);
 
1317         cvnfcCustomization.setDescription("description");
 
1318         cvnfcCustomizations.add(cvnfcCustomization);
 
1320         CvnfcCustomization cvnfcCustomization2 = new CvnfcCustomization();
 
1321         CvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization2 =
 
1322                 new CvnfcConfigurationCustomization();
 
1323         ConfigurationResource configurationResource2 = new ConfigurationResource();
 
1324         configurationResource2.setToscaNodeType("FabricConfiguration");
 
1325         vnfVfmoduleCvnfcConfigurationCustomization2.setConfigurationResource(configurationResource2);
 
1326         vnfVfmoduleCvnfcConfigurationCustomization2.setModelInstanceName("modelInstanceName2");
 
1327         vnfVfmoduleCvnfcConfigurationCustomization2.setCvnfcCustomization(cvnfcCustomization2);
 
1328         List<CvnfcConfigurationCustomization> custSet2 = new ArrayList<CvnfcConfigurationCustomization>();
 
1329         custSet2.add(vnfVfmoduleCvnfcConfigurationCustomization2);
 
1330         cvnfcCustomization2.setCvnfcConfigurationCustomization(custSet2);
 
1331         cvnfcCustomization2.setDescription("description2");
 
1332         cvnfcCustomizations.add(cvnfcCustomization2);
 
1334         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1335                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1337         workflowAction.selectExecutionList(execution);
 
1338         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1339         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
 
1345     public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceTest() throws Exception {
 
1346         String gAction = "replaceInstance";
 
1347         String resource = "VfModule";
 
1348         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1349         initExecution(gAction, bpmnRequest, true);
 
1350         execution.setVariable("requestUri",
 
1351                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1353         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1354         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1355         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1356                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1357         workflowAction.selectExecutionList(execution);
 
1358         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1360         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1361                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1362                 "ChangeModelServiceInstanceBB");
 
1366     public void selectExecutionListALaCarteVfModuleNoVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1367         String gAction = "replaceInstanceRetainAssignments";
 
1368         String resource = "VfModule";
 
1369         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1370         initExecution(gAction, bpmnRequest, true);
 
1371         execution.setVariable("requestUri",
 
1372                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1374         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1375         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1376         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1377                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1378         workflowAction.selectExecutionList(execution);
 
1379         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1381         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
 
1382                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1386     public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceTest() throws Exception {
 
1387         String gAction = "replaceInstance";
 
1388         String resource = "VfModule";
 
1389         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1390         initExecution(gAction, bpmnRequest, true);
 
1391         execution.setVariable("requestUri",
 
1392                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1393         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1394         execution.setVariable("vfModuleId", "1234");
 
1396         VolumeGroup volumeGroup = new VolumeGroup();
 
1397         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1398         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1399                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1400         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1401         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1402         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1403                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1404         workflowAction.selectExecutionList(execution);
 
1405         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1407         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1408                 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVfModuleBB",
 
1409                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1413     public void selectExecutionListALaCarteVfModuleVolumeGroupToNoVolumeGroupReplaceRetainAssignmentsTest()
 
1415         String gAction = "replaceInstanceRetainAssignments";
 
1416         String resource = "VfModule";
 
1417         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1418         initExecution(gAction, bpmnRequest, true);
 
1419         execution.setVariable("requestUri",
 
1420                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1421         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1422         execution.setVariable("vfModuleId", "1234");
 
1424         VolumeGroup volumeGroup = new VolumeGroup();
 
1425         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1426         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1427                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1429         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1430         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1431         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1432                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1433         workflowAction.selectExecutionList(execution);
 
1434         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1436         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1437                 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "ChangeModelVfModuleBB", "CreateVfModuleBB",
 
1438                 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1442     public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceTest() throws Exception {
 
1443         String gAction = "replaceInstance";
 
1444         String resource = "VfModule";
 
1445         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1446         initExecution(gAction, bpmnRequest, true);
 
1447         execution.setVariable("requestUri",
 
1448                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1449         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1450         execution.setVariable("vfModuleId", "1234");
 
1452         VolumeGroup volumeGroup = new VolumeGroup();
 
1453         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1454         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1455                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1457         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1458         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1459         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1460         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1461         vfModuleCustomization.setVfModule(vfModule);
 
1462         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1463                 .thenReturn(vfModuleCustomization);
 
1465         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1466         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1467         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1468                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1469         workflowAction.selectExecutionList(execution);
 
1470         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1472         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1473                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1474                 "ChangeModelServiceInstanceBB");
 
1478     public void selectExecutionListALaCarteVfModuleWithFabricKeepVolumeGroupReplaceTest() throws Exception {
 
1479         String gAction = "replaceInstance";
 
1480         String resource = "VfModule";
 
1481         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1482         initExecution(gAction, bpmnRequest, true);
 
1483         execution.setVariable("requestUri",
 
1484                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1485         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1486         execution.setVariable("vfModuleId", "1234");
 
1488         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1489         vnf.setVnfId("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1490         vnf.setModelCustomizationId("modelCustomizationId");
 
1491         when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
 
1493         org.onap.aai.domain.yang.VfModule vfModuleFromAAI = new org.onap.aai.domain.yang.VfModule();
 
1494         vfModuleFromAAI.setModelCustomizationId("modelCustomizationId");
 
1495         vfModuleFromAAI.setVfModuleId("1234");
 
1496         when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModuleFromAAI);
 
1498         VolumeGroup volumeGroup = new VolumeGroup();
 
1499         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1500         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1501                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1503         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1504         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1505         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1506         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1507         vfModuleCustomization.setVfModule(vfModule);
 
1508         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1509                 .thenReturn(vfModuleCustomization);
 
1510         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1511         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1512         vnfc.setModelInvariantId("modelInvariantId");
 
1513         vnfc.setVnfcName("testVnfcName");
 
1515         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(), any(), any());
 
1517         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1518         configuration.setConfigurationId("configurationId");
 
1519         configuration.setModelCustomizationId("modelCustimizationId");
 
1520         configuration.setConfigurationName("testConfigurationName");
 
1521         doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(any(), any(), any());
 
1523         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1524         northBoundRequest.setOrchestrationFlowList(replaceVfModuleWithFabricOrchFlows);
 
1525         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1526                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1527         SPY_workflowAction.selectExecutionList(execution);
 
1528         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1530         assertEqualsBulkFlowName(ebbs, "DeleteFabricConfigurationBB", "DeactivateVfModuleBB", "DeleteVfModuleATTBB",
 
1531                 "UnassignVFModuleBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB",
 
1532                 "ChangeModelServiceInstanceBB");
 
1536     public void selectExecutionListALaCarteVfModuleKeepVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1537         String gAction = "replaceInstanceRetainAssignments";
 
1538         String resource = "VfModule";
 
1539         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1540         initExecution(gAction, bpmnRequest, true);
 
1541         execution.setVariable("requestUri",
 
1542                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1543         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1544         execution.setVariable("vfModuleId", "1234");
 
1546         VolumeGroup volumeGroup = new VolumeGroup();
 
1547         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1548         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1549                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1551         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1552         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1553         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1554         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1555         vfModuleCustomization.setVfModule(vfModule);
 
1556         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1557                 .thenReturn(vfModuleCustomization);
 
1559         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1560         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1561         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1562                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1563         workflowAction.selectExecutionList(execution);
 
1564         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1566         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "ChangeModelVfModuleBB",
 
1567                 "CreateVfModuleBB", "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1571     public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceTest() throws Exception {
 
1572         String gAction = "replaceInstance";
 
1573         String resource = "VfModule";
 
1574         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1575         initExecution(gAction, bpmnRequest, true);
 
1576         execution.setVariable("requestUri",
 
1577                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1578         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1579         execution.setVariable("vfModuleId", "1234");
 
1581         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1582         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1583         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1584         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1585         vfModuleCustomization.setVfModule(vfModule);
 
1586         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1587                 .thenReturn(vfModuleCustomization);
 
1589         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1590         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1591         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1592                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1593         workflowAction.selectExecutionList(execution);
 
1594         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1596         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "UnassignVFModuleBB",
 
1597                 "AssignVolumeGroupBB", "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1598                 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1602     public void selectExecutionListALaCarteVfModuleNoVolumeGroupToVolumeGroupReplaceRetainAssignmentsTest()
 
1604         String gAction = "replaceInstanceRetainAssignments";
 
1605         String resource = "VfModule";
 
1606         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1607         initExecution(gAction, bpmnRequest, true);
 
1608         execution.setVariable("requestUri",
 
1609                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1610         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1611         execution.setVariable("vfModuleId", "1234");
 
1613         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1614         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1615         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1616         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1617         vfModuleCustomization.setVfModule(vfModule);
 
1618         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1619                 .thenReturn(vfModuleCustomization);
 
1621         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1622         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1623         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1624                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1625         workflowAction.selectExecutionList(execution);
 
1626         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1628         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "AssignVolumeGroupBB",
 
1629                 "ChangeModelVfModuleBB", "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB",
 
1630                 "ActivateVfModuleBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1634     public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceTest() throws Exception {
 
1635         String gAction = "replaceInstance";
 
1636         String resource = "VfModule";
 
1637         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
 
1638         initExecution(gAction, bpmnRequest, true);
 
1639         execution.setVariable("requestUri",
 
1640                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1641         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1642         execution.setVariable("vfModuleId", "1234");
 
1644         VolumeGroup volumeGroup = new VolumeGroup();
 
1645         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1646         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1647                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1649         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1650         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1651         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1652         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1653         vfModuleCustomization.setVfModule(vfModule);
 
1654         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1655                 .thenReturn(vfModuleCustomization);
 
1657         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1658         northBoundRequest.setOrchestrationFlowList(replaceVfModuleOrchFlows);
 
1659         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1660                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1661         workflowAction.selectExecutionList(execution);
 
1662         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1664         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1665                 "DeleteVolumeGroupBB", "UnassignVFModuleBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB",
 
1666                 "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB", "CreateVolumeGroupBB",
 
1667                 "ActivateVolumeGroupBB", "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1671     public void selectExecutionListALaCarteVfModuleRebuildVolumeGroupReplaceRetainAssignmentsTest() throws Exception {
 
1672         String gAction = "replaceInstanceRetainAssignments";
 
1673         String resource = "VfModule";
 
1674         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_REPLACE_REBUILD_VOLUME_GROUPS_JSON);
 
1675         initExecution(gAction, bpmnRequest, true);
 
1676         execution.setVariable("requestUri",
 
1677                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules/1234");
 
1678         execution.setVariable("vnfId", "b80b16a5-f80d-4ffa-91c8-bd47c7438a3d");
 
1679         execution.setVariable("vfModuleId", "1234");
 
1681         VolumeGroup volumeGroup = new VolumeGroup();
 
1682         volumeGroup.setVolumeGroupId("volumeGroupId");
 
1683         doReturn(Optional.of(volumeGroup)).when(bbSetupUtils)
 
1684                 .getRelatedVolumeGroupFromVfModule("b80b16a5-f80d-4ffa-91c8-bd47c7438a3d", "1234");
 
1686         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
 
1687         vfModuleCustomization.setVolumeHeatEnv(new HeatEnvironment());
 
1688         org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule();
 
1689         vfModule.setVolumeHeatTemplate(new HeatTemplate());
 
1690         vfModuleCustomization.setVfModule(vfModule);
 
1691         when(catalogDbClient.getVfModuleCustomizationByModelCuztomizationUUID("9a6d01fd-19a7-490a-9800-460830a12e0b"))
 
1692                 .thenReturn(vfModuleCustomization);
 
1694         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1695         northBoundRequest.setOrchestrationFlowList(replaceRetainAssignmentsVfModuleOrchFlows);
 
1696         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1697                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1698         workflowAction.selectExecutionList(execution);
 
1699         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1701         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleATTBB", "DeactivateVolumeGroupBB",
 
1702                 "DeleteVolumeGroupBB", "UnassignVolumeGroupBB", "AssignVolumeGroupBB", "ChangeModelVfModuleBB",
 
1703                 "CreateVolumeGroupBB", "ActivateVolumeGroupBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1704                 "ChangeModelVnfBB", "ChangeModelServiceInstanceBB");
 
1708     public void selectExecutionListALaCarteVfModuleFabricDeleteTest() throws Exception {
 
1709         String gAction = "deleteInstance";
 
1710         String resource = "VfModule";
 
1711         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1712         initExecution(gAction, bpmnRequest, true);
 
1713         execution.setVariable("requestUri",
 
1714                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1716         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1717         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1718                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1719         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1721         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1722                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1724         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1725         vnf.setVnfId("vnf0");
 
1726         vnf.setModelCustomizationId("modelCustomizationId");
 
1727         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1729         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1730         vfModule.setModelCustomizationId("modelCustomizationId");
 
1731         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1733         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1734         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
1735         vnfc.setModelInvariantId("modelInvariantId");
 
1736         vnfc.setVnfcName("testVnfcName");
 
1738         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
1741         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
 
1742         configuration.setConfigurationId("configurationId");
 
1743         configuration.setModelCustomizationId("modelCustimizationId");
 
1744         configuration.setConfigurationName("testConfigurationName");
 
1745         doReturn(configuration).when(SPY_workflowAction).getRelatedResourcesInVnfc(anyObject(), anyObject(),
 
1748         SPY_workflowAction.selectExecutionList(execution);
 
1749         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1750         assertEqualsBulkFlowName(ebbs, "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB",
 
1751                 "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
1755     public void selectExecutionListALaCarteNoRequestParametersTest() throws Exception {
 
1756         String gAction = "createInstance";
 
1757         String resource = "VfModule";
 
1758         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_NO_PARAMS_JSON);
 
1759         initExecution(gAction, bpmnRequest, true);
 
1760         execution.setVariable("requestUri",
 
1761                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1763         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1764         List<OrchestrationFlow> orchFlows = createFlowList("AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB",
 
1765                 "AssignFabricConfigurationBB", "ActivateFabricConfigurationBB");
 
1766         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1768         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1769                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1770         workflowAction.selectExecutionList(execution);
 
1771         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
1772         assertEqualsBulkFlowName(ebbs, "AssignVfModuleBB", "CreateVfModuleBB", "ActivateVfModuleBB");
 
1776     public void getConfigBuildingBlocksNoVfModuleFabricDeleteTest() throws Exception {
 
1777         String gAction = "deleteInstance";
 
1778         ObjectMapper mapper = new ObjectMapper();
 
1779         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1780         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1781         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1782         execution.setVariable("requestAction", gAction);
 
1783         execution.setVariable("bpmnRequest", bpmnRequest);
 
1784         execution.setVariable("vnfId", "1234");
 
1785         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1786         execution.setVariable("requestUri",
 
1787                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1788         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1789         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1790         String requestAction = "deleteInstance";
 
1791         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1792         boolean aLaCarte = true;
 
1793         String apiVersion = "7";
 
1794         String vnfType = "vnfType";
 
1795         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1796         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1797         Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
 
1798         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1800         thrown.expect(AAIEntityNotFoundException.class);
 
1801         thrown.expectMessage(containsString(
 
1802                 "No matching VfModule is found in Generic-Vnf in AAI for vnfId: 1234 and vfModuleId : vfModuleId1234"));
 
1804         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1805                 "UnassignVfModuleBB", "DeactivateFabricConfigurationBB", "UnassignFabricConfigurationBB");
 
1807         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1808                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1809                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1810                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1812         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1813         vnf.setVnfId("vnf0");
 
1814         vnf.setModelCustomizationId("modelCustomizationId");
 
1815         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1817         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1818         vfModule.setModelCustomizationId("modelCustomizationId");
 
1819         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(null);
 
1821         SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1825     public void getConfigBuildingBlocksTest() throws Exception {
 
1826         String gAction = "deleteInstance";
 
1827         ObjectMapper mapper = new ObjectMapper();
 
1828         mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
 
1830         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1831         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1832         execution.setVariable("requestAction", gAction);
 
1833         String bpmnRequest =
 
1834                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1835         execution.setVariable("bpmnRequest", bpmnRequest);
 
1836         execution.setVariable("vnfId", "1234");
 
1837         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1838         execution.setVariable("requestUri",
 
1839                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1840         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1841         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1842         String requestAction = "deleteInstance";
 
1843         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1844         boolean aLaCarte = true;
 
1845         String apiVersion = "7";
 
1846         String vnfType = "vnfType";
 
1847         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1848         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1849         Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
 
1850         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1852         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1853                 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
 
1855         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1856                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1857                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1858                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1860         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1861         vnf.setVnfId("vnf0");
 
1862         vnf.setModelCustomizationId("modelCustomizationId");
 
1863         when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
 
1865         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1866         vfModule.setModelCustomizationId("modelCustomizationId");
 
1868         org.onap.aai.domain.yang.Configuration config1 = new org.onap.aai.domain.yang.Configuration();
 
1869         config1.setConfigurationId("config1");
 
1870         org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
 
1871         config2.setConfigurationId("config2");
 
1873         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1874         org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
 
1875         vnfc1.setVnfcName("zauk53avetd02svm001");
 
1876         org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
 
1877         vnfc2.setVnfcName("zauk53avetd02tvm001");
 
1881         when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
 
1882         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
 
1883                 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
 
1884         doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
 
1885                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1886         doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
 
1887                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1889         List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1891         assertFalse(results.isEmpty());
 
1892         assertEquals(2, results.size());
 
1893         assertEquals("config1", results.get(0).getWorkflowResourceIds().getConfigurationId());
 
1894         assertEquals("config2", results.get(1).getWorkflowResourceIds().getConfigurationId());
 
1895         assertEquals("zauk53avetd02svm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
 
1896         assertEquals("zauk53avetd02tvm001", results.get(1).getConfigurationResourceKeys().getVnfcName());
 
1900     public void getConfigBuildingBlocksNullConfigurationTest() throws Exception {
 
1901         String gAction = "deleteInstance";
 
1902         ObjectMapper mapper = new ObjectMapper();
 
1903         mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
 
1905         WorkflowType resourceType = WorkflowType.VFMODULE;
 
1906         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
1907         execution.setVariable("requestAction", gAction);
 
1908         String bpmnRequest =
 
1909                 new String(Files.readAllBytes(Paths.get("src/test/resources/__files/VfModuleCreateWithFabric.json")));
 
1910         execution.setVariable("bpmnRequest", bpmnRequest);
 
1911         execution.setVariable("vnfId", "1234");
 
1912         execution.setVariable("vfModuleId", "vfModuleId1234");
 
1913         execution.setVariable("requestUri",
 
1914                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1915         ServiceInstancesRequest sIRequest = mapper.readValue(bpmnRequest, ServiceInstancesRequest.class);
 
1916         RequestDetails requestDetails = sIRequest.getRequestDetails();
 
1917         String requestAction = "deleteInstance";
 
1918         String requestId = "9c944122-d161-4280-8594-48c06a9d96d5";
 
1919         boolean aLaCarte = true;
 
1920         String apiVersion = "7";
 
1921         String vnfType = "vnfType";
 
1922         String key = "00d15ebb-c80e-43c1-80f0-90c40dde70b0";
 
1923         String resourceId = "d1d35800-783d-42d3-82f6-d654c5054a6e";
 
1924         Resource resourceKey = new Resource(resourceType, key, aLaCarte, null);
 
1925         WorkflowResourceIds workflowResourceIds = SPY_workflowAction.populateResourceIdsFromApiHandler(execution);
 
1927         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1928                 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
 
1930         ConfigBuildingBlocksDataObject dataObj = new ConfigBuildingBlocksDataObject().setsIRequest(sIRequest)
 
1931                 .setOrchFlows(orchFlows).setRequestId(requestId).setResourceKey(resourceKey).setApiVersion(apiVersion)
 
1932                 .setResourceId(resourceId).setRequestAction(requestAction).setaLaCarte(aLaCarte).setVnfType(vnfType)
 
1933                 .setWorkflowResourceIds(workflowResourceIds).setRequestDetails(requestDetails).setExecution(execution);
 
1935         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1936         vnf.setVnfId("vnf0");
 
1937         vnf.setModelCustomizationId("modelCustomizationId");
 
1938         when(bbSetupUtils.getAAIGenericVnf(any())).thenReturn(vnf);
 
1940         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1941         vfModule.setModelCustomizationId("modelCustomizationId");
 
1943         /* this is a test case where configuration for vnfc is null */
 
1944         org.onap.aai.domain.yang.Configuration config1 = null;
 
1945         org.onap.aai.domain.yang.Configuration config2 = new org.onap.aai.domain.yang.Configuration();
 
1946         config2.setConfigurationId("config2");
 
1948         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
1949         org.onap.aai.domain.yang.Vnfc vnfc1 = new org.onap.aai.domain.yang.Vnfc();
 
1950         vnfc1.setVnfcName("zauk53avetd02svm001");
 
1951         org.onap.aai.domain.yang.Vnfc vnfc2 = new org.onap.aai.domain.yang.Vnfc();
 
1952         vnfc2.setVnfcName("zauk53avetd02tvm001");
 
1956         when(bbSetupUtils.getAAIVfModule(any(), any())).thenReturn(vfModule);
 
1957         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(any(), any(),
 
1958                 eq(org.onap.aai.domain.yang.Vnfc.class), eq(Types.VNFC));
 
1959         doReturn(config1).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc1),
 
1960                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1961         doReturn(config2).when(SPY_workflowAction).getRelatedResourcesInVnfc(eq(vnfc2),
 
1962                 eq(org.onap.aai.domain.yang.Configuration.class), eq(Types.CONFIGURATION));
 
1964         List<ExecuteBuildingBlock> results = SPY_workflowAction.getConfigBuildingBlocks(dataObj);
 
1966         assertFalse(results.isEmpty());
 
1967         assertEquals(1, results.size());
 
1968         assertEquals("config2", results.get(0).getWorkflowResourceIds().getConfigurationId());
 
1969         assertEquals("zauk53avetd02tvm001", results.get(0).getConfigurationResourceKeys().getVnfcName());
 
1973     public void selectExecutionListALaCarteVfModuleNoFabricDeleteTest() throws Exception {
 
1974         String gAction = "deleteInstance";
 
1975         String resource = "VfModule";
 
1976         String bpmnRequest = readBpmnRequestFromFile(VF_MODULE_CREATE_WITH_FABRIC_JSON);
 
1977         initExecution(gAction, bpmnRequest, true);
 
1978         execution.setVariable("requestUri",
 
1979                 "v7/serviceInstances/f647e3ef-6d2e-4cd3-bff4-8df4634208de/vnfs/b80b16a5-f80d-4ffa-91c8-bd47c7438a3d/vfModules");
 
1981         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
1982         List<OrchestrationFlow> orchFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
1983                 "UnassignVfModuleBB", "DeleteFabricConfigurationBB");
 
1984         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
1986         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner(gAction, resource,
 
1987                 true, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
1989         org.onap.aai.domain.yang.GenericVnf vnf = new org.onap.aai.domain.yang.GenericVnf();
 
1990         vnf.setVnfId("vnf0");
 
1991         vnf.setModelCustomizationId("modelCustomizationId");
 
1992         when(bbSetupUtils.getAAIGenericVnf(anyObject())).thenReturn(vnf);
 
1994         org.onap.aai.domain.yang.VfModule vfModule = new org.onap.aai.domain.yang.VfModule();
 
1995         vfModule.setModelCustomizationId("modelCustomizationId");
 
1996         when(bbSetupUtils.getAAIVfModule(anyObject(), anyObject())).thenReturn(vfModule);
 
1998         List<org.onap.aai.domain.yang.Vnfc> vnfcs = new ArrayList<org.onap.aai.domain.yang.Vnfc>();
 
2000         doReturn(vnfcs).when(SPY_workflowAction).getRelatedResourcesInVfModule(anyObject(), anyObject(), anyObject(),
 
2003         SPY_workflowAction.selectExecutionList(execution);
 
2004         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
2005         assertEqualsBulkFlowName(ebbs, "DeactivateVfModuleBB", "DeleteVfModuleBB", "UnassignVfModuleBB");
 
2009     public void selectExecutionListMacroResumeTest() throws Exception {
 
2010         String gAction = "createInstance";
 
2011         String bpmnRequest = readBpmnRequestFromFile(MACRO_ASSIGN_JSON);
 
2012         initExecution(gAction, bpmnRequest, false);
 
2013         execution.setVariable("requestUri", "v6/serviceInstances/123");
 
2015         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
2016         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
2017         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
2019         Service service = new Service();
 
2020         service.setModelUUID("3c40d244-808e-42ca-b09a-256d83d19d0a");
 
2022         ServiceInstance si = new ServiceInstance();
 
2024         when(bbSetupUtils.getAAIServiceInstanceById("123")).thenReturn(si);
 
2025         when(catalogDbClient.getServiceByID("3c40d244-808e-42ca-b09a-256d83d19d0a")).thenReturn(service);
 
2027         String flowsToExecuteString =
 
2028                 "[{\"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\"}}]";
 
2029         ObjectMapper om = new ObjectMapper();
 
2030         List<ExecuteBuildingBlock> flowsToExecute = null;
 
2032             ExecuteBuildingBlock[] asArray = om.readValue(flowsToExecuteString, ExecuteBuildingBlock[].class);
 
2033             flowsToExecute = Arrays.asList(asArray);
 
2034         } catch (Exception e) {
 
2035             e.printStackTrace();
 
2038         when(bbSetupUtils.loadOriginalFlowExecutionPath(anyString())).thenReturn(flowsToExecute);
 
2040         workflowAction.selectExecutionList(execution);
 
2041         List<ExecuteBuildingBlock> ebbs = (List<ExecuteBuildingBlock>) execution.getVariable("flowsToExecute");
 
2042         assertEqualsBulkFlowName(ebbs, "AssignServiceInstanceBB");
 
2046     public void getRelatedResourcesInVfModuleTest() throws Exception {
 
2047         org.onap.aai.domain.yang.Vnfc vnfc = new org.onap.aai.domain.yang.Vnfc();
 
2048         vnfc.setModelInvariantId("modelInvariantId");
 
2049         vnfc.setVnfcName("testVnfcName");
 
2051         String vfncPayload =
 
2052                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/vnfcResponse.json")));
 
2053         AAIResultWrapper vfncWrapper = new AAIResultWrapper(vfncPayload);
 
2055         String configurationPayload =
 
2056                 new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/BuildingBlocks/configurationResponse.json")));
 
2057         AAIResultWrapper configurationWrapper = new AAIResultWrapper(configurationPayload);
 
2058         List<AAIResultWrapper> configurationResultWrappers = new ArrayList<AAIResultWrapper>();
 
2059         configurationResultWrappers.add(configurationWrapper);
 
2061         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().vnfc(vnfc.getVnfcName()));
 
2062         when(bbSetupUtils.getAAIResourceDepthOne(uri)).thenReturn(vfncWrapper);
 
2064         doReturn(configurationResultWrappers).when(SPY_workflowAction).getResultWrappersFromRelationships(anyObject(),
 
2066         org.onap.aai.domain.yang.Configuration configuration = SPY_workflowAction.getRelatedResourcesInVnfc(vnfc,
 
2067                 org.onap.aai.domain.yang.Configuration.class, Types.CONFIGURATION);
 
2068         assertEquals("testConfigurationId", configuration.getConfigurationId());
 
2072      * WorkflowActionBB Tests
 
2076     public void pluralTest() {
 
2077         List<String> items = Arrays.asList("serviceInstances, Service", "vnfs, Vnf", "vfModules, VfModule",
 
2078                 "networks, Network", "invalidNames, invalidNames");
 
2079         items.forEach(item -> {
 
2080             String[] split = item.split(",");
 
2081             String type = split[0].trim();
 
2082             String expected = split[1].trim();
 
2083             assertThat(workflowAction.convertTypeFromPlural(type), equalTo(expected));
 
2088     public void sortExecutionPathByObjectForVlanTaggingCreateTest() {
 
2089         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
2091         BuildingBlock bb = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("0");
 
2092         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
 
2093         executeFlows.add(ebb);
 
2095         BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("AssignNetworkBB").setKey("1");
 
2096         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
 
2097         executeFlows.add(ebb2);
 
2099         BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("0");
 
2100         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
 
2101         executeFlows.add(ebb3);
 
2103         BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("CreateNetworkBB").setKey("1");
 
2104         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
 
2105         executeFlows.add(ebb4);
 
2107         BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("0");
 
2108         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
 
2109         executeFlows.add(ebb5);
 
2111         BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("ActivateNetworkBB").setKey("1");
 
2112         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
 
2113         executeFlows.add(ebb6);
 
2115         List<ExecuteBuildingBlock> sorted =
 
2116                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "createInstance");
 
2117         assertEqualsBulkFlowName(sorted, "AssignNetworkBB", "CreateNetworkBB", "ActivateNetworkBB", "AssignNetworkBB",
 
2118                 "CreateNetworkBB", "ActivateNetworkBB");
 
2122     public void sortExecutionPathByObjectForVlanTaggingDeleteTest() {
 
2123         List<ExecuteBuildingBlock> executeFlows = new ArrayList<>();
 
2125         BuildingBlock bb = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("0");
 
2126         ExecuteBuildingBlock ebb = new ExecuteBuildingBlock().setBuildingBlock(bb);
 
2127         executeFlows.add(ebb);
 
2129         BuildingBlock bb2 = new BuildingBlock().setBpmnFlowName("DeactivateNetworkBB").setKey("1");
 
2130         ExecuteBuildingBlock ebb2 = new ExecuteBuildingBlock().setBuildingBlock(bb2);
 
2131         executeFlows.add(ebb2);
 
2133         BuildingBlock bb3 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("0");
 
2134         ExecuteBuildingBlock ebb3 = new ExecuteBuildingBlock().setBuildingBlock(bb3);
 
2135         executeFlows.add(ebb3);
 
2137         BuildingBlock bb4 = new BuildingBlock().setBpmnFlowName("DeleteNetworkBB").setKey("1");
 
2138         ExecuteBuildingBlock ebb4 = new ExecuteBuildingBlock().setBuildingBlock(bb4);
 
2139         executeFlows.add(ebb4);
 
2141         BuildingBlock bb5 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("0");
 
2142         ExecuteBuildingBlock ebb5 = new ExecuteBuildingBlock().setBuildingBlock(bb5);
 
2143         executeFlows.add(ebb5);
 
2145         BuildingBlock bb6 = new BuildingBlock().setBpmnFlowName("UnassignNetworkBB").setKey("1");
 
2146         ExecuteBuildingBlock ebb6 = new ExecuteBuildingBlock().setBuildingBlock(bb6);
 
2147         executeFlows.add(ebb6);
 
2149         List<ExecuteBuildingBlock> sorted =
 
2150                 workflowAction.sortExecutionPathByObjectForVlanTagging(executeFlows, "deleteInstance");
 
2151         assertEqualsBulkFlowName(sorted, "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB",
 
2152                 "DeactivateNetworkBB", "DeleteNetworkBB", "UnassignNetworkBB");
 
2156     public void queryNorthBoundRequestCatalogDbNestedTest() {
 
2157         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
2158         List<OrchestrationFlow> orchFlows = createFlowList("AAICheckVnfInMaintBB", "AAISetVnfInMaintBB",
 
2159                 "VNF-Macro-Replace", "SDNOVnfHealthCheckBB", "AAIUnsetVnfInMaintBB");
 
2160         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
2161         List<OrchestrationFlow> macroFlows = createFlowList("DeactivateVfModuleBB", "DeleteVfModuleBB",
 
2162                 "DeactivateVnfBB", "CreateVfModuleBB", "ActivateVfModuleBB", "ActivateVnfBB");
 
2164         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwner("replaceInstance",
 
2165                 "Vnf", false, "my-custom-cloud-owner")).thenReturn(northBoundRequest);
 
2166         when(catalogDbClient.getOrchestrationFlowByAction("VNF-Macro-Replace")).thenReturn(macroFlows);
 
2167         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "replaceInstance",
 
2168                 WorkflowType.VNF, false, "my-custom-cloud-owner");
 
2169         assertEquals(flows.get(0).getFlowName(), "AAICheckVnfInMaintBB");
 
2170         assertEquals(flows.get(1).getFlowName(), "AAISetVnfInMaintBB");
 
2171         assertEquals(flows.get(2).getFlowName(), "DeactivateVfModuleBB");
 
2172         assertEquals(flows.get(3).getFlowName(), "DeleteVfModuleBB");
 
2173         assertEquals(flows.get(4).getFlowName(), "DeactivateVnfBB");
 
2174         assertEquals(flows.get(5).getFlowName(), "CreateVfModuleBB");
 
2175         assertEquals(flows.get(6).getFlowName(), "ActivateVfModuleBB");
 
2176         assertEquals(flows.get(7).getFlowName(), "ActivateVnfBB");
 
2177         assertEquals(flows.get(8).getFlowName(), "SDNOVnfHealthCheckBB");
 
2178         assertEquals(flows.get(9).getFlowName(), "AAIUnsetVnfInMaintBB");
 
2182     public void queryNorthBoundRequestCatalogDbTransportTest() {
 
2183         NorthBoundRequest northBoundRequest = new NorthBoundRequest();
 
2184         List<OrchestrationFlow> orchFlows = createFlowList("AssignServiceInstanceBB");
 
2185         northBoundRequest.setOrchestrationFlowList(orchFlows);
 
2186         when(catalogDbClient.getNorthBoundRequestByActionAndIsALaCarteAndRequestScopeAndCloudOwnerAndServiceType(
 
2187                 "createInstance", "Service", true, "my-custom-cloud-owner", "TRANSPORT")).thenReturn(northBoundRequest);
 
2189         List<OrchestrationFlow> flows = workflowAction.queryNorthBoundRequestCatalogDb(execution, "createInstance",
 
2190                 WorkflowType.SERVICE, true, "my-custom-cloud-owner", "TRANSPORT");
 
2191         assertEquals(flows.get(0).getFlowName(), "AssignServiceInstanceBB");
 
2195     public void extractResourceIdAndTypeFromUriTest() {
 
2196         String uri = "/v6/serviceInstances/123";
 
2197         String uri2 = "/v6/serviceInstances/123/vnfs/1234";
 
2198         String uri3 = "/v6/serviceInstances";
 
2199         String uri4 = "/v6/serviceInstances/assign";
 
2200         String uri5 = "'/v6/serviceInstances/123/vnfs";
 
2201         String uri6 = "/v6/serviceInstances/123/vnfs/1234/someAction";
 
2202         String uri7 = "/v6/serviceInstances/123/vnfs/1234/vfModules/5678/replace";
 
2203         String uri8 = "/v6/serviceInstances/123/vnfs/1234/vfModules/scaleOut";
 
2204         Resource expected1 = new Resource(WorkflowType.SERVICE, "123", true, null);
 
2205         Resource expected2 = new Resource(WorkflowType.VNF, "1234", false, expected1);
 
2206         Resource expected3 = new Resource(WorkflowType.VNF, "1234", false, expected1);
 
2207         Resource expected4 = new Resource(WorkflowType.VFMODULE, "5678", false, expected2);
 
2208         Resource result = workflowAction.extractResourceIdAndTypeFromUri(uri);
 
2209         assertEquals(expected1.getResourceId(), result.getResourceId());
 
2210         assertEquals(expected1.getResourceType(), result.getResourceType());
 
2211         result = workflowAction.extractResourceIdAndTypeFromUri(uri2);
 
2212         assertEquals(expected2.getResourceId(), result.getResourceId());
 
2213         assertEquals(expected2.getResourceType(), result.getResourceType());
 
2214         result = workflowAction.extractResourceIdAndTypeFromUri(uri3);
 
2215         assertEquals("Service", result.getResourceType().toString());
 
2216         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
2217         result = workflowAction.extractResourceIdAndTypeFromUri(uri4);
 
2218         assertEquals("Service", result.getResourceType().toString());
 
2219         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
2220         result = workflowAction.extractResourceIdAndTypeFromUri(uri5);
 
2221         assertEquals("Vnf", result.getResourceType().toString());
 
2222         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
2223         result = workflowAction.extractResourceIdAndTypeFromUri(uri6);
 
2224         assertEquals(expected3.getResourceId(), result.getResourceId());
 
2225         assertEquals(expected3.getResourceType(), result.getResourceType());
 
2226         result = workflowAction.extractResourceIdAndTypeFromUri(uri7);
 
2227         assertEquals(expected4.getResourceId(), result.getResourceId());
 
2228         assertEquals(expected4.getResourceType(), result.getResourceType());
 
2229         result = workflowAction.extractResourceIdAndTypeFromUri(uri8);
 
2230         assertEquals(UUID.randomUUID().toString().length(), result.getResourceId().length());
 
2231         assertEquals("VfModule", result.getResourceType().toString());
 
2236     public void extractResourceIdAndTypeFromUriInvalidTypeTest() {
 
2237         this.expectedException.expect(IllegalArgumentException.class);
 
2238         this.expectedException.expectMessage(containsString("Uri could not be parsed. No type found."));
 
2239         workflowAction.extractResourceIdAndTypeFromUri("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace");
 
2243     public void extractResourceIdAndTypeFromUriInvalidUriTest() {
 
2244         this.expectedException.expect(IllegalArgumentException.class);
 
2245         this.expectedException.expectMessage(containsString("Uri could not be parsed:"));
 
2246         workflowAction.extractResourceIdAndTypeFromUri("something that doesn't match anything");
 
2250     public void extractResourceIdAndTypeFromUriResumeTest() {
 
2251         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
2252                 "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");
 
2253         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
2257     public void extractResourceIdAndTypeFromUriReplaceResumeTest() {
 
2258         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
2259                 "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");
 
2260         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
2264     public void extractResourceIdAndTypeFromUriDeActiveResumeTest() {
 
2265         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
2266                 "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");
 
2267         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
2271     public void extractResourceIdAndTypeFromUriResumeIdOnly() {
 
2272         Resource resource = workflowAction.extractResourceIdAndTypeFromUri(
 
2273                 "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");
 
2274         assertEquals(resource.getResourceId(), "33cb74cd-9cb3-4090-a3c0-1b8c8e235847");
 
2278     public void isUriResumeTest() {
 
2279         assertTrue(workflowAction.isUriResume(
 
2280                 "http://localhost:9100/onap/so/infra/orchestrationRequests/v7/requests/2f8ab587-ef6a-4456-b7b2-d73f9363dabd/resume"));
 
2281         assertTrue(workflowAction.isUriResume(
 
2282                 "        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"));
 
2284         assertFalse(workflowAction.isUriResume("/v6/serviceInstances/123/vnfs/1234/vfmodules/5678/replace"));
 
2288     public void isRequestMacroServiceResumeTest() {
 
2289         ServiceInstance si = new ServiceInstance();
 
2290         when(bbSetupUtils.getAAIServiceInstanceById(anyString())).thenReturn(si);
 
2291         assertFalse(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", ""));
 
2292         assertTrue(workflowAction.isRequestMacroServiceResume(false, WorkflowType.SERVICE, "createInstance", "123"));
 
2296     public void populateResourceIdsFromApiHandlerTest() {
 
2297         execution.setVariable("serviceInstanceId", "123");
 
2298         execution.setVariable("vnfId", "888");
 
2299         WorkflowResourceIds x = workflowAction.populateResourceIdsFromApiHandler(execution);
 
2300         assertEquals("123", x.getServiceInstanceId());
 
2301         assertEquals("888", x.getVnfId());
 
2302         assertNull(x.getVolumeGroupId());
 
2306     public void handleRuntimeExceptionTest() {
 
2307         execution.setVariable("BPMN_javaExpMsg", "test runtime error message");
 
2308         execution.setVariable("testProcessKey", "testProcessKeyValue");
 
2310             workflowAction.handleRuntimeException(execution);
 
2311         } catch (BpmnError wfe) {
 
2312             assertEquals("MSOWorkflowException", wfe.getErrorCode());
 
2316     private List<OrchestrationFlow> createFlowList(String... flowNames) {
 
2317         List<OrchestrationFlow> result = new ArrayList<>();
 
2318         int sequenceNumber = 1;
 
2319         for (String flowName : flowNames) {
 
2320             OrchestrationFlow orchFlow = new OrchestrationFlow();
 
2321             orchFlow.setFlowName(flowName);
 
2322             orchFlow.setSequenceNumber(sequenceNumber++);
 
2323             result.add(orchFlow);
 
2328     private void assertEqualsBulkFlowName(List<ExecuteBuildingBlock> ebbs, String... flowNames) {
 
2329         for (int i = 0; i < ebbs.size(); i++) {
 
2330             assertEquals(ebbs.get(i).getBuildingBlock().getBpmnFlowName(), flowNames[i]);
 
2332         assertEquals(ebbs.size(), flowNames.length);
 
2335     private void initExecution(String gAction, String bpmnRequest, boolean isAlaCarte) {
 
2336         execution.setVariable("mso-request-id", "00f704ca-c5e5-4f95-a72c-6889db7b0688");
 
2337         execution.setVariable("requestAction", gAction);
 
2338         execution.setVariable("bpmnRequest", bpmnRequest);
 
2339         execution.setVariable("aLaCarte", isAlaCarte);
 
2340         execution.setVariable("apiVersion", "7");
 
2343     private String readBpmnRequestFromFile(String fileName) throws IOException {
 
2344         return new String(Files.readAllBytes(Paths.get("src/test/resources/__files/" + fileName)));
 
2347     private List<Resource> prepareListWithResources(boolean addPnf, boolean addPriorites) {
 
2348         List<Resource> resourceList = new ArrayList<>();
 
2349         Resource r1 = new Resource(WorkflowType.SERVICE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, null);
 
2350         resourceList.add(r1);
 
2351         Resource r2 = new Resource(WorkflowType.VNF, "ab153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
 
2352         resourceList.add(r2);
 
2353         Resource r3 = new Resource(WorkflowType.VOLUMEGROUP, "a25e8e8c-58b8-4eec-810c-97dcc1f5cb7f", false, r2);
 
2354         resourceList.add(r3);
 
2355         Resource r4 = new Resource(WorkflowType.VFMODULE, "72d9d1cd-f46d-447a-abdb-451d6fb05fa8", false, r2);
 
2356         resourceList.add(r4);
 
2357         Resource r5 = new Resource(WorkflowType.VFMODULE, "3c40d244-808e-42ca-b09a-256d83d19d0a", false, r2);
 
2358         resourceList.add(r5);
 
2359         Resource r6 = new Resource(WorkflowType.VFMODULE, "da4d4327-fb7d-4311-ac7a-be7ba60cf969", false, r2);
 
2360         resourceList.add(r6);
 
2362             Resource r7 = new Resource(WorkflowType.PNF, "aa153b6e-c364-44c0-bef6-1f2982117f04", false, r1);
 
2363             resourceList.add(r7);
 
2366             r3.setProcessingPriority(2);
 
2367             r4.setProcessingPriority(1);
 
2368             r5.setProcessingPriority(4);
 
2369             r5.setBaseVfModule(true);
 
2370             r6.setProcessingPriority(3);
 
2372         return resourceList;