convert openstack to external tasks 22/104422/2
authorBoslet, Cory <cory.boslet@att.com>
Wed, 25 Mar 2020 20:04:41 +0000 (16:04 -0400)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Thu, 26 Mar 2020 15:44:39 +0000 (11:44 -0400)
Use external tasks to communicate with openstack adapter
Will be more resilient to failures
Refactored all flows to use external tasks not REST calls
Rollback is now an external task
Ensured backwards compatibility

Issue-ID: SO-2767
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I8afdb89c688d756aed0f25f7d9a7fb898142554d

74 files changed:
adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatEnvironmentEntry.java
adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoHeatUtils.java
adapters/mso-adapter-utils/src/test/java/org/onap/so/openstack/utils/MsoHeatUtilsTest.java
adapters/mso-adapters-rest-interface/src/main/java/org/onap/so/adapters/vnfrest/VfModuleRollback.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java [deleted file]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryService.java [deleted file]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/TaskServices.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AbstractAudit.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AbstractAudit.java with 97% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AbstractAuditService.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AbstractAuditService.java with 97% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AuditCreateStackService.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditCreateStackService.java with 95% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AuditDataService.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditDataService.java with 98% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AuditDeleteStackService.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditDeleteStackService.java with 95% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AuditQueryStackService.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditQueryStackService.java with 94% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/AuditVServer.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditVServer.java with 99% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/audit/HeatStackAudit.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/HeatStackAudit.java with 99% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/inventory/CreateAAIInventory.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateAAIInventory.java with 98% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/inventory/CreateInventoryTask.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryTask.java with 96% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/inventory/InventoryException.java [moved from adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/InventoryException.java with 96% similarity]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/RollbackService.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/StackService.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRest.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestV2.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRestV2.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/audit/AuditDataServiceTest.java [moved from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditDataServiceTest.java with 97% similarity]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/audit/AuditStackServiceDataTest.java [moved from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditStackServiceDataTest.java with 96% similarity]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/audit/AuditVServerTest.java [moved from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/AuditVServerTest.java with 99% similarity]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/audit/HeatStackAuditTest.java [moved from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/audit/HeatStackAuditTest.java with 99% similarity]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/inventory/CreateAAIInventoryTest.java [moved from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/inventory/create/CreateAAIInventoryTest.java with 97% similarity]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/inventory/CreateInventoryTaskTest.java [moved from adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/inventory/create/CreateInventoryTaskTest.java with 91% similarity]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/RollbackServiceTest.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/StackServiceTest.java [new file with mode: 0644]
adapters/mso-openstack-adapters/src/test/resources/__files/vnfAdapterTaskRequestCreate.xml [new file with mode: 0644]
adapters/so-appc-orchestrator/src/main/java/org/onap/so/adapters/appc/orchestrator/service/ApplicationControllerTask.java
adapters/so-appc-orchestrator/src/test/java/org/onap/so/adapters/appc/orchestrator/service/ApplicationControllerTaskTest.java
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/VnfAdapterRestV1.groovy
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/client/exception/ExceptionBuilder.java
bpmn/MSOCommonBPMN/src/main/resources/subprocess/VnfAdapterTask.bpmn [new file with mode: 0644]
bpmn/mso-infrastructure-bpmn/src/main/java/org/onap/so/bpmn/infrastructure/MSOInfrastructureApplication.java
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/VnfAdapter.bpmn
bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/VnfAdapterTest.java
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModuleRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModuleFromVnf.groovy
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/DeleteVfModuleVolumeInfraV1.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/process/UpdateVfModuleVolumeInfraV1.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModule.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleRollback.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeRollback.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoCreateVfModuleVolumeV2.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModule.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleFromVnf.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoDeleteVfModuleVolumeV2.bpmn
bpmn/so-bpmn-infrastructure-flows/src/main/resources/subprocess/DoUpdateVfModule.bpmn
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImpl.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/vnf/tasks/VnfAdapterImplTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapperTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterObjectMapperTest.java
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/NetworkMapper/createNetworkRequest.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleAddonRequest.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestWithCloudResources.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleWithVolumeGroupRequest.json
common/src/main/java/org/onap/so/logging/tasks/AuditMDCSetup.java [moved from common/src/main/java/org/onap/so/externaltasks/logging/AuditMDCSetup.java with 98% similarity]
common/src/main/java/org/onap/so/utils/ExternalTaskServiceUtils.java
common/src/main/java/org/onap/so/utils/ExternalTaskUtils.java
common/src/test/java/org/onap/so/logging/tasks/MDCSetupTest.java [moved from common/src/test/java/org/onap/so/externaltasks/logging/AuditMDCSetupTest.java with 88% similarity]
common/src/test/java/org/onap/so/utils/ExternalTaskUtilsTest.java
so-simulator/src/main/java/org/onap/so/simulator/scenarios/openstack/QueryStackByIdDoubleFailure.java
so-simulator/src/main/java/org/onap/so/simulator/scenarios/openstack/QueryStackByIdFailure.java
so-simulator/src/main/java/org/onap/so/simulator/scenarios/openstack/macro/QueryStackByIdMacro1.java
so-simulator/src/main/java/org/onap/so/simulator/scenarios/openstack/macro/QueryStackByIdMacro2.java
so-simulator/src/main/java/org/onap/so/simulator/scenarios/openstack/macro/QueryStackByIdMacro3.java

index 47ba076..1f6ff14 100644 (file)
@@ -58,7 +58,8 @@ public class MsoHeatEnvironmentEntry {
                 return;
             byte[] b = this.rawEntry.toString().getBytes();
             MsoYamlEditorWithEnvt yaml = new MsoYamlEditorWithEnvt(b);
-            StringBuilder sb = null;
+            this.parameters = yaml.getParameterListFromEnvt();
+            StringBuilder sb = this.getResourceRegistryRawEntry();
             if (yaml != null) {
                 this.parameters = yaml.getParameterListFromEnvt();
                 // this.resources = yaml.getResourceListFromEnvt();
index 97ba782..62d9f06 100644 (file)
@@ -132,7 +132,6 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
     private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
 
 
-
     /**
      * Create a new Stack in the specified cloud location and tenant. The Heat template and parameter map are passed in
      * as arguments, along with the cloud access credentials. It is expected that parameters have been validated and
@@ -190,7 +189,10 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
             } else if (CREATE_FAILED.equals(currentStack.getStackStatus())
                     || DELETE_FAILED.equals(currentStack.getStackStatus())) {
                 try {
-                    processCreateStack(cloudSiteId, tenantId, timeoutMinutes, backout, currentStack, createStack, true);
+                    if (pollForCompletion) {
+                        processCreateStack(cloudSiteId, tenantId, timeoutMinutes, backout, currentStack, createStack,
+                                true);
+                    }
                 } catch (MsoException e) {
                     if (e instanceof StackCreationException) {
                         logger.warn("Error during Stack will attempt to recreate stack");
@@ -199,9 +201,6 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
                         if (pollForCompletion) {
                             currentStack = processCreateStack(cloudSiteId, tenantId, timeoutMinutes, backout,
                                     currentStack, createStack, true);
-                        } else {
-                            currentStack = queryHeatStack(currentStack.getStackName() + "/" + currentStack.getId(),
-                                    cloudSiteId, tenantId);
                         }
                     } else {
                         throw e;
@@ -214,9 +213,6 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
             if (pollForCompletion) {
                 currentStack = processCreateStack(cloudSiteId, tenantId, timeoutMinutes, backout, currentStack,
                         createStack, true);
-            } else {
-                currentStack =
-                        queryHeatStack(currentStack.getStackName() + "/" + currentStack.getId(), cloudSiteId, tenantId);
             }
             operationPerformed = true;
         }
@@ -266,6 +262,7 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
             Stack heatStack, CreateStackParam stackCreate, boolean keyPairCleanUp) throws MsoException {
         Stack latestStack = null;
         try {
+
             latestStack =
                     pollStackForStatus(timeoutMinutes, heatStack, CREATE_IN_PROGRESS, cloudSiteId, tenantId, false);
         } catch (MsoException me) {
@@ -275,7 +272,7 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
                 stackCreate);
     }
 
-    protected Stack postProcessStackCreate(Stack stack, boolean backout, int timeoutMinutes, boolean cleanUpKeyPair,
+    public Stack postProcessStackCreate(Stack stack, boolean backout, int timeoutMinutes, boolean cleanUpKeyPair,
             String cloudSiteId, String tenantId, CreateStackParam stackCreate) throws MsoException {
         boolean stackCreationFailed = false;
         boolean stackRollbackFailed = false;
@@ -325,7 +322,7 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
         }
     }
 
-    protected Stack pollStackForStatus(int timeoutMinutes, Stack stack, String stackStatus, String cloudSiteId,
+    public Stack pollStackForStatus(int timeoutMinutes, Stack stack, String stackStatus, String cloudSiteId,
             String tenantId, boolean notFoundIsSuccess) throws MsoException {
         int pollingFrequency =
                 Integer.parseInt(this.environment.getProperty(createPollIntervalProp, CREATE_POLL_INTERVAL_DEFAULT));
@@ -334,7 +331,11 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
         int numberOfPollingAttempts = Math.floorDiv((timeoutMinutes * pollingMultiplier), pollingFrequency);
         Heat heatClient = getHeatClient(cloudSiteId, tenantId);
         while (true) {
-            Stack latestStack = queryHeatStack(heatClient, stack.getStackName() + "/" + stack.getId());
+            String stackName = stack.getStackName() + "/" + stack.getId();
+            if (stack.getId() == null) {
+                stackName = stack.getStackName();
+            }
+            Stack latestStack = queryHeatStack(heatClient, stackName);
             if (latestStack == null && notFoundIsSuccess) {
                 return null;
             } else if (latestStack != null) {
@@ -385,27 +386,33 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
     protected Stack handleUnknownCreateStackFailure(Stack stack, int timeoutMinutes, String cloudSiteId,
             String tenantId) throws MsoException {
         if (stack != null && !Strings.isNullOrEmpty(stack.getStackName()) && !Strings.isNullOrEmpty(stack.getId())) {
-            return deleteStack(stack, timeoutMinutes, cloudSiteId, tenantId);
+            return deleteStack(stack, timeoutMinutes, cloudSiteId, tenantId, false);
         } else {
             throw new StackCreationException("Cannot Find Stack Name or Id");
         }
     }
 
-    private Stack deleteStack(Stack stack, int timeoutMinutes, String cloudSiteId, String tenantId)
-            throws MsoException {
+    private Stack deleteStack(Stack stack, int timeoutMinutes, String cloudSiteId, String tenantId,
+            boolean pollForCompletion) throws MsoException {
         OpenStackRequest<Void> request = getHeatClient(cloudSiteId, tenantId).getStacks()
                 .deleteByName(stack.getStackName() + "/" + stack.getId());
         executeAndRecordOpenstackRequest(request);
-        Stack currentStack = pollStackForStatus(timeoutMinutes, stack, DELETE_IN_PROGRESS, cloudSiteId, tenantId, true);
-        if (currentStack == null) {
+        logger.debug("Completed Executing executeAndRecordOpenstackRequest");
+        if (pollForCompletion == true) {
+            Stack currentStack =
+                    pollStackForStatus(timeoutMinutes, stack, DELETE_IN_PROGRESS, cloudSiteId, tenantId, true);
+            if (currentStack == null) {
+                return currentStack;
+            }
+            postProcessStackDelete(currentStack);
             return currentStack;
         } else {
-            postProcessStackDelete(currentStack);
+            logger.debug("Returning the stack");
+            return stack;
         }
-        return currentStack;
     }
 
-    protected void postProcessStackDelete(Stack stack) throws MsoException {
+    public void postProcessStackDelete(Stack stack) throws MsoException {
         logger.info("Performing post processing on delete stack {}", stack);
         if (stack != null && !Strings.isNullOrEmpty(stack.getStackStatus())) {
             if (!DELETE_COMPLETE.equals(stack.getStackStatus()))
@@ -503,10 +510,13 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
             stackInfo = new StackInfo(stackName, HeatStatus.NOTFOUND);
             stackInfo.setOperationPerformed(false);
         } else {
-            currentStack = deleteStack(currentStack, timeoutMinutes, cloudSiteId, tenantId);
+            currentStack = deleteStack(currentStack, timeoutMinutes, cloudSiteId, tenantId, pollForCompletion);
             stackInfo = new StackInfoMapper(currentStack).map();
             stackInfo.setName(stackName);
             stackInfo.setOperationPerformed(true);
+            if (currentStack != null) {
+                stackInfo.setCanonicalName(currentStack.getStackName() + "/" + currentStack.getId());
+            }
         }
         return stackInfo;
     }
@@ -632,7 +642,7 @@ public class MsoHeatUtils extends MsoCommonUtils implements VduPlugin {
         return queryHeatStack(getHeatClient(cloudSiteId, tenantId), stackName);
     }
 
-
+    // TODO enhancement - just have this return the stack then we dont have to query again in deleteStack
     public Map<String, Object> queryStackForOutputs(String cloudSiteId, String cloudOwner, String tenantId,
             String stackName) throws MsoException {
         logger.debug("MsoHeatUtils.queryStackForOutputs)");
index 0f9f7a2..4938bff 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -264,9 +264,9 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
 
         heatUtils.handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId);
         Mockito.verify(heatUtils, times(1)).executeAndRecordOpenstackRequest(mockDeleteStack);
-        Mockito.verify(heatUtils, times(1)).pollStackForStatus(120, stack, "DELETE_IN_PROGRESS", cloudSiteId, tenantId,
+        Mockito.verify(heatUtils, times(0)).pollStackForStatus(120, stack, "DELETE_IN_PROGRESS", cloudSiteId, tenantId,
                 true);
-        Mockito.verify(heatUtils, times(1)).postProcessStackDelete(deletedStack);
+        Mockito.verify(heatUtils, times(0)).postProcessStackDelete(deletedStack);
     }
 
 
@@ -324,8 +324,6 @@ public class MsoHeatUtilsTest extends MsoHeatUtils {
         CreateStackParam createStackParam = new CreateStackParam();
         createStackParam.setStackName("stackName");
 
-        // doReturn(mockResources).when(heatUtils).queryStackResources(cloudSiteId, tenantId, "stackName", 2);
-        // doNothing().when(novaClient).deleteKeyPair(cloudSiteId, tenantId, "KeypairName");
         doReturn(null).when(heatUtils).handleUnknownCreateStackFailure(stack, 120, cloudSiteId, tenantId);
         doReturn(createdStack).when(heatUtils).createStack(createStackParam, cloudSiteId, tenantId);
         doReturn(createdStack).when(heatUtils).processCreateStack(cloudSiteId, tenantId, 120, true, createdStack,
index 5f93765..5f4d9d3 100644 (file)
@@ -44,15 +44,15 @@ public class VfModuleRollback {
 
     public VfModuleRollback(VnfRollback vrb, String vfModuleId, String vfModuleStackId, String messageId) {
         this.vnfId = vrb.getVnfId();
-        this.vfModuleId = vfModuleId;
-        this.vfModuleStackId = vfModuleStackId;
         this.vfModuleCreated = vrb.getVnfCreated();
         this.tenantId = vrb.getTenantId();
         this.cloudOwner = vrb.getCloudOwner();
         this.cloudSiteId = vrb.getCloudSiteId();
         this.msoRequest = vrb.getMsoRequest();
-        this.messageId = messageId;
         this.mode = vrb.getMode();
+        this.vfModuleId = vfModuleId;
+        this.vfModuleStackId = vfModuleStackId;
+        this.messageId = messageId;
     }
 
     public VfModuleRollback(String vnfId, String vfModuleId, String vfModuleStackId, boolean vfModuleCreated,
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/audit/AuditStackService.java
deleted file mode 100644 (file)
index 7cc7c02..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.audit;
-
-import javax.annotation.PostConstruct;
-import org.camunda.bpm.client.ExternalTaskClient;
-import org.onap.so.utils.ExternalTaskServiceUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Profile;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Component;
-
-@Component
-@Profile("!test")
-public class AuditStackService {
-
-    private static final String MSO_AUDIT_LOCK_TIME = "mso.audit.lock-time";
-
-    private static final Logger logger = LoggerFactory.getLogger(AuditStackService.class);
-
-    private static final String DEFAULT_AUDIT_LOCK_TIME = "60000";
-
-    private static final String DEFAULT_MAX_CLIENTS_FOR_TOPIC = "10";
-
-
-    @Autowired
-    public Environment env;
-
-    @Autowired
-    private AuditCreateStackService auditCreateStack;
-
-    @Autowired
-    private AuditDeleteStackService auditDeleteStack;
-
-    @Autowired
-    private AuditQueryStackService auditQueryStack;
-
-    @Autowired
-    private ExternalTaskServiceUtils externalTaskServiceUtils;
-
-    @PostConstruct
-    public void auditAddAAIInventory() throws Exception {
-        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
-            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
-            client.subscribe("InventoryAddAudit")
-                    .lockDuration(Long.parseLong(env.getProperty(MSO_AUDIT_LOCK_TIME, DEFAULT_AUDIT_LOCK_TIME)))
-                    .handler(auditCreateStack::executeExternalTask).open();
-        }
-    }
-
-    @PostConstruct
-    public void auditDeleteAAIInventory() throws Exception {
-        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
-            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
-            client.subscribe("InventoryDeleteAudit")
-                    .lockDuration(Long.parseLong(env.getProperty(MSO_AUDIT_LOCK_TIME, DEFAULT_AUDIT_LOCK_TIME)))
-                    .handler(auditDeleteStack::executeExternalTask).open();
-        }
-    }
-
-    @PostConstruct
-    public void auditQueryInventory() throws Exception {
-        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
-            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
-            client.subscribe("InventoryQueryAudit")
-                    .lockDuration(Long.parseLong(env.getProperty(MSO_AUDIT_LOCK_TIME, DEFAULT_AUDIT_LOCK_TIME)))
-                    .handler(auditQueryStack::executeExternalTask).open();
-        }
-    }
-
-}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/inventory/create/CreateInventoryService.java
deleted file mode 100644 (file)
index 4ab4d14..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.so.adapters.inventory.create;
-
-import javax.annotation.PostConstruct;
-import org.camunda.bpm.client.ExternalTaskClient;
-import org.onap.so.utils.ExternalTaskServiceUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Profile;
-import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Component;
-
-@Component
-@Profile("!test")
-public class CreateInventoryService {
-
-    @Autowired
-    public Environment env;
-
-    @Autowired
-    private CreateInventoryTask createInventory;
-
-    @Autowired
-    private ExternalTaskServiceUtils externalTaskServiceUtils;
-
-    @PostConstruct
-    public void auditAAIInventory() throws Exception {
-        ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
-        client.subscribe("InventoryCreate")
-                .lockDuration(Long.parseLong(env.getProperty("mso.audit.lock-time", "60000")))
-                .handler(createInventory::executeExternalTask).open();
-    }
-
-}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/TaskServices.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/TaskServices.java
new file mode 100644 (file)
index 0000000..d282046
--- /dev/null
@@ -0,0 +1,132 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.adapters.tasks;
+
+import javax.annotation.PostConstruct;
+import org.camunda.bpm.client.ExternalTaskClient;
+import org.onap.so.utils.ExternalTaskServiceUtils;
+import org.onap.so.adapters.tasks.audit.AuditCreateStackService;
+import org.onap.so.adapters.tasks.audit.AuditDeleteStackService;
+import org.onap.so.adapters.tasks.audit.AuditQueryStackService;
+import org.onap.so.adapters.tasks.inventory.CreateInventoryTask;
+import org.onap.so.adapters.tasks.orchestration.PollService;
+import org.onap.so.adapters.tasks.orchestration.RollbackService;
+import org.onap.so.adapters.tasks.orchestration.StackService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+@Component
+@Profile("!test")
+public class TaskServices {
+
+    private static final Logger logger = LoggerFactory.getLogger(TaskServices.class);
+
+    @Autowired
+    private ExternalTaskServiceUtils externalTaskServiceUtils;
+
+    @Autowired
+    private AuditCreateStackService auditCreateStack;
+
+    @Autowired
+    private AuditDeleteStackService auditDeleteStack;
+
+    @Autowired
+    private AuditQueryStackService auditQueryStack;
+
+    @Autowired
+    private CreateInventoryTask createInventory;
+
+    @Autowired
+    private StackService stackService;
+
+    @Autowired
+    private PollService pollService;
+
+    @Autowired
+    private RollbackService rollbackService;
+
+    @PostConstruct
+    public void auditAddAAIInventory() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("InventoryAddAudit").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(auditCreateStack::executeExternalTask).open();
+        }
+    }
+
+    @PostConstruct
+    public void auditDeleteAAIInventory() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("InventoryDeleteAudit").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(auditDeleteStack::executeExternalTask).open();
+        }
+    }
+
+    @PostConstruct
+    public void auditQueryInventory() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("InventoryQueryAudit").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(auditQueryStack::executeExternalTask).open();
+        }
+    }
+
+    @PostConstruct
+    public void auditAAIInventory() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("InventoryCreate").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(createInventory::executeExternalTask).open();
+        }
+    }
+
+    @PostConstruct
+    public void openstackInvoker() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("OpenstackAdapterInvoke").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(stackService::executeExternalTask).open();
+        }
+    }
+
+    @PostConstruct
+    public void openstackPoller() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("OpenstackAdapterPolling").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(pollService::executeExternalTask).open();
+        }
+    }
+
+    @PostConstruct
+    public void openstackRollback() throws Exception {
+        for (int i = 0; i < externalTaskServiceUtils.getMaxClients(); i++) {
+            ExternalTaskClient client = externalTaskServiceUtils.createExternalTaskClient();
+            client.subscribe("OpenstackAdapterRollback").lockDuration(externalTaskServiceUtils.getLockDuration())
+                    .handler(rollbackService::executeExternalTask).open();
+        }
+    }
+
+}
  */
 
 
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import java.util.Optional;
 import org.onap.so.objects.audit.AAIObjectAudit;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.onap.so.utils.ExternalTaskUtils;
 import org.onap.so.utils.RetrySequenceLevel;
-import org.onap.logging.filter.base.ONAPComponents;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +20,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -30,7 +30,7 @@ import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.onap.so.utils.RetrySequenceLevel;
 import org.slf4j.Logger;
@@ -47,13 +47,13 @@ public class AuditCreateStackService extends AbstractAuditService {
     public HeatStackAudit heatStackAudit;
 
     @Autowired
-    private AuditMDCSetup mdcSetup;
+    public AuditMDCSetup mdcSetup;
 
     public AuditCreateStackService() {
         super();
     }
 
-    protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
         mdcSetup.setupMDC(externalTask);
         AuditInventory auditInventory = externalTask.getVariable("auditInventory");
         Map<String, Object> variables = new HashMap<>();
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -28,7 +28,7 @@ import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,9 +44,6 @@ public class AuditDeleteStackService extends AbstractAuditService {
     @Autowired
     protected HeatStackAudit heatStackAudit;
 
-    @Autowired
-    private AuditMDCSetup mdcSetup;
-
     @Autowired
     protected AuditVServer auditVservers;
 
@@ -56,11 +53,15 @@ public class AuditDeleteStackService extends AbstractAuditService {
     @Autowired
     protected Environment env;
 
+    @Autowired
+    public AuditMDCSetup mdcSetup;
+
     public AuditDeleteStackService() {
         super();
     }
 
-    protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+
         mdcSetup.setupMDC(externalTask);
         AuditInventory auditInventory = externalTask.getVariable("auditInventory");
         Map<String, Object> variables = new HashMap<>();
@@ -1,4 +1,4 @@
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -7,7 +7,7 @@ import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.audit.beans.AuditInventory;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -23,16 +23,16 @@ public class AuditQueryStackService extends AbstractAuditService {
     protected HeatStackAudit heatStackAudit;
 
     @Autowired
-    private AuditMDCSetup mdcSetup;
+    protected AuditDataService auditDataService;
 
     @Autowired
-    protected AuditDataService auditDataService;
+    public AuditMDCSetup mdcSetup;
 
     public AuditQueryStackService() {
         super();
     }
 
-    protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
         mdcSetup.setupMDC(externalTask);
         AuditInventory auditInventory = externalTask.getVariable("auditInventory");
         boolean success = false;
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.inventory.create;
+package org.onap.so.adapters.tasks.inventory;
 
 import org.camunda.bpm.client.task.ExternalTask;
 import org.camunda.bpm.client.task.ExternalTaskService;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.onap.so.utils.ExternalTaskUtils;
 import org.onap.so.utils.RetrySequenceLevel;
@@ -48,13 +48,14 @@ public class CreateInventoryTask extends ExternalTaskUtils {
     CreateAAIInventory createInventory;
 
     @Autowired
-    private AuditMDCSetup mdcSetup;
+    public AuditMDCSetup mdcSetup;
 
     public CreateInventoryTask() {
         super(RetrySequenceLevel.SHORT);
     }
 
-    protected void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
         mdcSetup.setupMDC(externalTask);
         boolean success = true;
         boolean inventoryException = false;
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/PollService.java
new file mode 100644 (file)
index 0000000..6e181c4
--- /dev/null
@@ -0,0 +1,191 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.adapters.tasks.orchestration;
+
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import javax.xml.bind.JAXB;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.commons.lang3.mutable.MutableBoolean;
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.onap.so.adapters.vnfrest.CreateVfModuleRequest;
+import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
+import org.onap.so.adapters.vnfrest.DeleteVfModuleRequest;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
+import org.onap.so.logging.tasks.AuditMDCSetup;
+import org.onap.so.openstack.exceptions.MsoException;
+import org.onap.so.openstack.utils.MsoHeatUtils;
+import org.onap.so.utils.ExternalTaskUtils;
+import org.onap.so.utils.RetrySequenceLevel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.woorea.openstack.heat.model.Stack;
+
+@Component
+public class PollService extends ExternalTaskUtils {
+
+    private static final Logger logger = LoggerFactory.getLogger(PollService.class);
+
+    @Autowired
+    private MsoHeatUtils msoHeatUtils;
+
+    @Autowired
+    private AuditMDCSetup mdcSetup;
+
+    public PollService() {
+        super(RetrySequenceLevel.SHORT);
+    }
+
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+        mdcSetup.setupMDC(externalTask);
+        logger.trace("Executing External Task Poll Service");
+        Map<String, Object> variables = new HashMap<>();
+        MutableBoolean success = new MutableBoolean();
+        String errorMessage = null;
+        try {
+            String xmlRequest = externalTask.getVariable("vnfAdapterTaskRequest");
+            if (xmlRequest != null) {
+                Optional<String> requestType = findRequestType(xmlRequest);
+                if ("createVolumeGroupRequest".equals(requestType.get())) {
+                    determineCreateVolumeGroupStatus(xmlRequest, externalTask, success);
+                } else if ("createVfModuleRequest".equals(requestType.get())) {
+                    determineCreateVfModuleStatus(xmlRequest, externalTask, success);
+                } else if ("deleteVfModuleRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Poll Service for Delete Vf Module");
+                    DeleteVfModuleRequest req =
+                            JAXB.unmarshal(new StringReader(xmlRequest), DeleteVfModuleRequest.class);
+                    pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success);
+                } else if ("deleteVolumeGroupRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Poll Service for Delete Volume Group");
+                    DeleteVolumeGroupRequest req =
+                            JAXB.unmarshal(new StringReader(xmlRequest), DeleteVolumeGroupRequest.class);
+                    pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success);
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error during External Task Poll Service", e);
+            errorMessage = e.getMessage();
+        }
+
+        variables.put("OpenstackPollSuccess", success.booleanValue());
+        variables.put("openstackAdapterErrorMessage", errorMessage);
+        if (success.isTrue()) {
+            externalTaskService.complete(externalTask, variables);
+            logger.debug("The External Task Id: {}  Successful", externalTask.getId());
+        } else {
+            if (externalTask.getRetries() == null) {
+                logger.debug("The External Task Id: {}  Failed, Setting Retries to Default Start Value: {}",
+                        externalTask.getId(), getRetrySequence().length);
+                externalTaskService.handleFailure(externalTask, "errorMessage", "errorDetails",
+                        getRetrySequence().length, 10000);
+            } else if (externalTask.getRetries() != null && externalTask.getRetries() - 1 == 0) {
+                logger.debug("The External Task Id: {}  Failed, All Retries Exhausted", externalTask.getId());
+                externalTaskService.complete(externalTask, variables);
+            } else {
+                logger.debug("The External Task Id: {}  Failed, Decrementing Retries: {} , Retry Delay: {}",
+                        externalTask.getId(), externalTask.getRetries() - 1,
+                        calculateRetryDelay(externalTask.getRetries()));
+                externalTaskService.handleFailure(externalTask, "errorMessage", "errorDetails",
+                        externalTask.getRetries() - 1, calculateRetryDelay(externalTask.getRetries()));
+            }
+        }
+    }
+
+    private void determineCreateVolumeGroupStatus(String xmlRequest, ExternalTask externalTask, MutableBoolean success)
+            throws MsoException {
+        CreateVolumeGroupRequest req = JAXB.unmarshal(new StringReader(xmlRequest), CreateVolumeGroupRequest.class);
+        boolean pollRollbackStatus = externalTask.getVariable("PollRollbackStatus");
+        if (pollRollbackStatus) {
+            logger.debug("Executing External Task Poll Service for Rollback Create Volume Group");
+            pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success);
+        } else {
+            pollCreateResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success);
+        }
+    }
+
+    private void determineCreateVfModuleStatus(String xmlRequest, ExternalTask externalTask, MutableBoolean success)
+            throws MsoException {
+        CreateVfModuleRequest req = JAXB.unmarshal(new StringReader(xmlRequest), CreateVfModuleRequest.class);
+        boolean pollRollbackStatus = externalTask.getVariable("PollRollbackStatus");
+        if (pollRollbackStatus) {
+            logger.debug("Executing External Task Poll Service for Rollback Create Vf Module");
+            pollDeleteResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success);
+        } else {
+            logger.debug("Executing External Task Poll Service for Create Vf Module");
+            pollCreateResource(req.getCloudSiteId(), req.getTenantId(), externalTask, success);
+        }
+    }
+
+    private void pollCreateResource(String cloudSiteId, String tenantId, ExternalTask externalTask,
+            MutableBoolean success) throws MsoException {
+        Stack currentStack = createCurrentStack(externalTask.getVariable("stackId"));
+        Stack stack =
+                msoHeatUtils.pollStackForStatus(1, currentStack, "CREATE_IN_PROGRESS", cloudSiteId, tenantId, false);
+        msoHeatUtils.postProcessStackCreate(stack, false, 0, false, cloudSiteId, tenantId, null);
+        success.setTrue();
+    }
+
+    private void pollDeleteResource(String cloudSiteId, String tenantId, ExternalTask externalTask,
+            MutableBoolean success) throws MsoException {
+        Stack currentStack = createCurrentStack(externalTask.getVariable("stackId"));
+        Stack stack =
+                msoHeatUtils.pollStackForStatus(1, currentStack, "DELETE_IN_PROGRESS", cloudSiteId, tenantId, true);
+        if (stack != null) { // if stack is null it was not found and no need to do post process
+            msoHeatUtils.postProcessStackDelete(stack);
+        }
+        success.setTrue();
+    }
+
+    protected Optional<String> findRequestType(String xmlString) {
+        try {
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            org.w3c.dom.Document doc;
+            doc = builder.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
+            return Optional.of(doc.getDocumentElement().getNodeName());
+        } catch (Exception e) {
+            logger.error("Error Finding Request Type", e);
+            return Optional.empty();
+        }
+    }
+
+    private Stack createCurrentStack(String canonicalStackId) {
+        Stack currentStack = new Stack();
+        String stackName = canonicalStackId;
+        if (canonicalStackId.contains("/")) {
+            String[] stacks = canonicalStackId.split("/");
+            stackName = stacks[0];
+            currentStack.setId(stacks[1]);
+        }
+        currentStack.setStackName(stackName);
+        return currentStack;
+    }
+
+}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/RollbackService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/RollbackService.java
new file mode 100644 (file)
index 0000000..c302293
--- /dev/null
@@ -0,0 +1,92 @@
+package org.onap.so.adapters.tasks.orchestration;
+
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import javax.xml.bind.JAXB;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.ws.Holder;
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.onap.so.adapters.vnf.MsoVnfAdapterImpl;
+import org.onap.so.adapters.vnfrest.CreateVfModuleRequest;
+import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
+import org.onap.so.logging.tasks.AuditMDCSetup;
+import org.onap.so.utils.ExternalTaskUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class RollbackService extends ExternalTaskUtils {
+
+    private static final Logger logger = LoggerFactory.getLogger(RollbackService.class);
+
+    @Autowired
+    private MsoVnfAdapterImpl vnfAdapterImpl;
+
+    @Autowired
+    private AuditMDCSetup mdcSetup;
+
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+        mdcSetup.setupMDC(externalTask);
+        logger.trace("Executing External Task Rollback Service");
+        Map<String, Object> variables = new HashMap<>();
+        boolean success = false;
+        boolean pollRollbackStatus = false;
+        try {
+            String xmlRequest = externalTask.getVariable("vnfAdapterTaskRequest");
+            if (xmlRequest != null) {
+                Optional<String> requestType = findRequestType(xmlRequest);
+                if ("createVolumeGroupRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Rollback Service for Create Volume Group");
+                    CreateVolumeGroupRequest req =
+                            JAXB.unmarshal(new StringReader(xmlRequest), CreateVolumeGroupRequest.class);
+                    vnfAdapterImpl.deleteVnf(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
+                            req.getVolumeGroupName(), req.getMsoRequest(), false);
+                    pollRollbackStatus = true;
+                    success = true;
+                } else if ("createVfModuleRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Rollback Service for Create Vf Module");
+                    CreateVfModuleRequest req =
+                            JAXB.unmarshal(new StringReader(xmlRequest), CreateVfModuleRequest.class);
+                    vnfAdapterImpl.deleteVfModule(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
+                            req.getVfModuleName(), req.getVnfId(), req.getVfModuleId(), req.getModelCustomizationUuid(),
+                            req.getMsoRequest(), new Holder<>());
+                    pollRollbackStatus = true;
+                    success = true;
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error during External Task Rollback Service", e);
+        }
+        variables.put("OpenstackRollbackSuccess", success);
+        variables.put("rollbackPerformed", true);
+        variables.put("PollRollbackStatus", pollRollbackStatus);
+        if (success) {
+            externalTaskService.complete(externalTask, variables);
+            logger.debug("The External Task Id: {}  Successful", externalTask.getId());
+        } else {
+            logger.debug("The External Task Id: {}  Failed. Not Retrying", externalTask.getId());
+            externalTaskService.complete(externalTask, variables);
+        }
+    }
+
+    protected Optional<String> findRequestType(String xmlString) {
+        try {
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            org.w3c.dom.Document doc;
+            doc = builder.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
+            return Optional.of(doc.getDocumentElement().getNodeName());
+        } catch (Exception e) {
+            logger.error("Error Finding Request Type", e);
+            return Optional.empty();
+        }
+    }
+
+}
diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/StackService.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/tasks/orchestration/StackService.java
new file mode 100644 (file)
index 0000000..34952a0
--- /dev/null
@@ -0,0 +1,207 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.adapters.tasks.orchestration;
+
+import java.io.ByteArrayInputStream;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import javax.xml.bind.JAXB;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.ws.Holder;
+import org.apache.commons.lang3.mutable.MutableBoolean;
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.onap.so.adapters.vnf.MsoVnfAdapterImpl;
+import org.onap.so.adapters.vnf.exceptions.VnfException;
+import org.onap.so.adapters.vnfrest.CreateVfModuleRequest;
+import org.onap.so.adapters.vnfrest.CreateVfModuleResponse;
+import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
+import org.onap.so.adapters.vnfrest.CreateVolumeGroupResponse;
+import org.onap.so.adapters.vnfrest.DeleteVfModuleRequest;
+import org.onap.so.adapters.vnfrest.DeleteVfModuleResponse;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
+import org.onap.so.adapters.vnfrest.DeleteVolumeGroupResponse;
+import org.onap.so.adapters.vnfrest.VfModuleRollback;
+import org.onap.so.adapters.vnfrest.VolumeGroupRollback;
+import org.onap.so.logging.tasks.AuditMDCSetup;
+import org.onap.so.openstack.beans.VnfRollback;
+import org.onap.so.utils.ExternalTaskUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class StackService extends ExternalTaskUtils {
+
+    private static final Logger logger = LoggerFactory.getLogger(StackService.class);
+
+    @Autowired
+    private MsoVnfAdapterImpl vnfAdapterImpl;
+
+    @Autowired
+    private AuditMDCSetup mdcSetup;
+
+    public void executeExternalTask(ExternalTask externalTask, ExternalTaskService externalTaskService) {
+        Map<String, Object> variables = new HashMap<>();
+        mdcSetup.setupMDC(externalTask);
+        String xmlRequest = externalTask.getVariable("vnfAdapterTaskRequest");
+        logger.debug("Executing External Task Stack Service. {}", xmlRequest);
+        MutableBoolean success = new MutableBoolean();
+        MutableBoolean backout = new MutableBoolean();
+        String response = "";
+        Holder<String> canonicalStackId = new Holder<>();
+        String errorMessage = "";
+        try {
+            if (xmlRequest != null) {
+                Holder<Map<String, String>> outputs = new Holder<>();
+                Holder<VnfRollback> vnfRollback = new Holder<>();
+                Optional<String> requestType = findRequestType(xmlRequest);
+                if ("createVolumeGroupRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Stack Service For Create Volume Group");
+                    response = createVolumeGroup(xmlRequest, outputs, vnfRollback, canonicalStackId, backout, success);
+                } else if ("createVfModuleRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Stack Service For Create Vf Module");
+                    response = createVfModule(xmlRequest, outputs, vnfRollback, canonicalStackId, backout, success);
+                } else if ("deleteVfModuleRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Stack Service For Delete Vf Module");
+                    response = deleteVfModule(xmlRequest, outputs, vnfRollback, canonicalStackId, backout, success);
+                } else if ("deleteVolumeGroupRequest".equals(requestType.get())) {
+                    logger.debug("Executing External Task Stack Service For Delete Volume Group");
+                    response = deleteVolumeGroup(xmlRequest, outputs, vnfRollback, canonicalStackId, backout, success);
+                }
+            }
+        } catch (Exception e) {
+            logger.error("Error during External Task Stack Service", e);
+            errorMessage = e.getMessage();
+        }
+        variables.put("backout", backout.booleanValue());
+        variables.put("WorkflowResponse", response);
+        variables.put("OpenstackInvokeSuccess", success.booleanValue());
+        variables.put("stackId", canonicalStackId.value);
+        variables.put("openstackAdapterErrorMessage", errorMessage);
+        variables.put("PollRollbackStatus", false);
+        variables.put("rollbackPerformed", false);
+        variables.put("OpenstackRollbackSuccess", false);
+        variables.put("OpenstackPollSuccess", false);
+
+        if (success.isTrue()) {
+            externalTaskService.complete(externalTask, variables);
+            logger.debug("The External Task Id: {}  Successful", externalTask.getId());
+        } else {
+            logger.debug("The External Task Id: {}  Failed. Not Retrying", externalTask.getId());
+            externalTaskService.complete(externalTask, variables);
+        }
+    }
+
+    private String createVolumeGroup(String xmlRequest, Holder<Map<String, String>> outputs,
+            Holder<VnfRollback> vnfRollback, Holder<String> canonicalStackId, MutableBoolean backout,
+            MutableBoolean success) throws VnfException {
+        Holder<String> stackId = new Holder<>();
+        CreateVolumeGroupRequest req = JAXB.unmarshal(new StringReader(xmlRequest), CreateVolumeGroupRequest.class);
+        String completeVnfVfModuleType = req.getVnfType() + "::" + req.getVfModuleType();
+        vnfAdapterImpl.createVfModule(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
+                completeVnfVfModuleType, req.getVnfVersion(), "", req.getVolumeGroupName(), "", "VOLUME", null, null,
+                req.getModelCustomizationUuid(), req.getVolumeGroupParams(), false, true, req.getEnableBridge(),
+                req.getMsoRequest(), stackId, outputs, vnfRollback);
+        success.setTrue();
+        backout.setValue(!req.getSuppressBackout());
+        VolumeGroupRollback rb = new VolumeGroupRollback(req.getVolumeGroupId(), stackId.value,
+                vnfRollback.value.getVnfCreated(), req.getTenantId(), req.getCloudOwner(), req.getCloudSiteId(),
+                req.getMsoRequest(), req.getMessageId());
+        canonicalStackId.value = stackId.value;
+        CreateVolumeGroupResponse createResponse = new CreateVolumeGroupResponse(req.getVolumeGroupId(), stackId.value,
+                vnfRollback.value.getVnfCreated(), outputs.value, rb, req.getMessageId());
+        return createResponse.toXmlString();
+    }
+
+    private String createVfModule(String xmlRequest, Holder<Map<String, String>> outputs,
+            Holder<VnfRollback> vnfRollback, Holder<String> canonicalStackId, MutableBoolean backout,
+            MutableBoolean success) throws VnfException {
+        Holder<String> stackId = new Holder<>();
+        CreateVfModuleRequest req = JAXB.unmarshal(new StringReader(xmlRequest), CreateVfModuleRequest.class);
+        String completeVnfVfModuleType = req.getVnfType() + "::" + req.getVfModuleType();
+        vnfAdapterImpl.createVfModule(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
+                completeVnfVfModuleType, req.getVnfVersion(), req.getVnfId(), req.getVfModuleName(),
+                req.getVfModuleId(), req.getRequestType(), req.getVolumeGroupStackId(), req.getBaseVfModuleStackId(),
+                req.getModelCustomizationUuid(), req.getVfModuleParams(), false, false, req.getEnableBridge(),
+                req.getMsoRequest(), stackId, outputs, vnfRollback);
+        success.setTrue();
+        backout.setValue(req.getBackout());
+        canonicalStackId.value = stackId.value;
+        VfModuleRollback modRollback =
+                new VfModuleRollback(vnfRollback.value, req.getVfModuleId(), stackId.value, req.getMessageId());
+        CreateVfModuleResponse createResponse = new CreateVfModuleResponse(req.getVnfId(), req.getVfModuleId(),
+                stackId.value, Boolean.TRUE, outputs.value, modRollback, req.getMessageId());
+        return createResponse.toXmlString();
+    }
+
+    private String deleteVfModule(String xmlRequest, Holder<Map<String, String>> outputs,
+            Holder<VnfRollback> vnfRollback, Holder<String> canonicalStackId, MutableBoolean backout,
+            MutableBoolean success) throws VnfException {
+        backout.setFalse();
+        DeleteVfModuleRequest req = JAXB.unmarshal(new StringReader(xmlRequest), DeleteVfModuleRequest.class);
+        vnfAdapterImpl.deleteVfModule(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
+                req.getVfModuleStackId(), req.getVnfId(), req.getVfModuleId(), req.getModelCustomizationUuid(),
+                req.getMsoRequest(), outputs);
+        success.setTrue();
+        if (outputs != null && outputs.value != null) {
+            canonicalStackId.value = outputs.value.get("canonicalStackId");
+        } else {
+            canonicalStackId.value = req.getVfModuleStackId();
+        }
+        DeleteVfModuleResponse deleteResponse = new DeleteVfModuleResponse(req.getVnfId(), req.getVfModuleId(),
+                Boolean.TRUE, req.getMessageId(), outputs.value);
+        return deleteResponse.toXmlString();
+    }
+
+    private String deleteVolumeGroup(String xmlRequest, Holder<Map<String, String>> outputs,
+            Holder<VnfRollback> vnfRollback, Holder<String> canonicalStackId, MutableBoolean backout,
+            MutableBoolean success) throws VnfException {
+        backout.setFalse();
+        DeleteVolumeGroupRequest req = JAXB.unmarshal(new StringReader(xmlRequest), DeleteVolumeGroupRequest.class);
+
+        vnfAdapterImpl.deleteVnf(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
+                req.getVolumeGroupStackId(), req.getMsoRequest(), false);
+        success.setTrue();
+        canonicalStackId.value = req.getVolumeGroupStackId();
+        DeleteVolumeGroupResponse deleteResponse = new DeleteVolumeGroupResponse(true, req.getMessageId());
+        return deleteResponse.toXmlString();
+    }
+
+    protected Optional<String> findRequestType(String xmlString) {
+        try {
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            org.w3c.dom.Document doc;
+            doc = builder.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8")));
+            return Optional.of(doc.getDocumentElement().getNodeName());
+        } catch (Exception e) {
+            logger.error("Error Finding Request Type", e);
+            return Optional.empty();
+        }
+    }
+}
index 60c5a0c..3a2d3bc 100644 (file)
@@ -322,6 +322,42 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         return;
     }
 
+    /**
+     * This is the "Delete VNF" web service implementation. It will delete a VNF by name or ID in the specified cloud
+     * and tenant.
+     *
+     * The method has no outputs.
+     *
+     * @param cloudSiteId CLLI code of the cloud site in which to delete
+     * @param cloudOwner cloud owner of the cloud region in which to delete
+     * @param tenantId Openstack tenant identifier
+     * @param vnfName VNF Name or Openstack ID
+     * @param msoRequest Request tracking information for logs
+     */
+    public void deleteVnf(String cloudSiteId, String cloudOwner, String tenantId, String vnfName, MsoRequest msoRequest,
+            boolean pollStackStatus) throws VnfException {
+
+        logger.debug("Deleting VNF {} in {}", vnfName, cloudSiteId + "/" + tenantId);
+
+        try {
+            msoHeatUtils.deleteStack(tenantId, cloudOwner, cloudSiteId, vnfName, pollStackStatus, 118);
+        } catch (MsoException me) {
+            me.addContext(DELETE_VNF);
+            // Failed to query the Stack due to an openstack exception.
+            // Convert to a generic VnfException
+            String error =
+                    "Delete VNF: " + vnfName + " in " + cloudOwner + "/" + cloudSiteId + "/" + tenantId + ": " + me;
+            logger.error(LoggingAnchor.NINE, MessageEnum.RA_DELETE_VNF_ERR.toString(), vnfName, cloudOwner, cloudSiteId,
+                    tenantId, OPENSTACK, DELETE_VNF, ErrorCode.DataError.getValue(), "Exception - " + DELETE_VNF, me);
+            logger.debug(error);
+            throw new VnfException(me);
+        }
+
+        // On success, nothing is returned.
+        return;
+    }
+
+
     /**
      * This web service endpoint will rollback a previous Create VNF operation. A rollback object is returned to the
      * client in a successful creation response. The client can pass that object as-is back to the rollbackVnf operation
@@ -536,6 +572,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             Map<String, Object> inputs, Boolean failIfExists, Boolean backout, Boolean enableBridge,
             MsoRequest msoRequest, Holder<String> vnfId, Holder<Map<String, String>> outputs,
             Holder<VnfRollback> rollback) throws VnfException {
+        boolean pollForCompletion = false;
         String vfModuleName = vnfName;
         String vfModuleType = vnfType;
         String vfVersion = vnfVersion;
@@ -1050,8 +1087,9 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                 }
                 if (msoHeatUtils != null) {
                     heatStack = msoHeatUtils.createStack(cloudSiteId, cloudOwner, tenantId, vfModuleName, null,
-                            template, goldenInputs, true, heatTemplate.getTimeoutMinutes(), newEnvironmentString,
-                            nestedTemplatesChecked, heatFilesObjects, backout.booleanValue(), failIfExists);
+                            template, goldenInputs, pollForCompletion, heatTemplate.getTimeoutMinutes(),
+                            newEnvironmentString, nestedTemplatesChecked, heatFilesObjects, backout.booleanValue(),
+                            failIfExists);
                     if (msoRequest.getRequestId() != null) {
                         msoHeatUtils.updateResourceStatus(msoRequest.getRequestId(),
                                 heatStack.isOperationPerformed() ? VF_EXIST_STATUS_MESSAGE : VF_CREATED_STATUS_MESSAGE);
@@ -1135,10 +1173,15 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         }
 
         try {
-            StackInfo stackInfo =
-                    msoHeatUtils.deleteStack(tenantId, cloudOwner, cloudSiteId, vnfName, true, timeoutMinutes);
+            StackInfo currentStack =
+                    msoHeatUtils.deleteStack(tenantId, cloudOwner, cloudSiteId, vnfName, false, timeoutMinutes);
+            if (currentStack != null && outputs != null && outputs.value != null) {
+                logger.debug("Adding canonical stack id to outputs " + currentStack.getCanonicalName());
+                outputs.value.put("canonicalStackId", currentStack.getCanonicalName());
+            }
             msoHeatUtils.updateResourceStatus(msoRequest.getRequestId(),
-                    stackInfo.isOperationPerformed() ? VF_DELETED_STATUS_MESSAGE : VF_NOT_EXIST_STATUS_MESSAGE);
+                    currentStack.isOperationPerformed() ? VF_DELETED_STATUS_MESSAGE : VF_NOT_EXIST_STATUS_MESSAGE);
+
         } catch (MsoException me) {
             me.addContext(DELETE_VNF);
             // Failed to query the Stack due to an openstack exception.
index 0836f69..5b78d2f 100644 (file)
@@ -78,6 +78,7 @@ import io.swagger.annotations.ApiResponses;
  * can be produced/consumed. Set Accept: and Content-Type: headers appropriately. XML is the default. For testing, call
  * with cloudSiteId = ___TESTING___ To test exceptions, also set tenantId = ___TESTING___
  */
+@Deprecated
 @Path("/v1/vnfs")
 @Api(value = "/v1/vnfs", description = "root of vnf adapters restful web service")
 @Transactional
index 18ed987..63b4c5d 100644 (file)
@@ -39,7 +39,6 @@ import javax.ws.rs.core.GenericEntity;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.xml.ws.Holder;
-import org.onap.so.logger.LoggingAnchor;
 import org.apache.http.HttpStatus;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.adapters.vnf.exceptions.VnfException;
@@ -56,6 +55,7 @@ import org.onap.so.adapters.vnfrest.VfModuleExceptionResponse;
 import org.onap.so.adapters.vnfrest.VfModuleRollback;
 import org.onap.so.entity.MsoRequest;
 import org.onap.logging.filter.base.ErrorCode;
+import org.onap.so.logger.LoggingAnchor;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.openstack.beans.VnfRollback;
 import org.onap.so.openstack.beans.VnfStatus;
@@ -78,6 +78,7 @@ import io.swagger.annotations.ApiResponses;
  *
  * V2 incorporates run-time selection of sub-orchestrator implementation (Heat or Cloudify) based on the target cloud.
  */
+@Deprecated
 @Path("/v2/vnfs")
 @Api(value = "/v2/vnfs", description = "root of vnf adapters restful web service v2")
 @Component
@@ -189,10 +190,7 @@ public class VnfAdapterRestV2 {
                 }
                 String cloudsite = req.getCloudSiteId();
                 Holder<Map<String, String>> outputs = new Holder<>();
-                if (cloudsite != null && !cloudsite.equals(TESTING_KEYWORD)) {
-                    // vnfAdapter.deleteVnf (req.getCloudSiteId(), req.getTenantId(), req.getVfModuleStackId(),
-                    // req.getMsoRequest());
-                    // Support different Adapter Implementations
+                if (cloudsite != null) {
                     MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsite);
                     adapter.deleteVfModule(req.getCloudSiteId(), req.getCloudOwner(), req.getTenantId(),
                             req.getVfModuleStackId(), req.getVnfId(), req.getVfModuleId(),
index cfddbba..a424fa9 100644 (file)
@@ -174,33 +174,26 @@ public class VolumeAdapterRestV2 {
                 logger.debug("in createVfModuleVolumes - completeVnfVfModuleType={}", completeVnfVfModuleType);
 
                 String cloudsiteId = req.getCloudSiteId();
-                if (cloudsiteId != null && cloudsiteId.equals(TESTING_KEYWORD)) {
-                    String tenant = req.getTenantId();
-                    if (tenant != null && tenant.equals(TESTING_KEYWORD)) {
-                        throw new VnfException("testing.");
-                    }
-                    stackId.value = "479D3D8B-6360-47BC-AB75-21CC91981484";
-                    outputs.value = testMap();
-                } else {
-                    // Support different Adapter Implementations
-                    MsoVnfAdapter vnfAdapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsiteId);
-                    vnfAdapter.createVfModule(req.getCloudSiteId(), // cloudSiteId,
-                            req.getCloudOwner(), // cloudOwner,
-                            req.getTenantId(), // tenantId,
-                            completeVnfVfModuleType, // vnfType,
-                            req.getVnfVersion(), // vnfVersion,
-                            "", // genericVnfId
-                            req.getVolumeGroupName(), // vnfName,
-                            "", // vfModuleId
-                            "VOLUME", // requestType,
-                            null, // volumeGroupHeatStackId,
-                            null, // baseVfHeatStackId,
-                            req.getModelCustomizationUuid(), req.getVolumeGroupParams(), // inputs,
-                            req.getFailIfExists(), // failIfExists,
-                            req.getSuppressBackout(), // backout,
-                            req.getEnableBridge(), req.getMsoRequest(), // msoRequest,
-                            stackId, outputs, vnfRollback);
-                }
+
+                // Support different Adapter Implementations
+                MsoVnfAdapter vnfAdapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudsiteId);
+                vnfAdapter.createVfModule(req.getCloudSiteId(), // cloudSiteId,
+                        req.getCloudOwner(), // cloudOwner,
+                        req.getTenantId(), // tenantId,
+                        completeVnfVfModuleType, // vnfType,
+                        req.getVnfVersion(), // vnfVersion,
+                        "", // genericVnfId
+                        req.getVolumeGroupName(), // vnfName,
+                        "", // vfModuleId
+                        "VOLUME", // requestType,
+                        null, // volumeGroupHeatStackId,
+                        null, // baseVfHeatStackId,
+                        req.getModelCustomizationUuid(), req.getVolumeGroupParams(), // inputs,
+                        req.getFailIfExists(), // failIfExists,
+                        req.getSuppressBackout(), // backout,
+                        req.getEnableBridge(), req.getMsoRequest(), // msoRequest,
+                        stackId, outputs, vnfRollback);
+
 
                 VolumeGroupRollback rb = new VolumeGroupRollback(req.getVolumeGroupId(), stackId.value,
                         vnfRollback.value.getVnfCreated(), req.getTenantId(), req.getCloudOwner(), req.getCloudSiteId(),
@@ -1,4 +1,4 @@
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
@@ -13,6 +13,7 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.aai.domain.yang.Vserver;
+import org.onap.so.adapters.tasks.audit.AuditDataService;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
 import org.onap.so.db.request.beans.RequestProcessingData;
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -36,8 +36,12 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.onap.so.adapters.tasks.audit.AuditCreateStackService;
+import org.onap.so.adapters.tasks.audit.AuditDataService;
+import org.onap.so.adapters.tasks.audit.AuditQueryStackService;
+import org.onap.so.adapters.tasks.audit.HeatStackAudit;
 import org.onap.so.audit.beans.AuditInventory;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.springframework.core.env.Environment;
 import com.fasterxml.jackson.core.JsonParseException;
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.doReturn;
@@ -41,6 +41,7 @@ import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.VfModule;
 import org.onap.aai.domain.yang.VfModules;
 import org.onap.aai.domain.yang.Vserver;
+import org.onap.so.adapters.tasks.audit.AuditVServer;
 import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.aai.AAIResourcesClient;
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.audit;
+package org.onap.so.adapters.tasks.audit;
 
 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
@@ -43,6 +43,8 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.aai.domain.yang.LInterface;
 import org.onap.aai.domain.yang.LInterfaces;
 import org.onap.aai.domain.yang.Vserver;
+import org.onap.so.adapters.tasks.audit.AuditVServer;
+import org.onap.so.adapters.tasks.audit.HeatStackAudit;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import org.onap.so.openstack.utils.MsoHeatUtils;
 import org.onap.so.openstack.utils.MsoNeutronUtils;
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.inventory.create;
+package org.onap.so.adapters.tasks.inventory;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
@@ -38,6 +38,7 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.onap.so.adapters.tasks.inventory.CreateAAIInventory;
 import org.onap.so.audit.beans.AuditInventory;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.aai.AAIResourcesClient;
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -18,7 +18,7 @@
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.adapters.inventory.create;
+package org.onap.so.adapters.tasks.inventory;
 
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.times;
@@ -30,8 +30,11 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.onap.so.adapters.tasks.inventory.CreateAAIInventory;
+import org.onap.so.adapters.tasks.inventory.CreateInventoryTask;
+import org.onap.so.adapters.tasks.inventory.InventoryException;
 import org.onap.so.client.graphinventory.GraphInventoryCommonObjectMapperProvider;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.objects.audit.AAIObjectAudit;
 import org.onap.so.objects.audit.AAIObjectAuditList;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -47,12 +50,12 @@ public class CreateInventoryTaskTest {
     @Mock
     ExternalTaskService externalTaskService;
 
-    @Mock
-    private AuditMDCSetup mdcSetup;
-
     @InjectMocks
     CreateInventoryTask inventoryTask;
 
+    @Mock
+    private AuditMDCSetup mdcSetup;
+
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/PollServiceTest.java
new file mode 100644 (file)
index 0000000..b5b0f5a
--- /dev/null
@@ -0,0 +1,82 @@
+package org.onap.so.adapters.tasks.orchestration;
+
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.eq;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.so.adapters.tasks.orchestration.PollService;
+import org.onap.so.logging.tasks.AuditMDCSetup;
+import org.onap.so.openstack.exceptions.MsoException;
+import org.onap.so.openstack.utils.MsoHeatUtils;
+import com.woorea.openstack.heat.model.Stack;
+
+@RunWith(MockitoJUnitRunner.class)
+public class PollServiceTest {
+
+    private String RESOURCE_PATH = "src/test/resources/__files/";
+
+    @Mock
+    private ExternalTask mockExternalTask;
+
+    @Mock
+    private ExternalTaskService mockExternalTaskService;
+
+    @Mock
+    private MsoHeatUtils msoHeatUtils;
+
+    @Mock
+    private AuditMDCSetup mdcSetup;
+
+    @InjectMocks
+    private PollService pollService;
+
+    @Test
+    public void testExecuteExternalTask() throws MsoException, IOException {
+        String xmlString =
+                new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/vnfAdapterTaskRequestCreate.xml")));
+
+        Mockito.when(mockExternalTask.getVariable("vnfAdapterTaskRequest")).thenReturn(xmlString);
+        Mockito.when(mockExternalTask.getVariable("PollRollbackStatus")).thenReturn(false);
+        Mockito.when(mockExternalTask.getVariable("stackId")).thenReturn("stackId/stack123");
+        Mockito.when(msoHeatUtils.pollStackForStatus(eq(1), any(Stack.class), eq("CREATE_IN_PROGRESS"), eq("regionOne"),
+                eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(false))).thenReturn(new Stack());
+        // Mockito.doNothing().when(msoHeatUtils).postProcessStackCreate(Mockito.any(), Mockito.any(), Mockito.any(),
+        // Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
+
+        pollService.executeExternalTask(mockExternalTask, mockExternalTaskService);
+
+        Mockito.verify(msoHeatUtils).pollStackForStatus(eq(1), any(Stack.class), eq("CREATE_IN_PROGRESS"),
+                eq("regionOne"), eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(false));
+
+    }
+
+    @Test
+    public void testExecuteExternalTask_rollback() throws MsoException, IOException {
+        String xmlString =
+                new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/vnfAdapterTaskRequestCreate.xml")));
+
+        Mockito.when(mockExternalTask.getVariable("vnfAdapterTaskRequest")).thenReturn(xmlString);
+        Mockito.when(mockExternalTask.getVariable("PollRollbackStatus")).thenReturn(true);
+        Mockito.when(mockExternalTask.getVariable("stackId")).thenReturn("stackId/stack123");
+        Mockito.when(msoHeatUtils.pollStackForStatus(eq(1), any(), eq("DELETE_IN_PROGRESS"), eq("regionOne"),
+                eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(true))).thenReturn(new Stack());
+        Mockito.doNothing().when(msoHeatUtils).postProcessStackDelete(Mockito.any());
+
+
+        pollService.executeExternalTask(mockExternalTask, mockExternalTaskService);
+
+        Mockito.verify(msoHeatUtils).pollStackForStatus(eq(1), any(), eq("DELETE_IN_PROGRESS"), eq("regionOne"),
+                eq("0422ffb57ba042c0800a29dc85ca70f8"), eq(true));
+
+    }
+
+}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/RollbackServiceTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/RollbackServiceTest.java
new file mode 100644 (file)
index 0000000..f761390
--- /dev/null
@@ -0,0 +1,82 @@
+package org.onap.so.adapters.tasks.orchestration;
+
+import static org.junit.Assert.assertEquals;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import javax.xml.ws.Holder;
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.so.adapters.tasks.orchestration.RollbackService;
+import org.onap.so.adapters.vnf.MsoVnfAdapterImpl;
+import org.onap.so.adapters.vnf.exceptions.VnfException;
+import org.onap.so.entity.MsoRequest;
+import org.onap.so.logging.tasks.AuditMDCSetup;
+import org.onap.so.openstack.beans.VnfRollback;
+import org.onap.so.openstack.exceptions.MsoException;
+import org.onap.so.openstack.utils.MsoHeatUtils;
+import com.woorea.openstack.heat.model.Stack;
+
+@RunWith(MockitoJUnitRunner.class)
+public class RollbackServiceTest {
+
+    private String RESOURCE_PATH = "src/test/resources/__files/";
+
+    @Mock
+    private ExternalTask mockExternalTask;
+
+    @Mock
+    private ExternalTaskService mockExternalTaskService;
+
+    @Mock
+    private MsoVnfAdapterImpl vnfAdapterImpl;
+
+    @Mock
+    private MsoHeatUtils msoHeatUtils;
+
+    @Mock
+    private AuditMDCSetup mdcSetup;
+
+    @InjectMocks
+    private RollbackService rollbackService;
+
+
+    @Test
+    public void findRequestTypeTest() throws IOException {
+        String payload = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/vnfAdapterTaskRequestCreate.xml")));
+
+        Optional<String> actual = rollbackService.findRequestType(payload);
+
+        assertEquals("createVfModuleRequest", actual.get());
+    }
+
+    @Test
+    public void testExecuteExternalTask() throws VnfException, MsoException, IOException {
+        String payload = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/vnfAdapterTaskRequestCreate.xml")));
+
+        Stack stack = new Stack();
+        stack.setId("heatId");
+        Mockito.when(mockExternalTask.getVariable("vnfAdapterTaskRequest")).thenReturn(payload);
+        Mockito.doNothing().when(vnfAdapterImpl).deleteVfModule(Mockito.any(), Mockito.any(), Mockito.any(),
+                Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
+        Mockito.doNothing().when(mockExternalTaskService).complete(Mockito.any(), Mockito.any());
+
+        rollbackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
+
+        Mockito.verify(vnfAdapterImpl, Mockito.times(1)).deleteVfModule(Mockito.eq("regionOne"),
+                Mockito.eq("CloudOwner"), Mockito.eq("0422ffb57ba042c0800a29dc85ca70f8"), Mockito.eq("dummy_id"),
+                Mockito.any(String.class), Mockito.any(String.class), Mockito.any(), Mockito.any(), Mockito.any());
+        Mockito.verify(mockExternalTaskService).complete(Mockito.eq(mockExternalTask), Mockito.any());
+
+    }
+
+}
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/StackServiceTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/tasks/orchestration/StackServiceTest.java
new file mode 100644 (file)
index 0000000..2f583b3
--- /dev/null
@@ -0,0 +1,113 @@
+package org.onap.so.adapters.tasks.orchestration;
+
+import static org.junit.Assert.assertEquals;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import javax.xml.ws.Holder;
+import org.camunda.bpm.client.task.ExternalTask;
+import org.camunda.bpm.client.task.ExternalTaskService;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.so.adapters.tasks.orchestration.StackService;
+import org.onap.so.adapters.vnf.MsoVnfAdapterImpl;
+import org.onap.so.entity.MsoRequest;
+import org.onap.so.logging.tasks.AuditMDCSetup;
+import org.onap.so.openstack.beans.VnfRollback;
+import org.onap.so.openstack.exceptions.MsoException;
+import org.onap.so.openstack.utils.MsoHeatUtils;
+import com.woorea.openstack.heat.model.Stack;
+import org.onap.so.adapters.vnf.exceptions.VnfException;
+
+@RunWith(MockitoJUnitRunner.class)
+public class StackServiceTest {
+
+    private String RESOURCE_PATH = "src/test/resources/__files/";
+
+    @Mock
+    private ExternalTask mockExternalTask;
+
+    @Mock
+    private ExternalTaskService mockExternalTaskService;
+
+    @Mock
+    private MsoVnfAdapterImpl vnfAdapterImpl;
+
+    @Mock
+    private MsoHeatUtils msoHeatUtils;
+
+    @Mock
+    private AuditMDCSetup mdcSetup;
+
+    @InjectMocks
+    private StackService stackService;
+
+    @Test
+    public void findRequestTypeTest() throws IOException {
+        String payload = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/vnfAdapterTaskRequestCreate.xml")));
+
+        Optional<String> actual = stackService.findRequestType(payload);
+
+        assertEquals("createVfModuleRequest", actual.get());
+    }
+
+    @Test
+    public void testExecuteExternalTask() throws VnfException, MsoException, IOException {
+        String payload = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "/vnfAdapterTaskRequestCreate.xml")));
+
+        Stack stack = new Stack();
+        stack.setId("heatId");
+        Mockito.when(mockExternalTask.getVariable("vnfAdapterTaskRequest")).thenReturn(payload);
+        Mockito.doNothing().when(vnfAdapterImpl).createVfModule(Mockito.any(), Mockito.any(), Mockito.any(),
+                Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(),
+                Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(),
+                Mockito.any(), Mockito.any(), Mockito.any());
+        Mockito.doNothing().when(mockExternalTaskService).complete(Mockito.any(), Mockito.any());
+
+        stackService.executeExternalTask(mockExternalTask, mockExternalTaskService);
+
+        Map<String, Object> paramsMap = new HashMap<String, Object>();
+        paramsMap.put("vf_module_id", "985a468b-328b-4c2b-ad0e-b8f1e19501c4");
+        paramsMap.put("vnf_id", "6640feba-55f6-4946-9694-4d9558c8870a");
+        paramsMap.put("vnf_name", "Robot_VNF_For_Volume_Group");
+        paramsMap.put("availability_zone_0", "AZ-MN02");
+        paramsMap.put("environment_context", "General_Revenue-Bearing");
+        paramsMap.put("user_directives", "{}");
+        paramsMap.put("workload_context", "");
+        paramsMap.put("vf_module_name", "dummy_id");
+        paramsMap.put("vf_module_index", "0");
+        paramsMap.put("sdnc_directives",
+                "{ \"attributes\": [ {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"AZ-MN02\"}] }");
+
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("backout", true);
+        variables.put("WorkflowResponse", "");
+        variables.put("OpenstackInvokeSuccess", true);
+        variables.put("stackId", null);
+        variables.put("openstackAdapterErrorMessage", null);
+        variables.put("PollRollbackStatus", false);
+        variables.put("rollbackPerformed", false);
+        variables.put("OpenstackRollbackSuccess", false);
+        variables.put("OpenstackPollSuccess", false);
+
+        Mockito.verify(vnfAdapterImpl, Mockito.times(1)).createVfModule(Mockito.eq("regionOne"),
+                Mockito.eq("CloudOwner"), Mockito.eq("0422ffb57ba042c0800a29dc85ca70f8"),
+                Mockito.eq(
+                        "Vf zrdm5bpxmc02092017-Service/Vf zrdm5bpxmc02092017-VF 0::VfZrdm5bpxmc02092017Vf..pxmc_base..module-0"),
+                Mockito.eq("1.0"), Mockito.eq("6640feba-55f6-4946-9694-4d9558c8870a"), Mockito.eq("dummy_id"),
+                Mockito.eq("985a468b-328b-4c2b-ad0e-b8f1e19501c4"), Mockito.eq(null), Mockito.eq(null),
+                Mockito.eq(null), Mockito.eq("074c64d0-7e13-4bcc-8bdb-ea922331102d"), Mockito.eq(paramsMap),
+                Mockito.eq(false), Mockito.eq(false), Mockito.eq(null), Mockito.any(), Mockito.any(), Mockito.any(),
+                Mockito.any());
+        Mockito.verify(mockExternalTaskService).complete(Mockito.eq(mockExternalTask), Mockito.eq(variables));
+
+    }
+
+}
diff --git a/adapters/mso-openstack-adapters/src/test/resources/__files/vnfAdapterTaskRequestCreate.xml b/adapters/mso-openstack-adapters/src/test/resources/__files/vnfAdapterTaskRequestCreate.xml
new file mode 100644 (file)
index 0000000..c7c880e
--- /dev/null
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<createVfModuleRequest>
+       <messageId>7f4557c8-c3b9-4743-8b88-9539f9ed7bea</messageId>
+       <notificationUrl>http://mso-bpmn-infra-svc:9200/mso/WorkflowMessage/VNFAResponse/7f4557c8-c3b9-4743-8b88-9539f9ed7bea
+       </notificationUrl>
+       <skipAAI>true</skipAAI>
+       <cloudSiteId>regionOne</cloudSiteId>
+       <cloudOwner>CloudOwner</cloudOwner>
+       <tenantId>0422ffb57ba042c0800a29dc85ca70f8</tenantId>
+       <vnfId>6640feba-55f6-4946-9694-4d9558c8870a</vnfId>
+       <vnfType>Vf zrdm5bpxmc02092017-Service/Vf zrdm5bpxmc02092017-VF 0</vnfType>
+       <vnfVersion>1.0</vnfVersion>
+       <vfModuleId>985a468b-328b-4c2b-ad0e-b8f1e19501c4</vfModuleId>
+       <vfModuleName>dummy_id</vfModuleName>
+       <vfModuleType>VfZrdm5bpxmc02092017Vf..pxmc_base..module-0</vfModuleType>
+       <baseVfModuleId>985a468b-328b-4c2b-ad0e-b8f1e19501c4</baseVfModuleId>
+       <modelCustomizationUuid>074c64d0-7e13-4bcc-8bdb-ea922331102d</modelCustomizationUuid>
+       <failIfExists>false</failIfExists>
+       <backout>true</backout>
+       <vfModuleParams>
+               <entry>
+                       <key>vf_module_id</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">985a468b-328b-4c2b-ad0e-b8f1e19501c4</value>
+               </entry>
+               <entry>
+                       <key>vnf_id</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">6640feba-55f6-4946-9694-4d9558c8870a</value>
+               </entry>
+               <entry>
+                       <key>vnf_name</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">Robot_VNF_For_Volume_Group</value>
+               </entry>
+               <entry>
+                       <key>availability_zone_0</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">AZ-MN02</value>
+               </entry>
+               <entry>
+                       <key>environment_context</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">General_Revenue-Bearing</value>
+               </entry>
+               <entry>
+                       <key>user_directives</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">{}</value>
+               </entry>
+               <entry>
+                       <key>workload_context</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string"/>
+               </entry>
+               <entry>
+                       <key>vf_module_name</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">dummy_id</value>
+               </entry>
+               <entry>
+                       <key>vf_module_index</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">0</value>
+               </entry>
+               <entry>
+                       <key>sdnc_directives</key>
+                       <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">{ "attributes": [ {"attribute_name": "availability_zone_0", "attribute_value": "AZ-MN02"}] }</value>
+               </entry>
+       </vfModuleParams>
+       <msoRequest>
+               <requestId>049abdd8-0e19-48b8-bd87-b18f8d49048c</requestId>
+               <serviceInstanceId>7dc4c4eb-b1d7-4aef-94d1-24e925d1210c</serviceInstanceId>
+       </msoRequest>
+</createVfModuleRequest>
index db70a6b..2b5e4b2 100644 (file)
@@ -6,7 +6,7 @@ import org.onap.so.adapters.appc.orchestrator.client.ApplicationControllerCallba
 import org.onap.so.adapters.appc.orchestrator.client.ApplicationControllerSupport;
 import org.onap.so.adapters.appc.orchestrator.client.StatusCategory;
 import org.onap.so.appc.orchestrator.service.beans.ApplicationControllerTaskRequest;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.so.utils.ExternalTaskUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
index 228ee90..179bdab 100644 (file)
@@ -31,9 +31,9 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.onap.so.externaltasks.logging.AuditMDCSetup;
 import org.onap.so.adapters.appc.orchestrator.client.ApplicationControllerCallback;
 import org.onap.so.appc.orchestrator.service.beans.ApplicationControllerTaskRequest;
+import org.onap.so.logging.tasks.AuditMDCSetup;
 import org.onap.appc.client.lcm.model.Status;
 
 public class ApplicationControllerTaskTest extends ApplicationControllerTask {
index a6aacc7..e8f8424 100644 (file)
@@ -40,419 +40,419 @@ import java.util.UUID
 import org.onap.so.utils.Components
 
 
-
+@Deprecated //Use vnfAdapterRestV2
 class VnfAdapterRestV1 extends AbstractServiceTaskProcessor {
     private static final Logger logger = LoggerFactory.getLogger( VnfAdapterRestV1.class);
 
 
-       ExceptionUtil exceptionUtil = new ExceptionUtil()
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
 
-       // VNF Response Processing
-       public void preProcessRequest (DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.preProcessRequest(' +
-                       'execution=' + execution.getId() +
-                       ')'
-               logger.trace('Entered ' + method)
+    // VNF Response Processing
+    public void preProcessRequest (DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.preProcessRequest(' +
+                'execution=' + execution.getId() +
+                ')'
+        logger.trace('Entered ' + method)
 
-               def prefix="VNFREST_"
-               execution.setVariable("prefix", prefix)
-               setSuccessIndicator(execution, false)
+        def prefix="VNFREST_"
+        execution.setVariable("prefix", prefix)
+        setSuccessIndicator(execution, false)
 
-               try {
-                       String request = validateRequest(execution, "mso-request-id")
+        try {
+            String request = validateRequest(execution, "mso-request-id")
 
-                       // Get the request type (the name of the root element) from the request
+            // Get the request type (the name of the root element) from the request
 
-                       Node root = new XmlParser().parseText(request)
-                       String requestType = root.name()
-                       execution.setVariable(prefix + 'requestType', requestType)
-                       logger.debug(getProcessKey(execution) + ': ' + prefix + 'requestType = ' + requestType)
+            Node root = new XmlParser().parseText(request)
+            String requestType = root.name()
+            execution.setVariable(prefix + 'requestType', requestType)
+            logger.debug(getProcessKey(execution) + ': ' + prefix + 'requestType = ' + requestType)
 
-                       logger.debug('VnfAdapterRestV1, request: ' + request)
-                       // Get the messageId from the request
+            logger.debug('VnfAdapterRestV1, request: ' + request)
+            // Get the messageId from the request
 
-                       String messageId = getChildText(root, 'messageId')
+            String messageId = getChildText(root, 'messageId')
 
-                       if ('rollbackVolumeGroupRequest'.equals(requestType)) {
-                               messageId = getMessageIdForVolumeGroupRollback(root)
-                       }
+            if ('rollbackVolumeGroupRequest'.equals(requestType)) {
+                messageId = getMessageIdForVolumeGroupRollback(root)
+            }
 
-                       if (messageId == null || messageId.isEmpty()) {
-                               String msg = getProcessKey(execution) + ': no messageId in ' + requestType
-                               logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                               ErrorCode.UnknownError.getValue());
+            if (messageId == null || messageId.isEmpty()) {
+                String msg = getProcessKey(execution) + ': no messageId in ' + requestType
+                logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                        ErrorCode.UnknownError.getValue());
                                exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                       }
+            }
 
-                       execution.setVariable('VNFAResponse_CORRELATOR', messageId)
-                       logger.debug(getProcessKey(execution) + ': VNFAResponse_CORRELATOR = ' + messageId)
+            execution.setVariable('VNFAResponse_CORRELATOR', messageId)
+            logger.debug(getProcessKey(execution) + ': VNFAResponse_CORRELATOR = ' + messageId)
 
-                       // Get the notificationUrl from the request
+            // Get the notificationUrl from the request
 
-                       String notificationUrl = getChildText(root, 'notificationUrl')
+            String notificationUrl = getChildText(root, 'notificationUrl')
 
-                       if (notificationUrl == null || notificationUrl.isEmpty()) {
-                               String msg = getProcessKey(execution) + ': no notificationUrl in ' + requestType
-                               logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                               ErrorCode.UnknownError.getValue());
+            if (notificationUrl == null || notificationUrl.isEmpty()) {
+                String msg = getProcessKey(execution) + ': no notificationUrl in ' + requestType
+                logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                        ErrorCode.UnknownError.getValue());
                                exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                       }
+            }
 
-                       execution.setVariable(prefix + 'notificationUrl', notificationUrl)
-                       logger.debug(getProcessKey(execution) + ': ' + prefix + 'notificationUrl = ' + notificationUrl)
+            execution.setVariable(prefix + 'notificationUrl', notificationUrl)
+            logger.debug(getProcessKey(execution) + ': ' + prefix + 'notificationUrl = ' + notificationUrl)
 
-                       // Determine the VnfAdapter endpoint
+            // Determine the VnfAdapter endpoint
 
-                       String vnfAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.vnf.rest.endpoint", execution)
+            String vnfAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.vnf.rest.endpoint", execution)
 
-                       if (vnfAdapterEndpoint == null || vnfAdapterEndpoint.isEmpty()) {
-                               String msg = getProcessKey(execution) + ': mso:adapters:vnf:rest:endpoint URN mapping is not defined'
-                               logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                               ErrorCode.UnknownError.getValue());
+            if (vnfAdapterEndpoint == null || vnfAdapterEndpoint.isEmpty()) {
+                String msg = getProcessKey(execution) + ': mso:adapters:vnf:rest:endpoint URN mapping is not defined'
+                logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                        ErrorCode.UnknownError.getValue());
                                exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                       }
+            }
 
-                       while (vnfAdapterEndpoint.endsWith('/')) {
-                               vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, vnfAdapterEndpoint.length()-1)
-                       }
+            while (vnfAdapterEndpoint.endsWith('/')) {
+                vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, vnfAdapterEndpoint.length()-1)
+            }
 
-                       String vnfAdapterMethod = null
-                       String vnfAdapterUrl = null
-                       String vnfAdapterRequest = request
+            String vnfAdapterMethod = null
+            String vnfAdapterUrl = null
+            String vnfAdapterRequest = request
 
-                       if ('createVfModuleRequest'.equals(requestType)) {
-                               String vnfId = getChildText(root, 'vnfId')
+            if ('createVfModuleRequest'.equals(requestType)) {
+                String vnfId = getChildText(root, 'vnfId')
 
-                               if (vnfId == null || vnfId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vnfId == null || vnfId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               vnfAdapterMethod = 'POST'
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') + '/vf-modules'
+                vnfAdapterMethod = 'POST'
+                vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') + '/vf-modules'
 
-                       } else if ('updateVfModuleRequest'.equals(requestType)) {
-                               String vnfId = getChildText(root, 'vnfId')
+            } else if ('updateVfModuleRequest'.equals(requestType)) {
+                String vnfId = getChildText(root, 'vnfId')
 
-                               if (vnfId == null || vnfId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vnfId == null || vnfId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               String vfModuleId = getChildText(root, 'vfModuleId')
+                String vfModuleId = getChildText(root, 'vfModuleId')
 
-                               if (vfModuleId == null || vfModuleId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vfModuleId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vfModuleId == null || vfModuleId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vfModuleId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               vnfAdapterMethod = 'PUT'
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') +
-                                       '/vf-modules/' + URLEncoder.encode(vfModuleId, 'UTF-8')
+                vnfAdapterMethod = 'PUT'
+                vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') +
+                        '/vf-modules/' + URLEncoder.encode(vfModuleId, 'UTF-8')
 
-                       } else if ('deleteVfModuleRequest'.equals(requestType)) {
-                               String vnfId = getChildText(root, 'vnfId')
+            } else if ('deleteVfModuleRequest'.equals(requestType)) {
+                String vnfId = getChildText(root, 'vnfId')
 
-                               if (vnfId == null || vnfId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vnfId == null || vnfId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               String vfModuleId = getChildText(root, 'vfModuleId')
+                String vfModuleId = getChildText(root, 'vfModuleId')
 
-                               if (vfModuleId == null || vfModuleId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vfModuleId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vfModuleId == null || vfModuleId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vfModuleId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               vnfAdapterMethod = 'DELETE'
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') +
-                                       '/vf-modules/' + URLEncoder.encode(vfModuleId, 'UTF-8')
+                vnfAdapterMethod = 'DELETE'
+                vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') +
+                        '/vf-modules/' + URLEncoder.encode(vfModuleId, 'UTF-8')
 
-                       } else if ('rollbackVfModuleRequest'.equals(requestType)) {
-                               Node vfModuleRollbackNode = getChild(root, 'vfModuleRollback')
+            } else if ('rollbackVfModuleRequest'.equals(requestType)) {
+                Node vfModuleRollbackNode = getChild(root, 'vfModuleRollback')
 
-                               if (vfModuleRollbackNode == null) {
-                                       String msg = getProcessKey(execution) + ': no vfModuleRollback in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vfModuleRollbackNode == null) {
+                    String msg = getProcessKey(execution) + ': no vfModuleRollback in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               String vnfId = getChildText(vfModuleRollbackNode, 'vnfId')
+                String vnfId = getChildText(vfModuleRollbackNode, 'vnfId')
 
-                               if (vnfId == null || vnfId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vnfId == null || vnfId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vnfId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               String vfModuleId = getChildText(vfModuleRollbackNode, 'vfModuleId')
+                String vfModuleId = getChildText(vfModuleRollbackNode, 'vfModuleId')
 
-                               if (vfModuleId == null || vfModuleId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no vfModuleId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (vfModuleId == null || vfModuleId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no vfModuleId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
-
-                               vnfAdapterMethod = 'DELETE'
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') +
-                                       '/vf-modules/' + URLEncoder.encode(vfModuleId, 'UTF-8') + '/rollback'
-
-                       } else if ('createVolumeGroupRequest'.equals(requestType)) {
-                               vnfAdapterMethod = 'POST'
-                               if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
-                                       vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
-                               }
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups'
-
-                       } else if ('updateVolumeGroupRequest'.equals(requestType)) {
-                               String volumeGroupId = getChildText(root, 'volumeGroupId')
-
-                               if (volumeGroupId == null || volumeGroupId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no volumeGroupId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                }
+
+                vnfAdapterMethod = 'DELETE'
+                vnfAdapterUrl = vnfAdapterEndpoint + '/' + URLEncoder.encode(vnfId, 'UTF-8') +
+                        '/vf-modules/' + URLEncoder.encode(vfModuleId, 'UTF-8') + '/rollback'
+
+            } else if ('createVolumeGroupRequest'.equals(requestType)) {
+                vnfAdapterMethod = 'POST'
+                if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
+                    vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
+                }
+                vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups'
+
+            } else if ('updateVolumeGroupRequest'.equals(requestType)) {
+                String volumeGroupId = getChildText(root, 'volumeGroupId')
+
+                if (volumeGroupId == null || volumeGroupId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no volumeGroupId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               vnfAdapterMethod = 'PUT'
-                               if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
-                                       vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
-                               }
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups/' + URLEncoder.encode(volumeGroupId, 'UTF-8')
+                vnfAdapterMethod = 'PUT'
+                if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
+                    vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
+                }
+                vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups/' + URLEncoder.encode(volumeGroupId, 'UTF-8')
 
-                       } else if ('deleteVolumeGroupRequest'.equals(requestType)) {
-                               String volumeGroupId = getChildText(root, 'volumeGroupId')
+            } else if ('deleteVolumeGroupRequest'.equals(requestType)) {
+                String volumeGroupId = getChildText(root, 'volumeGroupId')
 
-                               if (volumeGroupId == null || volumeGroupId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no volumeGroupId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (volumeGroupId == null || volumeGroupId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no volumeGroupId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
+                }
 
-                               vnfAdapterMethod = 'DELETE'
-                               if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
-                                       vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
-                               }
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups/' + URLEncoder.encode(volumeGroupId, 'UTF-8')
+                vnfAdapterMethod = 'DELETE'
+                if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
+                    vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
+                }
+                vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups/' + URLEncoder.encode(volumeGroupId, 'UTF-8')
 
-                       } else if ('rollbackVolumeGroupRequest'.equals(requestType)) {
-                               String volumeGroupId = getVolumeGroupIdFromRollbackRequest(root)
+            } else if ('rollbackVolumeGroupRequest'.equals(requestType)) {
+                String volumeGroupId = getVolumeGroupIdFromRollbackRequest(root)
 
-                               if (volumeGroupId == null || volumeGroupId.isEmpty()) {
-                                       String msg = getProcessKey(execution) + ': no volumeGroupId in ' + requestType
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue());
+                if (volumeGroupId == null || volumeGroupId.isEmpty()) {
+                    String msg = getProcessKey(execution) + ': no volumeGroupId in ' + requestType
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                            ErrorCode.UnknownError.getValue());
                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                               }
-
-                               vnfAdapterMethod = 'DELETE'
-                               if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
-                                       vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
-                               }
-                               vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups/' + URLEncoder.encode(volumeGroupId, 'UTF-8')  + '/rollback'
-
-                       } else {
-                               String msg = getProcessKey(execution) + ': Unsupported request type: ' + requestType
-                               logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                               ErrorCode.UnknownError.getValue());
+                }
+
+                vnfAdapterMethod = 'DELETE'
+                if (vnfAdapterEndpoint.endsWith('v1/vnfs')) {
+                    vnfAdapterEndpoint = vnfAdapterEndpoint.substring(0, (vnfAdapterEndpoint.length()-'/vnfs'.length()))
+                }
+                vnfAdapterUrl = vnfAdapterEndpoint + '/volume-groups/' + URLEncoder.encode(volumeGroupId, 'UTF-8')  + '/rollback'
+
+            } else {
+                String msg = getProcessKey(execution) + ': Unsupported request type: ' + requestType
+                logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                        ErrorCode.UnknownError.getValue());
                                exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                       }
-
-                       execution.setVariable(prefix + 'vnfAdapterMethod', vnfAdapterMethod)
-                       logger.debug(getProcessKey(execution) + ': ' + prefix + 'vnfAdapterMethod = ' + vnfAdapterMethod)
-                       execution.setVariable(prefix + 'vnfAdapterUrl', vnfAdapterUrl)
-                       logger.debug(getProcessKey(execution) + ': ' + prefix + 'vnfAdapterUrl = ' + vnfAdapterUrl)
-                       execution.setVariable(prefix + 'vnfAdapterRequest', vnfAdapterRequest)
-                       logger.debug(getProcessKey(execution) + ': ' + prefix + 'vnfAdapterRequest = \n' + vnfAdapterRequest)
-
-                       // Get the Basic Auth credentials for the VnfAdapter
-
-                       String basicAuthValue = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
-
-                       if (basicAuthValue == null || basicAuthValue.isEmpty()) {
-                               logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                               getProcessKey(execution) + ": mso:adapters:po:auth URN mapping is not defined", "BPMN",
-                                               ErrorCode.UnknownError.getValue());
-                       } else {
-                               try {
-                                       def encodedString = utils.getBasicAuth(basicAuthValue, UrnPropertiesReader.getVariable("mso.msoKey", execution))
-                                       execution.setVariable(prefix + 'basicAuthHeaderValue', encodedString)
-                               } catch (IOException ex) {
-                                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                                       getProcessKey(execution) + ": Unable to encode BasicAuth credentials for VnfAdapter",
-                                                       "BPMN", ErrorCode.UnknownError.getValue(), ex);
-                               }
-                       }
-
-               } catch (BpmnError e) {
-                       logger.debug(" Rethrowing MSOWorkflowException")
-                       throw e
-               } catch (Exception e) {
-                       String msg = 'Caught exception in ' + method + ": " + e
-                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                       ErrorCode.UnknownError.getValue());
-                       logger.debug(msg)
+            }
+
+            execution.setVariable(prefix + 'vnfAdapterMethod', vnfAdapterMethod)
+            logger.debug(getProcessKey(execution) + ': ' + prefix + 'vnfAdapterMethod = ' + vnfAdapterMethod)
+            execution.setVariable(prefix + 'vnfAdapterUrl', vnfAdapterUrl)
+            logger.debug(getProcessKey(execution) + ': ' + prefix + 'vnfAdapterUrl = ' + vnfAdapterUrl)
+            execution.setVariable(prefix + 'vnfAdapterRequest', vnfAdapterRequest)
+            logger.debug(getProcessKey(execution) + ': ' + prefix + 'vnfAdapterRequest = \n' + vnfAdapterRequest)
+
+            // Get the Basic Auth credentials for the VnfAdapter
+
+            String basicAuthValue = UrnPropertiesReader.getVariable("mso.adapters.po.auth", execution)
+
+            if (basicAuthValue == null || basicAuthValue.isEmpty()) {
+                logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                        getProcessKey(execution) + ": mso:adapters:po:auth URN mapping is not defined", "BPMN",
+                        ErrorCode.UnknownError.getValue());
+            } else {
+                try {
+                    def encodedString = utils.getBasicAuth(basicAuthValue, UrnPropertiesReader.getVariable("mso.msoKey", execution))
+                    execution.setVariable(prefix + 'basicAuthHeaderValue', encodedString)
+                } catch (IOException ex) {
+                    logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                            getProcessKey(execution) + ": Unable to encode BasicAuth credentials for VnfAdapter",
+                            "BPMN", ErrorCode.UnknownError.getValue(), ex);
+                }
+            }
+
+        } catch (BpmnError e) {
+            logger.debug(" Rethrowing MSOWorkflowException")
+            throw e
+        } catch (Exception e) {
+            String msg = 'Caught exception in ' + method + ": " + e
+            logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                    ErrorCode.UnknownError.getValue());
+            logger.debug(msg)
                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-               }
-       }
+        }
+    }
 
-       public String getVolumeGroupIdFromRollbackRequest(Node root) {
-               return root.'volumeGroupRollback'.'volumeGroupId'.text()
-       }
+    public String getVolumeGroupIdFromRollbackRequest(Node root) {
+        return root.'volumeGroupRollback'.'volumeGroupId'.text()
+    }
 
-       public String getMessageIdForVolumeGroupRollback(Node root) {
-               return root.'volumeGroupRollback'.'messageId'.text()
-       }
+    public String getMessageIdForVolumeGroupRollback(Node root) {
+        return root.'volumeGroupRollback'.'messageId'.text()
+    }
 
-       /**
-        * This method is used instead of an HTTP Connector task because the
-        * connector does not allow DELETE with a body.
-        */
-       public void sendRequestToVnfAdapter(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
-                       'execution=' + execution.getId() +
-                       ')'
-               logger.trace('Entered ' + method)
+    /**
+     * This method is used instead of an HTTP Connector task because the
+     * connector does not allow DELETE with a body.
+     */
+    public void sendRequestToVnfAdapter(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.sendRequestToVnfAdapter(' +
+                'execution=' + execution.getId() +
+                ')'
+        logger.trace('Entered ' + method)
 
-               String prefix = execution.getVariable('prefix')
+        String prefix = execution.getVariable('prefix')
 
-               try {
-                       String vnfAdapterMethod = execution.getVariable(prefix + 'vnfAdapterMethod')
-                       String vnfAdapterUrl = execution.getVariable(prefix + 'vnfAdapterUrl')
-                       String vnfAdapterRequest = execution.getVariable(prefix + 'vnfAdapterRequest')
+        try {
+            String vnfAdapterMethod = execution.getVariable(prefix + 'vnfAdapterMethod')
+            String vnfAdapterUrl = execution.getVariable(prefix + 'vnfAdapterUrl')
+            String vnfAdapterRequest = execution.getVariable(prefix + 'vnfAdapterRequest')
 
-                       URL url = new URL(vnfAdapterUrl);
+            URL url = new URL(vnfAdapterUrl);
 
                        HttpClient httpClient = new HttpClientFactory().newXmlClient(url, ONAPComponents.VNF_ADAPTER)
-                       httpClient.addAdditionalHeader("Authorization", execution.getVariable(prefix + "basicAuthHeaderValue"))
-                       
-                       httpClient.addAdditionalHeader("X-ONAP-RequestID", execution.getVariable("mso-request-id"))
-                       httpClient.addAdditionalHeader("X-ONAP-InvocationID", UUID.randomUUID().toString())
-                       httpClient.addAdditionalHeader("X-ONAP-PartnerName", "SO-VNFAdapter")
-                       Response response;
-
-                       if ("GET".equals(vnfAdapterMethod)) {
-                               response = httpClient.get()
-                       } else if ("PUT".equals(vnfAdapterMethod)) {
-                               response = httpClient.put(vnfAdapterRequest)
-                       } else if ("POST".equals(vnfAdapterMethod)) {
-                               response = httpClient.post(vnfAdapterRequest)
-                       } else if ("DELETE".equals(vnfAdapterMethod)) {
-                               response = httpClient.delete(vnfAdapterRequest)
-                       } else {
-                               String msg = 'Unsupported HTTP method "' + vnfAdapterMethod + '" in ' + method + ": " + e
-                               logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                               ErrorCode.UnknownError.getValue());
+            httpClient.addAdditionalHeader("Authorization", execution.getVariable(prefix + "basicAuthHeaderValue"))
+
+            httpClient.addAdditionalHeader("X-ONAP-RequestID", execution.getVariable("mso-request-id"))
+            httpClient.addAdditionalHeader("X-ONAP-InvocationID", UUID.randomUUID().toString())
+            httpClient.addAdditionalHeader("X-ONAP-PartnerName", "SO-VNFAdapter")
+            Response response;
+
+            if ("GET".equals(vnfAdapterMethod)) {
+                response = httpClient.get()
+            } else if ("PUT".equals(vnfAdapterMethod)) {
+                response = httpClient.put(vnfAdapterRequest)
+            } else if ("POST".equals(vnfAdapterMethod)) {
+                response = httpClient.post(vnfAdapterRequest)
+            } else if ("DELETE".equals(vnfAdapterMethod)) {
+                response = httpClient.delete(vnfAdapterRequest)
+            } else {
+                String msg = 'Unsupported HTTP method "' + vnfAdapterMethod + '" in ' + method + ": " + e
+                logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                        ErrorCode.UnknownError.getValue());
                                exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-                       }
-
-                       execution.setVariable(prefix + "vnfAdapterStatusCode", response.getStatus())
-                       if(response.hasEntity()){
-                               execution.setVariable(prefix + "vnfAdapterResponse", response.readEntity(String.class))
-                       }
-               } catch (BpmnError e) {
-                       throw e
-               } catch (Exception e) {
-                       String msg = 'Caught exception in ' + method + ": " + e
-                       logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                       ErrorCode.UnknownError.getValue());
+            }
+
+            execution.setVariable(prefix + "vnfAdapterStatusCode", response.getStatus())
+            if(response.hasEntity()){
+                execution.setVariable(prefix + "vnfAdapterResponse", response.readEntity(String.class))
+            }
+        } catch (BpmnError e) {
+            throw e
+        } catch (Exception e) {
+            String msg = 'Caught exception in ' + method + ": " + e
+            logger.error(LoggingAnchor.FOUR, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                    ErrorCode.UnknownError.getValue());
                        exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg, ONAPComponents.SO)
-               }
-       }
-
-       public void processCallback(DelegateExecution execution){
-               def method = getClass().getSimpleName() + '.processCallback(' +
-                       'execution=' + execution.getId() +
-                       ')'
-               logger.trace('Entered ' + method)
-
-               String callback = execution.getVariable('VNFAResponse_MESSAGE')
-
-               try {
-                       logger.debug(getProcessKey(execution) + ": received callback:\n" + callback)
-
-                       // The XML callback is available to the calling flow in any case,
-                       // even if a WorkflowException is generated.
-                       execution.setVariable(getProcessKey(execution) + 'Response', callback)
-                       // TODO: Should deprecate use of processKey+Response variable for the response. Will use "WorkflowResponse" instead.
-                       execution.setVariable("WorkflowResponse", callback)
-
-                       callback = utils.removeXmlPreamble(callback)
-
-                       Node root = new XmlParser().parseText(callback)
-                       if (root.name().endsWith('Exception')) {
-                               vnfAdapterWorkflowException(execution, callback)
-                       }
-               } catch (Exception e) {
-                       logger.debug("Error encountered within VnfAdapterRest ProcessCallback method: {}", e.getMessage(), e)
+        }
+    }
+
+    public void processCallback(DelegateExecution execution){
+        def method = getClass().getSimpleName() + '.processCallback(' +
+                'execution=' + execution.getId() +
+                ')'
+        logger.trace('Entered ' + method)
+
+        String callback = execution.getVariable('VNFAResponse_MESSAGE')
+
+        try {
+            logger.debug(getProcessKey(execution) + ": received callback:\n" + callback)
+
+            // The XML callback is available to the calling flow in any case,
+            // even if a WorkflowException is generated.
+            execution.setVariable(getProcessKey(execution) + 'Response', callback)
+            // TODO: Should deprecate use of processKey+Response variable for the response. Will use "WorkflowResponse" instead.
+            execution.setVariable("WorkflowResponse", callback)
+
+            callback = utils.removeXmlPreamble(callback)
+
+            Node root = new XmlParser().parseText(callback)
+            if (root.name().endsWith('Exception')) {
+                vnfAdapterWorkflowException(execution, callback)
+            }
+        } catch (Exception e) {
+            logger.debug("Error encountered within VnfAdapterRest ProcessCallback method: {}", e.getMessage(), e)
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7020, "Error encountered within VnfAdapterRest ProcessCallback method", ONAPComponents.SO)
-               }
-       }
-
-       /**
-        * Tries to parse the response as XML to extract the information to create
-        * a WorkflowException.  If the response cannot be parsed, a more generic
-        * WorkflowException is created.
-        */
-       public void vnfAdapterWorkflowException(DelegateExecution execution, Object response) {
-               try {
-                       Node root = new XmlParser().parseText(response)
-                       String category = getChildText(root, "category")
-                       category = category == null || category.isEmpty() ? "" : " category='" + category + "'"
-                       String message = getChildText(root, "message")
-                       message = message == null || message.isEmpty() ? "" : " message='" + message + "'"
-                       String rolledBack = getChildText(root, "rolledBack")
-                       rolledBack = rolledBack == null || rolledBack.isEmpty() ? "" : " rolledBack='" + rolledBack + "'"
-                       exceptionUtil.buildWorkflowException(execution, 7020, "Received " + root.name() +
+        }
+    }
+
+    /**
+     * Tries to parse the response as XML to extract the information to create
+     * a WorkflowException.  If the response cannot be parsed, a more generic
+     * WorkflowException is created.
+     */
+    public void vnfAdapterWorkflowException(DelegateExecution execution, Object response) {
+        try {
+            Node root = new XmlParser().parseText(response)
+            String category = getChildText(root, "category")
+            category = category == null || category.isEmpty() ? "" : " category='" + category + "'"
+            String message = getChildText(root, "message")
+            message = message == null || message.isEmpty() ? "" : " message='" + message + "'"
+            String rolledBack = getChildText(root, "rolledBack")
+            rolledBack = rolledBack == null || rolledBack.isEmpty() ? "" : " rolledBack='" + rolledBack + "'"
+            exceptionUtil.buildWorkflowException(execution, 7020, "Received " + root.name() +
                                " from VnfAdapter:" + category + message + rolledBack, Components.OPENSTACK);
-               } catch (Exception e) {
-                       response = response == null || String.valueOf(response).isEmpty() ? "NONE" : response
+        } catch (Exception e) {
+            response = response == null || String.valueOf(response).isEmpty() ? "NONE" : response
                        exceptionUtil.buildWorkflowException(execution, 7020, "Received error from VnfAdapter: " + response, Components.OPENSTACK)
-               }
-       }
-
-       /**
-        * Gets the named child of the specified node.
-        * @param node the node
-        * @param name the child name
-        * @return the child node, or null if no such child exists
-        */
-       private Node getChild(Node node, String name) {
-               for (Node child : node.children()) {
-                       if (child.name() == name) {
-                               return child
-                       }
-               }
-               return null
-       }
-
-       /**
-        * Gets the text of the named child of the specified node.
-        * @param node the node
-        * @param name the child name
-        * @return the child node text, or null if no such child exists
-        */
-       private String getChildText(Node node, String name) {
-               Node child = getChild(node, name)
-               return child == null ? null : child.text()
-       }
-       
-       public Logger getLogger() {
-               return logger;
-       }
+        }
+    }
+
+    /**
+     * Gets the named child of the specified node.
+     * @param node the node
+     * @param name the child name
+     * @return the child node, or null if no such child exists
+     */
+    private Node getChild(Node node, String name) {
+        for (Node child : node.children()) {
+            if (child.name() == name) {
+                return child
+            }
+        }
+        return null
+    }
+
+    /**
+     * Gets the text of the named child of the specified node.
+     * @param node the node
+     * @param name the child name
+     * @return the child node text, or null if no such child exists
+     */
+    private String getChildText(Node node, String name) {
+        Node child = getChild(node, name)
+        return child == null ? null : child.text()
+    }
+
+    public Logger getLogger() {
+        return logger;
+    }
 }
index 2e9d4b0..30fd2c8 100644 (file)
@@ -45,6 +45,7 @@ import org.onap.so.logger.LoggingAnchor;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.objects.audit.AAIObjectAudit;
 import org.onap.so.objects.audit.AAIObjectAuditList;
+import org.onap.so.utils.Components;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -207,26 +208,26 @@ public class ExceptionBuilder {
     }
 
     public void buildAndThrowWorkflowException(DelegateExecution execution, int errorCode, String errorMessage) {
+
+        buildWorkflowException(execution, errorCode, errorMessage);
+        logger.info("Throwing MSOWorkflowException");
+        throw new BpmnError("MSOWorkflowException");
+    }
+
+    public void buildWorkflowException(DelegateExecution execution, int errorCode, String errorMessage) {
         String processKey = getProcessKey(execution);
-        logger.info("Building a WorkflowException for Subflow");
+        logger.info("Building a WorkflowException");
 
         WorkflowException exception = new WorkflowException(processKey, errorCode, errorMessage);
         execution.setVariable("WorkflowException", exception);
         execution.setVariable("WorkflowExceptionErrorMessage", errorMessage);
         logger.info("Outgoing WorkflowException is {}", exception);
-        logger.info("Throwing MSOWorkflowException");
-        throw new BpmnError("MSOWorkflowException");
     }
 
     public void buildAndThrowWorkflowException(DelegateExecution execution, int errorCode, String errorMessage,
             ONAPComponentsList extSystemErrorSource) {
-        String processKey = getProcessKey(execution);
-        logger.info("Building a WorkflowException for Subflow");
 
-        WorkflowException exception = new WorkflowException(processKey, errorCode, errorMessage, extSystemErrorSource);
-        execution.setVariable("WorkflowException", exception);
-        execution.setVariable("WorkflowExceptionErrorMessage", errorMessage);
-        logger.info("Outgoing WorkflowException is {}", exception);
+        buildWorkflowException(execution, errorCode, errorMessage, extSystemErrorSource);
         logger.info("Throwing MSOWorkflowException");
         throw new BpmnError("MSOWorkflowException");
     }
@@ -313,7 +314,7 @@ public class ExceptionBuilder {
                 execution.setVariable("WorkflowException", exception);
                 execution.setVariable("WorkflowExceptionErrorMessage", errorMessage.toString());
                 logger.info("Outgoing WorkflowException is {}", exception);
-                logger.info("Throwing MSOWorkflowException");
+                logger.info("Throwing AAIInventoryFailure");
                 throw new BpmnError("AAIInventoryFailure");
             }
 
@@ -323,9 +324,42 @@ public class ExceptionBuilder {
             execution.setVariable("WorkflowException", exception);
             execution.setVariable("WorkflowExceptionErrorMessage", errorMessage);
             logger.info("Outgoing WorkflowException is {}", exception);
-            logger.info("Throwing MSOWorkflowException");
+            logger.info("Throwing AAIInventoryFailure");
             throw new BpmnError("AAIInventoryFailure");
         }
     }
 
+    public void processVnfAdapterException(DelegateExecution execution) {
+        StringBuilder workflowExceptionMessage = new StringBuilder();
+        logger.debug("Processing Vnf Adapter Exception");
+        try {
+            String errorMessage = (String) execution.getVariable("openstackAdapterErrorMessage");
+            boolean openstackRollbackPollSuccess = (boolean) execution.getVariable("OpenstackPollSuccess");
+            boolean rollbackPerformed = (boolean) execution.getVariable("rollbackPerformed");
+            boolean openstackRollbackSuccess = (boolean) execution.getVariable("OpenstackRollbackSuccess");
+            boolean pollRollbackStatus = (boolean) execution.getVariable("PollRollbackStatus");
+
+            workflowExceptionMessage.append("Exception occured during vnf adapter: " + errorMessage + ".");
+
+            boolean rollbackCompleted = false;
+            if (rollbackPerformed) {
+                if (openstackRollbackSuccess && !pollRollbackStatus) {
+                    rollbackCompleted = true;
+                } else if (openstackRollbackSuccess && pollRollbackStatus) {
+                    if (openstackRollbackPollSuccess) {
+                        rollbackCompleted = true;
+                    }
+                }
+                workflowExceptionMessage
+                        .append(" The resource was rollbacked in openstack: " + rollbackCompleted + ".");
+            }
+        } catch (Exception e) {
+            logger.debug("Error while Processing Vnf Adapter Exception", e);
+        }
+        buildWorkflowException(execution, 500, workflowExceptionMessage.toString(), Components.OPENSTACK);
+        throw new BpmnError("MSOWorkflowException");
+
+
+    }
+
 }
diff --git a/bpmn/MSOCommonBPMN/src/main/resources/subprocess/VnfAdapterTask.bpmn b/bpmn/MSOCommonBPMN/src/main/resources/subprocess/VnfAdapterTask.bpmn
new file mode 100644 (file)
index 0000000..69b68e5
--- /dev/null
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_GraPIIyxEeWmdMDkx6Uftw" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+  <bpmn2:process id="vnfAdapterTask" name="vnfAdapterTask" isExecutable="true">
+    <bpmn2:endEvent id="EndEvent_6">
+      <bpmn2:incoming>SequenceFlow_13uy51h</bpmn2:incoming>
+    </bpmn2:endEvent>
+    <bpmn2:startEvent id="StartEvent_1">
+      <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
+    </bpmn2:startEvent>
+    <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="StartEvent_1" targetRef="executeOpenstackAction" />
+    <bpmn2:serviceTask id="executeOpenstackAction" name="&#10;Openstack&#10;Action&#10;(resource)&#10;" camunda:asyncAfter="true" camunda:type="external" camunda:topic="OpenstackAdapterInvoke">
+      <bpmn2:incoming>SequenceFlow_9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1ff2y8j</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_1ff2y8j" sourceRef="executeOpenstackAction" targetRef="ExclusiveGateway_08a6you" />
+    <bpmn2:serviceTask id="ServiceTask_11iuzx9" name="&#10;Openstack&#10;Query&#10;(resource)&#10;" camunda:asyncAfter="true" camunda:type="external" camunda:topic="OpenstackAdapterPolling">
+      <bpmn2:incoming>SequenceFlow_1p39f4r</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ecut35</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0ecut35" sourceRef="ServiceTask_11iuzx9" targetRef="ExclusiveGateway_1fn953y" />
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1fn953y" name="Success?">
+      <bpmn2:incoming>SequenceFlow_0ecut35</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_13uy51h</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_0o8wnkx</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_13uy51h" name="Yes" sourceRef="ExclusiveGateway_1fn953y" targetRef="EndEvent_6">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("OpenstackPollSuccess") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_0o8wnkx" name="No" sourceRef="ExclusiveGateway_1fn953y" targetRef="EndEvent_1dt01ez">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("OpenstackPollSuccess") == false }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_08a6you" name="Success?">
+      <bpmn2:incoming>SequenceFlow_1ff2y8j</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_1p39f4r</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_007m32h</bpmn2:outgoing>
+    </bpmn2:exclusiveGateway>
+    <bpmn2:sequenceFlow id="SequenceFlow_1p39f4r" name="Yes" sourceRef="ExclusiveGateway_08a6you" targetRef="ServiceTask_11iuzx9">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("OpenstackInvokeSuccess") == true }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:sequenceFlow id="SequenceFlow_007m32h" name="No" sourceRef="ExclusiveGateway_08a6you" targetRef="EndEvent_0rxprkw">
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("OpenstackInvokeSuccess") == false }]]></bpmn2:conditionExpression>
+    </bpmn2:sequenceFlow>
+    <bpmn2:subProcess id="SubProcess_0y17e8j" name="Error Handling" triggeredByEvent="true">
+      <bpmn2:startEvent id="StartEvent_17oglfe">
+        <bpmn2:outgoing>SequenceFlow_02rhau9</bpmn2:outgoing>
+        <bpmn2:errorEventDefinition />
+      </bpmn2:startEvent>
+      <bpmn2:intermediateThrowEvent id="IntermediateThrowEvent_040yoan">
+        <bpmn2:incoming>SequenceFlow_0y1by9x</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_006myq9</bpmn2:outgoing>
+        <bpmn2:compensateEventDefinition waitForCompletion="true" activityRef="executeOpenstackAction" />
+      </bpmn2:intermediateThrowEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0qlnby0" name="Poll Rollback Status?" default="SequenceFlow_1piwh1c">
+        <bpmn2:incoming>SequenceFlow_006myq9</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1ubla93</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1piwh1c</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_02rhau9" sourceRef="StartEvent_17oglfe" targetRef="ExclusiveGateway_18ndby1" />
+      <bpmn2:sequenceFlow id="SequenceFlow_006myq9" sourceRef="IntermediateThrowEvent_040yoan" targetRef="ExclusiveGateway_0qlnby0" />
+      <bpmn2:serviceTask id="ServiceTask_120p27h" name="&#10;Openstack&#10;Query&#10;(resource)&#10;" camunda:asyncAfter="true" camunda:type="external" camunda:topic="OpenstackAdapterPolling">
+        <bpmn2:incoming>SequenceFlow_1ubla93</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1nku4uk</bpmn2:outgoing>
+      </bpmn2:serviceTask>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_0tuxj9l">
+        <bpmn2:incoming>SequenceFlow_1piwh1c</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1nku4uk</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_1yx80cq</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:serviceTask id="buildError" name="&#10;Process&#10;Exception&#10;" camunda:expression="${ExceptionBuilder.processVnfAdapterException(execution)}">
+        <bpmn2:incoming>SequenceFlow_1yx80cq</bpmn2:incoming>
+        <bpmn2:incoming>SequenceFlow_1az3a2q</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0bnzfqb</bpmn2:outgoing>
+      </bpmn2:serviceTask>
+      <bpmn2:sequenceFlow id="SequenceFlow_1ubla93" name="Yes" sourceRef="ExclusiveGateway_0qlnby0" targetRef="ServiceTask_120p27h">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("PollRollbackStatus") == true}]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1piwh1c" name="No" sourceRef="ExclusiveGateway_0qlnby0" targetRef="ExclusiveGateway_0tuxj9l" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1nku4uk" sourceRef="ServiceTask_120p27h" targetRef="ExclusiveGateway_0tuxj9l" />
+      <bpmn2:sequenceFlow id="SequenceFlow_1yx80cq" sourceRef="ExclusiveGateway_0tuxj9l" targetRef="buildError" />
+      <bpmn2:sequenceFlow id="SequenceFlow_0bnzfqb" sourceRef="buildError" targetRef="EndEvent_1yiy2fi" />
+      <bpmn2:endEvent id="EndEvent_1yiy2fi">
+        <bpmn2:incoming>SequenceFlow_0bnzfqb</bpmn2:incoming>
+        <bpmn2:terminateEventDefinition />
+      </bpmn2:endEvent>
+      <bpmn2:exclusiveGateway id="ExclusiveGateway_18ndby1" name="Rollback Resource?" default="SequenceFlow_1az3a2q">
+        <bpmn2:incoming>SequenceFlow_02rhau9</bpmn2:incoming>
+        <bpmn2:outgoing>SequenceFlow_0y1by9x</bpmn2:outgoing>
+        <bpmn2:outgoing>SequenceFlow_1az3a2q</bpmn2:outgoing>
+      </bpmn2:exclusiveGateway>
+      <bpmn2:sequenceFlow id="SequenceFlow_0y1by9x" name="Yes" sourceRef="ExclusiveGateway_18ndby1" targetRef="IntermediateThrowEvent_040yoan">
+        <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("backout") == true }]]></bpmn2:conditionExpression>
+      </bpmn2:sequenceFlow>
+      <bpmn2:sequenceFlow id="SequenceFlow_1az3a2q" name="No" sourceRef="ExclusiveGateway_18ndby1" targetRef="buildError" />
+    </bpmn2:subProcess>
+    <bpmn2:boundaryEvent id="BoundaryEvent_1ysr7mk" attachedToRef="executeOpenstackAction">
+      <bpmn2:compensateEventDefinition />
+    </bpmn2:boundaryEvent>
+    <bpmn2:serviceTask id="Task_0zbd85n" name="&#10;Openstack&#10;Rollback&#10;(resource)&#10;" isForCompensation="true" camunda:asyncAfter="true" camunda:type="external" camunda:topic="OpenstackAdapterRollback" />
+    <bpmn2:endEvent id="EndEvent_0rxprkw">
+      <bpmn2:incoming>SequenceFlow_007m32h</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:endEvent id="EndEvent_1dt01ez">
+      <bpmn2:incoming>SequenceFlow_0o8wnkx</bpmn2:incoming>
+      <bpmn2:errorEventDefinition errorRef="Error_1" />
+    </bpmn2:endEvent>
+    <bpmn2:association id="Association_1cnlu6p" associationDirection="One" sourceRef="BoundaryEvent_1ysr7mk" targetRef="Task_0zbd85n" />
+  </bpmn2:process>
+  <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
+  <bpmn2:message id="Message_1" name="WorkflowMessage" />
+  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
+    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="vnfAdapterTask">
+      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_54" bpmnElement="StartEvent_1">
+        <dc:Bounds x="110" y="146" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="116" y="187" width="24" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_9" sourceElement="_BPMNShape_StartEvent_54" targetElement="ServiceTask_0rcy900_di">
+        <di:waypoint xsi:type="dc:Point" x="146" y="164" />
+        <di:waypoint xsi:type="dc:Point" x="253" y="163" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="154.5" y="145.5" width="90" height="6" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_158" bpmnElement="EndEvent_6">
+        <dc:Bounds x="929" y="146" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="924" y="187" width="46" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0rcy900_di" bpmnElement="executeOpenstackAction">
+        <dc:Bounds x="253" y="124" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ff2y8j_di" bpmnElement="SequenceFlow_1ff2y8j">
+        <di:waypoint xsi:type="dc:Point" x="353" y="164" />
+        <di:waypoint xsi:type="dc:Point" x="404" y="164" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="333.5" y="139" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_11iuzx9_di" bpmnElement="ServiceTask_11iuzx9">
+        <dc:Bounds x="541" y="124" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ecut35_di" bpmnElement="SequenceFlow_0ecut35">
+        <di:waypoint xsi:type="dc:Point" x="641" y="164" />
+        <di:waypoint xsi:type="dc:Point" x="676" y="164" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="613.5" y="139" width="90" height="20" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_1fn953y_di" bpmnElement="ExclusiveGateway_1fn953y" isMarkerVisible="true">
+        <dc:Bounds x="676" y="139" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="676" y="119" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_13uy51h_di" bpmnElement="SequenceFlow_13uy51h">
+        <di:waypoint xsi:type="dc:Point" x="726" y="164" />
+        <di:waypoint xsi:type="dc:Point" x="929" y="164" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="746.6875" y="166" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0o8wnkx_di" bpmnElement="SequenceFlow_0o8wnkx">
+        <di:waypoint xsi:type="dc:Point" x="701" y="189" />
+        <di:waypoint xsi:type="dc:Point" x="701" y="249" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="706" y="198" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_120p27h_di" bpmnElement="ServiceTask_120p27h">
+        <dc:Bounds x="496" y="443" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_08a6you_di" bpmnElement="ExclusiveGateway_08a6you" isMarkerVisible="true">
+        <dc:Bounds x="404" y="139" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="409" y="117" width="49" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1p39f4r_di" bpmnElement="SequenceFlow_1p39f4r">
+        <di:waypoint xsi:type="dc:Point" x="454" y="164" />
+        <di:waypoint xsi:type="dc:Point" x="541" y="164" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="472" y="168" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_007m32h_di" bpmnElement="SequenceFlow_007m32h">
+        <di:waypoint xsi:type="dc:Point" x="429" y="189" />
+        <di:waypoint xsi:type="dc:Point" x="429" y="249" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="435" y="198" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="SubProcess_09bkjg0_di" bpmnElement="SubProcess_0y17e8j" isExpanded="true">
+        <dc:Bounds x="151" y="404" width="787" height="344" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="BoundaryEvent_04c5efr_di" bpmnElement="BoundaryEvent_1ysr7mk">
+        <dc:Bounds x="335" y="186" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="353" y="226" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="Association_1cnlu6p_di" bpmnElement="Association_1cnlu6p">
+        <di:waypoint xsi:type="dc:Point" x="353" y="222" />
+        <di:waypoint xsi:type="dc:Point" x="353" y="267" />
+        <di:waypoint xsi:type="dc:Point" x="321" y="267" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0vacscp_di" bpmnElement="Task_0zbd85n">
+        <dc:Bounds x="221" y="227" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_0lzcn0v_di" bpmnElement="EndEvent_0rxprkw">
+        <dc:Bounds x="411" y="249" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="429" y="288.658" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="EndEvent_14424k5_di" bpmnElement="EndEvent_1dt01ez">
+        <dc:Bounds x="683" y="249" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="701" y="288.658" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="StartEvent_1wrpebh_di" bpmnElement="StartEvent_17oglfe">
+        <dc:Bounds x="181" y="599" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="198.35199999999998" y="638.658" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="IntermediateThrowEvent_0gltuh4_di" bpmnElement="IntermediateThrowEvent_040yoan">
+        <dc:Bounds x="365" y="529" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="382.352" y="569" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0qlnby0_di" bpmnElement="ExclusiveGateway_0qlnby0" isMarkerVisible="true">
+        <dc:Bounds x="429.352" y="522" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="484" y="535" width="62" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_02rhau9_di" bpmnElement="SequenceFlow_02rhau9">
+        <di:waypoint xsi:type="dc:Point" x="217" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="284" y="617" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="250.5" y="596" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_006myq9_di" bpmnElement="SequenceFlow_006myq9">
+        <di:waypoint xsi:type="dc:Point" x="401" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="429" y="547" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="415" y="526" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ExclusiveGateway_0tuxj9l_di" bpmnElement="ExclusiveGateway_0tuxj9l" isMarkerVisible="true">
+        <dc:Bounds x="608.352" y="522" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="633.352" y="576" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_108cgfw_di" bpmnElement="buildError">
+        <dc:Bounds x="695" y="577" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_1ubla93_di" bpmnElement="SequenceFlow_1ubla93">
+        <di:waypoint xsi:type="dc:Point" x="454" y="522" />
+        <di:waypoint xsi:type="dc:Point" x="454" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="496" y="483" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="461" y="489" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1piwh1c_di" bpmnElement="SequenceFlow_1piwh1c">
+        <di:waypoint xsi:type="dc:Point" x="454" y="572" />
+        <di:waypoint xsi:type="dc:Point" x="454" y="603" />
+        <di:waypoint xsi:type="dc:Point" x="633" y="603" />
+        <di:waypoint xsi:type="dc:Point" x="633" y="572" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="460" y="576.85" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1nku4uk_di" bpmnElement="SequenceFlow_1nku4uk">
+        <di:waypoint xsi:type="dc:Point" x="596" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="633" y="483" />
+        <di:waypoint xsi:type="dc:Point" x="633" y="522" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="614.5" y="462" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1yx80cq_di" bpmnElement="SequenceFlow_1yx80cq">
+        <di:waypoint xsi:type="dc:Point" x="658" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="745" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="745" y="577" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="656.5" y="526" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0bnzfqb_di" bpmnElement="SequenceFlow_0bnzfqb">
+        <di:waypoint xsi:type="dc:Point" x="795" y="617" />
+        <di:waypoint xsi:type="dc:Point" x="870" y="617" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="787.5" y="596" width="90" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="EndEvent_1l1f6zj_di" bpmnElement="EndEvent_1yiy2fi">
+        <dc:Bounds x="870" y="599" width="36" height="36" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="887.352" y="639" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ExclusiveGateway_18ndby1_di" bpmnElement="ExclusiveGateway_18ndby1" isMarkerVisible="true">
+        <dc:Bounds x="284.352" y="592" width="50" height="50" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="338" y="605" width="54" height="24" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0y1by9x_di" bpmnElement="SequenceFlow_0y1by9x">
+        <di:waypoint xsi:type="dc:Point" x="309" y="592" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="547" />
+        <di:waypoint xsi:type="dc:Point" x="365" y="547" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="315" y="558" width="19" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1az3a2q_di" bpmnElement="SequenceFlow_1az3a2q">
+        <di:waypoint xsi:type="dc:Point" x="309" y="642" />
+        <di:waypoint xsi:type="dc:Point" x="309" y="686" />
+        <di:waypoint xsi:type="dc:Point" x="745" y="686" />
+        <di:waypoint xsi:type="dc:Point" x="745" y="657" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="318" y="657" width="14" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</bpmn2:definitions>
index 506088e..477dce1 100644 (file)
@@ -9,9 +9,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
index 30a95eb..e139e94 100644 (file)
       <bpmn:outgoing>SequenceFlow_1ivhukd</bpmn:outgoing>
     </bpmn:serviceTask>
     <bpmn:sequenceFlow id="SequenceFlow_1ivhukd" sourceRef="PostProcessResponse" targetRef="VnfAdapter_End" />
-    <bpmn:callActivity id="Call_vnfAdapterRestV1" name="Call vnfAdapterRestV1" calledElement="vnfAdapterRestV1">
+    <bpmn:callActivity id="Call_vnfAdapterTask" name="&#10;Cloud&#10;Create&#10;(vnf)&#10;" calledElement="vnfAdapterTask">
       <bpmn:extensionElements>
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="VNFREST_Request" target="vnfAdapterRestV1Request" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="vnfAdapterRestV1Response" target="vnfAdapterRestV1Response" />
+        <camunda:in source="VNFREST_Request" target="vnfAdapterTaskRequest" />
+        <camunda:out source="WorkflowResponse" target="WorkflowResponse" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_0qaaf5k</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_0j1zvis</bpmn:outgoing>
     </bpmn:callActivity>
-    <bpmn:sequenceFlow id="SequenceFlow_0qaaf5k" sourceRef="PreProcessRequest" targetRef="Call_vnfAdapterRestV1" />
-    <bpmn:sequenceFlow id="SequenceFlow_0j1zvis" sourceRef="Call_vnfAdapterRestV1" targetRef="PostProcessResponse" />
+    <bpmn:sequenceFlow id="SequenceFlow_0qaaf5k" sourceRef="PreProcessRequest" targetRef="Call_vnfAdapterTask" />
+    <bpmn:sequenceFlow id="SequenceFlow_0j1zvis" sourceRef="Call_vnfAdapterTask" targetRef="PostProcessResponse" />
   </bpmn:process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="VnfAdapter">
       <bpmndi:BPMNShape id="StartEvent_0kxwniy_di" bpmnElement="VnfAdapter_Start">
-        <dc:Bounds x="213" y="357" width="36" height="36" />
+        <dc:Bounds x="156" y="103" width="36" height="36" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="219" y="393" width="24" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="SubProcess_17szae7_di" bpmnElement="VnfAdapter_Error" isExpanded="true">
-        <dc:Bounds x="453" y="529" width="233" height="135" />
+        <dc:Bounds x="396" y="275" width="233" height="135" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1xr6chl_di" bpmnElement="SequenceFlow_1xr6chl">
-        <di:waypoint xsi:type="dc:Point" x="249" y="375" />
-        <di:waypoint xsi:type="dc:Point" x="329" y="375" />
+        <di:waypoint xsi:type="dc:Point" x="192" y="121" />
+        <di:waypoint xsi:type="dc:Point" x="272" y="121" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="244" y="360" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_16vfqpk_di" bpmnElement="Error_End">
-        <dc:Bounds x="606" y="573" width="36" height="36" />
+        <dc:Bounds x="549" y="319" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="615" y="613" width="19" height="12" />
+          <dc:Bounds x="558" y="359" width="20" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="StartEvent_1t3ep1m_di" bpmnElement="Error_Start">
-        <dc:Bounds x="491" y="573" width="36" height="36" />
+        <dc:Bounds x="434" y="319" width="36" height="36" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="498" y="613" width="24" height="12" />
+          <dc:Bounds x="441" y="359" width="24" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1abat8l_di" bpmnElement="SequenceFlow_1abat8l">
-        <di:waypoint xsi:type="dc:Point" x="527" y="591" />
-        <di:waypoint xsi:type="dc:Point" x="566" y="591" />
-        <di:waypoint xsi:type="dc:Point" x="566" y="591" />
-        <di:waypoint xsi:type="dc:Point" x="606" y="591" />
+        <di:waypoint xsi:type="dc:Point" x="470" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="509" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="509" y="337" />
+        <di:waypoint xsi:type="dc:Point" x="549" y="337" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="536" y="591" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_0qdq7wj_di" bpmnElement="VnfAdapter_End">
-        <dc:Bounds x="894" y="357" width="36" height="36" />
+        <dc:Bounds x="837" y="103" width="36" height="36" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="902" y="397" width="19" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1frb5h2_di" bpmnElement="PreProcessRequest">
-        <dc:Bounds x="329" y="335" width="100" height="80" />
+        <dc:Bounds x="272" y="81" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1yomr79_di" bpmnElement="PostProcessResponse">
-        <dc:Bounds x="714" y="335" width="100" height="80" />
+        <dc:Bounds x="657" y="81" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ivhukd_di" bpmnElement="SequenceFlow_1ivhukd">
-        <di:waypoint xsi:type="dc:Point" x="814" y="375" />
-        <di:waypoint xsi:type="dc:Point" x="894" y="375" />
+        <di:waypoint xsi:type="dc:Point" x="757" y="121" />
+        <di:waypoint xsi:type="dc:Point" x="837" y="121" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="809" y="354" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="CallActivity_0n6wnin_di" bpmnElement="Call_vnfAdapterRestV1">
-        <dc:Bounds x="520" y="335" width="100" height="80" />
+      <bpmndi:BPMNShape id="CallActivity_0n6wnin_di" bpmnElement="Call_vnfAdapterTask">
+        <dc:Bounds x="463" y="81" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0qaaf5k_di" bpmnElement="SequenceFlow_0qaaf5k">
-        <di:waypoint xsi:type="dc:Point" x="429" y="375" />
-        <di:waypoint xsi:type="dc:Point" x="520" y="375" />
+        <di:waypoint xsi:type="dc:Point" x="372" y="121" />
+        <di:waypoint xsi:type="dc:Point" x="463" y="121" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="429.5" y="354" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0j1zvis_di" bpmnElement="SequenceFlow_0j1zvis">
-        <di:waypoint xsi:type="dc:Point" x="620" y="375" />
-        <di:waypoint xsi:type="dc:Point" x="714" y="375" />
+        <di:waypoint xsi:type="dc:Point" x="563" y="121" />
+        <di:waypoint xsi:type="dc:Point" x="657" y="121" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="622" y="354" width="90" height="12" />
         </bpmndi:BPMNLabel>
index 8ad4e0f..4dbf4d4 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -32,11 +32,11 @@ import org.onap.so.bpmn.common.BuildingBlockExecution;
 public class VnfAdapterTest extends BaseBPMNTest {
     @Test
     public void vnfAdapterCreatedTest() {
-        mockSubprocess("vnfAdapterRestV1", "Mocked vnfAdapterRestV1", "GenericStub");
+        mockSubprocess("vnfAdapterTask", "Mocked vnfAdapterTask", "GenericStub");
 
         ProcessInstance pi = runtimeService.startProcessInstanceByKey("VnfAdapter", variables);
         assertThat(pi).isNotNull();
-        assertThat(pi).isStarted().hasPassedInOrder("VnfAdapter_Start", "PreProcessRequest", "Call_vnfAdapterRestV1",
+        assertThat(pi).isStarted().hasPassedInOrder("VnfAdapter_Start", "PreProcessRequest", "Call_vnfAdapterTask",
                 "PostProcessResponse", "VnfAdapter_End");
         assertThat(pi).isEnded();
     }
index a77f6f0..a505aa1 100644 (file)
@@ -50,164 +50,164 @@ import javax.ws.rs.NotFoundException
 public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
     private static final Logger logger = LoggerFactory.getLogger( DoCreateVfModuleRollback.class);
 
-       def Prefix="DCVFMR_"
-       ExceptionUtil exceptionUtil = new ExceptionUtil()
-
-       public void initProcessVariables(DelegateExecution execution) {
-               execution.setVariable("prefix",Prefix)
-       }
-
-       // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
-       // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
-       public void preProcessRequest(DelegateExecution execution) {
-
-
-               initProcessVariables(execution)
-
-               try {
-
-                       execution.setVariable("rolledBack", null)
-                       execution.setVariable("rollbackError", null)
-
-                       def rollbackData = execution.getVariable("rollbackData")
-                       logger.debug("RollbackData:" + rollbackData)
-
-                       if (rollbackData != null) {
-                       String vnfId = rollbackData.get("VFMODULE", "vnfid")
-                       execution.setVariable("DCVFMR_vnfId", vnfId)
-                       String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid")
-                       execution.setVariable("DCVFMR_vfModuleId", vfModuleId)
-                       String source = rollbackData.get("VFMODULE", "source")
-                       execution.setVariable("DCVFMR_source", source)
-                       String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId")
-                       execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
-                       String serviceId = rollbackData.get("VFMODULE", "service-id")
-                       execution.setVariable("DCVFMR_serviceId", serviceId)
-                       String vnfType = rollbackData.get("VFMODULE", "vnftype")
-                       execution.setVariable("DCVFMR_vnfType", vnfType)
-                       String vnfName = rollbackData.get("VFMODULE", "vnfname")
-                       execution.setVariable("DCVFMR_vnfName", vnfName)
-                       String tenantId = rollbackData.get("VFMODULE", "tenantid")
-                       execution.setVariable("DCVFMR_tenantId", tenantId)
-                       String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename")
-                       execution.setVariable("DCVFMR_vfModuleName", vfModuleName)
-                       String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname")
-                       execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName)
-                       String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion")
-                       execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId)
-                       String cloudOwner = rollbackData.get("VFMODULE", "cloudowner")
-                       execution.setVariable("DCVFMR_cloudOwner", cloudOwner)
-                       String heatStackId = rollbackData.get("VFMODULE", "heatstackid")
-                       execution.setVariable("DCVFMR_heatStackId", heatStackId)
-                       String requestId = rollbackData.get("VFMODULE", "msorequestid")
-                       execution.setVariable("DCVFMR_requestId", requestId)
-                       // Set mso-request-id to request-id for VNF Adapter interface
-                       execution.setVariable("mso-request-id", requestId)
-                       List createdNetworkPolicyFqdnList = []
-                       int i = 0
-                       while (i < 100) {
-                               String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i)
-                               if (fqdn == null) {
-                                       break
-                               }
-                               createdNetworkPolicyFqdnList.add(fqdn)
-                               logger.debug("got fqdn # " + i + ": " + fqdn)
-                               i = i + 1
-
-                       }
-
-                       execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList)
-                       String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address")
-                       execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address)
-                       String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address")
-                       execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address)
-                       //String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid")
-                       //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
-                       execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule"))
-                       execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule"))
-                       execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate"))
-                       execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign"))
-                       execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate"))
-                       execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule"))
-                       execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI"))
-                       execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI"))
-
-                       // formulate the request for PrepareUpdateAAIVfModule
-                       String request = """<PrepareUpdateAAIVfModuleRequest>
+    def Prefix="DCVFMR_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    public void initProcessVariables(DelegateExecution execution) {
+        execution.setVariable("prefix",Prefix)
+    }
+
+    // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
+    // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
+    public void preProcessRequest(DelegateExecution execution) {
+
+
+        initProcessVariables(execution)
+
+        try {
+
+            execution.setVariable("rolledBack", null)
+            execution.setVariable("rollbackError", null)
+
+            def rollbackData = execution.getVariable("rollbackData")
+            logger.debug("RollbackData:" + rollbackData)
+
+            if (rollbackData != null) {
+                String vnfId = rollbackData.get("VFMODULE", "vnfid")
+                execution.setVariable("DCVFMR_vnfId", vnfId)
+                String vfModuleId = rollbackData.get("VFMODULE", "vfmoduleid")
+                execution.setVariable("DCVFMR_vfModuleId", vfModuleId)
+                String source = rollbackData.get("VFMODULE", "source")
+                execution.setVariable("DCVFMR_source", source)
+                String serviceInstanceId = rollbackData.get("VFMODULE", "serviceInstanceId")
+                execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
+                String serviceId = rollbackData.get("VFMODULE", "service-id")
+                execution.setVariable("DCVFMR_serviceId", serviceId)
+                String vnfType = rollbackData.get("VFMODULE", "vnftype")
+                execution.setVariable("DCVFMR_vnfType", vnfType)
+                String vnfName = rollbackData.get("VFMODULE", "vnfname")
+                execution.setVariable("DCVFMR_vnfName", vnfName)
+                String tenantId = rollbackData.get("VFMODULE", "tenantid")
+                execution.setVariable("DCVFMR_tenantId", tenantId)
+                String vfModuleName = rollbackData.get("VFMODULE", "vfmodulename")
+                execution.setVariable("DCVFMR_vfModuleName", vfModuleName)
+                String vfModuleModelName = rollbackData.get("VFMODULE", "vfmodulemodelname")
+                execution.setVariable("DCVFMR_vfModuleModelName", vfModuleModelName)
+                String cloudSiteId = rollbackData.get("VFMODULE", "aiccloudregion")
+                execution.setVariable("DCVFMR_cloudSiteId", cloudSiteId)
+                String cloudOwner = rollbackData.get("VFMODULE", "cloudowner")
+                execution.setVariable("DCVFMR_cloudOwner", cloudOwner)
+                String heatStackId = rollbackData.get("VFMODULE", "heatstackid")
+                execution.setVariable("DCVFMR_heatStackId", heatStackId)
+                String requestId = rollbackData.get("VFMODULE", "msorequestid")
+                execution.setVariable("DCVFMR_requestId", requestId)
+                // Set mso-request-id to request-id for VNF Adapter interface
+                execution.setVariable("mso-request-id", requestId)
+                List createdNetworkPolicyFqdnList = []
+                int i = 0
+                while (i < 100) {
+                    String fqdn = rollbackData.get("VFMODULE", "contrailNetworkPolicyFqdn" + i)
+                    if (fqdn == null) {
+                        break
+                    }
+                    createdNetworkPolicyFqdnList.add(fqdn)
+                    logger.debug("got fqdn # " + i + ": " + fqdn)
+                    i = i + 1
+
+                }
+
+                execution.setVariable("DCVFMR_createdNetworkPolicyFqdnList", createdNetworkPolicyFqdnList)
+                String oamManagementV4Address = rollbackData.get("VFMODULE", "oamManagementV4Address")
+                execution.setVariable("DCVFMR_oamManagementV4Address", oamManagementV4Address)
+                String oamManagementV6Address = rollbackData.get("VFMODULE", "oamManagementV6Address")
+                execution.setVariable("DCVFMR_oamManagementV6Address", oamManagementV6Address)
+                //String serviceInstanceId = rollbackData.get("VFMODULE", "msoserviceinstanceid")
+                //execution.setVariable("DCVFMR_serviceInstanceId", serviceInstanceId)
+                execution.setVariable("DCVFMR_rollbackPrepareUpdateVfModule", rollbackData.get("VFMODULE", "rollbackPrepareUpdateVfModule"))
+                execution.setVariable("DCVFMR_rollbackUpdateAAIVfModule", rollbackData.get("VFMODULE", "rollbackUpdateAAIVfModule"))
+                execution.setVariable("DCVFMR_rollbackVnfAdapterCreate", rollbackData.get("VFMODULE", "rollbackVnfAdapterCreate"))
+                execution.setVariable("DCVFMR_rollbackSDNCRequestAssign", rollbackData.get("VFMODULE", "rollbackSDNCRequestAssign"))
+                execution.setVariable("DCVFMR_rollbackSDNCRequestActivate", rollbackData.get("VFMODULE", "rollbackSDNCRequestActivate"))
+                execution.setVariable("DCVFMR_rollbackCreateAAIVfModule", rollbackData.get("VFMODULE", "rollbackCreateAAIVfModule"))
+                execution.setVariable("DCVFMR_rollbackCreateNetworkPoliciesAAI", rollbackData.get("VFMODULE", "rollbackCreateNetworkPoliciesAAI"))
+                execution.setVariable("DCVFMR_rollbackUpdateVnfAAI", rollbackData.get("VFMODULE", "rollbackUpdateVnfAAI"))
+
+                // formulate the request for PrepareUpdateAAIVfModule
+                String request = """<PrepareUpdateAAIVfModuleRequest>
                                                                        <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                        <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                                        <orchestration-status>pending-delete</orchestration-status>
                                                                </PrepareUpdateAAIVfModuleRequest>""" as String
-                       logger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
-                       execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
-               } else {
-                       execution.setVariable("skipRollback", true)
-               }
-
-               if (execution.getVariable("disableRollback").equals("true" )) {
-                       execution.setVariable("skipRollback", true)
-               }
-
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception ex){
-                       def msg = "Exception in DoCreateVfModuleRollback preProcessRequest " + ex.getMessage()
-                       logger.debug(msg)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
-               }
-       }
-
-       // build a SDNC vnf-topology-operation request for the specified action
-       // (note: the action passed is expected to be 'changedelete' or 'delete')
-       public void prepSDNCAdapterRequest(DelegateExecution execution) {
-
-               String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
-
-               String uuid = execution.getVariable('testReqId') // for junits
-               if(uuid==null){
-                       uuid = execution.getVariable("DCVFMR_requestId") + "-" +        System.currentTimeMillis()
-               }
-
-               def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
-
-               String source = execution.getVariable("DCVFMR_source")
-               String serviceId = execution.getVariable("DCVFMR_serviceId")
-               String vnfId = execution.getVariable("DCVFMR_vnfId")
-               String vnfType = execution.getVariable("DCVFMR_vnfType")
-               String vnfName = execution.getVariable("DCVFMR_vnfName")
-               String tenantId = execution.getVariable("DCVFMR_tenantId")
-               String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
-               String vfModuleName = execution.getVariable("DCVFMR_vfModuleName")
-               String vfModuleModelName = execution.getVariable("DCVFMR_vfModuleModelName")
-               String cloudSiteId = execution.getVariable("DCVFMR_cloudSiteId")
-               String requestId = execution.getVariable("DCVFMR_requestId")
-
-               String serviceInstanceIdToSdnc = ""
-               if (srvInstId != null && !srvInstId.isEmpty()) {
-                       serviceInstanceIdToSdnc = srvInstId
-               } else {
-                   serviceInstanceIdToSdnc = vfModuleId
-               }
-
-               def doSDNCActivateRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestActivate")
-               def doSDNCAssignRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestAssign")
-
-               def action = ""
-               def requestAction = ""
-
-               if (doSDNCActivateRollback.equals("true")) {
-                       action = "delete"
-                       requestAction = "DisconnectVNFRequest"
-               }
-               else if (doSDNCAssignRollback.equals("true")) {
-                       action = "rollback"
-                       requestAction = "VNFActivateRequest"
-               }
-               else
-                       return
-
-
-               String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+                logger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
+                execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
+            } else {
+                execution.setVariable("skipRollback", true)
+            }
+
+            if (execution.getVariable("disableRollback").equals("true" )) {
+                execution.setVariable("skipRollback", true)
+            }
+
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex){
+            def msg = "Exception in DoCreateVfModuleRollback preProcessRequest " + ex.getMessage()
+            logger.debug(msg)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
+        }
+    }
+
+    // build a SDNC vnf-topology-operation request for the specified action
+    // (note: the action passed is expected to be 'changedelete' or 'delete')
+    public void prepSDNCAdapterRequest(DelegateExecution execution) {
+
+        String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
+
+        String uuid = execution.getVariable('testReqId') // for junits
+        if(uuid==null){
+            uuid = execution.getVariable("DCVFMR_requestId") + "-" +   System.currentTimeMillis()
+        }
+
+        def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+
+        String source = execution.getVariable("DCVFMR_source")
+        String serviceId = execution.getVariable("DCVFMR_serviceId")
+        String vnfId = execution.getVariable("DCVFMR_vnfId")
+        String vnfType = execution.getVariable("DCVFMR_vnfType")
+        String vnfName = execution.getVariable("DCVFMR_vnfName")
+        String tenantId = execution.getVariable("DCVFMR_tenantId")
+        String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+        String vfModuleName = execution.getVariable("DCVFMR_vfModuleName")
+        String vfModuleModelName = execution.getVariable("DCVFMR_vfModuleModelName")
+        String cloudSiteId = execution.getVariable("DCVFMR_cloudSiteId")
+        String requestId = execution.getVariable("DCVFMR_requestId")
+
+        String serviceInstanceIdToSdnc = ""
+        if (srvInstId != null && !srvInstId.isEmpty()) {
+            serviceInstanceIdToSdnc = srvInstId
+        } else {
+            serviceInstanceIdToSdnc = vfModuleId
+        }
+
+        def doSDNCActivateRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestActivate")
+        def doSDNCAssignRollback = execution.getVariable("DCVFMR_rollbackSDNCRequestAssign")
+
+        def action = ""
+        def requestAction = ""
+
+        if (doSDNCActivateRollback.equals("true")) {
+            action = "delete"
+            requestAction = "DisconnectVNFRequest"
+        }
+        else if (doSDNCAssignRollback.equals("true")) {
+            action = "rollback"
+            requestAction = "VNFActivateRequest"
+        }
+        else
+            return
+
+
+        String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
                                                                                                        xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
                                                                                                        xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
                                                      <sdncadapter:RequestHeader>
@@ -245,76 +245,76 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                                                      </sdncadapterworkflow:SDNCRequestData>
                                                   </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
 
-               logger.debug("sdncAdapterWorkflowRequest: " + request)
-               execution.setVariable("sdncAdapterWorkflowRequest", request)
-       }
-
-       public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
-
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED preProcessSDNCDeactivateRequest")
-
-               def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
-
-               try{
-                       //Build SDNC Request
-
-                       String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
-
-                       deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
-                       execution.setVariable("DCVFMR_deactivateSDNCRequest", deactivateSDNCRequest)
-                       logger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
-
-               }catch(Exception e){
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       "Exception Occured Processing preProcessSDNCDeactivateRequest.", "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
-               }
-               logger.trace("COMPLETED preProcessSDNCDeactivateRequest")
-       }
-
-       public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
-                       'execution=' + execution.getId() +
-                       ')'
-               def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED preProcessSDNCUnassignRequest Process")
-               try{
-                       String serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
-
-                       String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
-
-                       execution.setVariable("DCVFMR_unassignSDNCRequest", unassignSDNCRequest)
-                       logger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
-
-               }catch(Exception e){
-                       logger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
-               }
-               logger.trace("COMPLETED  preProcessSDNCUnassignRequest Process")
-       }
-
-       public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
-
-                       String uuid = execution.getVariable('testReqId') // for junits
-                       if(uuid==null){
-                               uuid = execution.getVariable("DCVFMR_requestId") + "-" +        System.currentTimeMillis()
-                       }
-                       def callbackURL = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
-                       def requestId = execution.getVariable("DCVFMR_requestId")
-                       def serviceId = execution.getVariable("DCVFMR_serviceId")
-                       def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
-                       def vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
-                       def source = execution.getVariable("DCVFMR_source")
-                       def vnfId = execution.getVariable("DCVFMR_vnfId")
-
-                       def sdncVersion = execution.getVariable("sdncVersion")
-
-                       String sdncRequest =
-                       """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+        logger.debug("sdncAdapterWorkflowRequest: " + request)
+        execution.setVariable("sdncAdapterWorkflowRequest", request)
+    }
+
+    public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED preProcessSDNCDeactivateRequest")
+
+        def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+
+        try{
+            //Build SDNC Request
+
+            String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+            deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+            execution.setVariable("DCVFMR_deactivateSDNCRequest", deactivateSDNCRequest)
+            logger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+        }catch(Exception e){
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    "Exception Occured Processing preProcessSDNCDeactivateRequest.", "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+        }
+        logger.trace("COMPLETED preProcessSDNCDeactivateRequest")
+    }
+
+    public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+                'execution=' + execution.getId() +
+                ')'
+        def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED preProcessSDNCUnassignRequest Process")
+        try{
+            String serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+
+            String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+            execution.setVariable("DCVFMR_unassignSDNCRequest", unassignSDNCRequest)
+            logger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+
+        }catch(Exception e){
+            logger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+        }
+        logger.trace("COMPLETED  preProcessSDNCUnassignRequest Process")
+    }
+
+    public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+
+        String uuid = execution.getVariable('testReqId') // for junits
+        if(uuid==null){
+            uuid = execution.getVariable("DCVFMR_requestId") + "-" +   System.currentTimeMillis()
+        }
+        def callbackURL = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+        def requestId = execution.getVariable("DCVFMR_requestId")
+        def serviceId = execution.getVariable("DCVFMR_serviceId")
+        def serviceInstanceId = execution.getVariable("DCVFMR_serviceInstanceId")
+        def vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+        def source = execution.getVariable("DCVFMR_source")
+        def vnfId = execution.getVariable("DCVFMR_vnfId")
+
+        def sdncVersion = execution.getVariable("sdncVersion")
+
+        String sdncRequest =
+                """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
                                                                                                        xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
                                                                                                        xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
           <sdncadapter:RequestHeader>
@@ -351,32 +351,32 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
        </sdncadapterworkflow:SDNCRequestData>
        </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
 
-               logger.debug("sdncRequest:  " + sdncRequest)
-               return sdncRequest
-       }
-
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing VnfAdapterDeleteV1 request
-       public void prepVNFAdapterRequest(DelegateExecution execution) {
-
-               String requestId = UUID.randomUUID().toString()
-               String origRequestId = execution.getVariable("DCVFMR_requestId")
-               String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
-               String aicCloudRegion = execution.getVariable("DCVFMR_cloudSiteId")
-               String cloudOwner = execution.getVariable("DCVFMR_cloudOwner")
-               String vnfId = execution.getVariable("DCVFMR_vnfId")
-               String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
-               String vfModuleStackId = execution.getVariable("DCVFMR_heatStackId")
-               String tenantId = execution.getVariable("DCVFMR_tenantId")
-               def messageId = execution.getVariable('mso-request-id') + '-' +
-                       System.currentTimeMillis()
-               def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
-               def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
-               if ('true'.equals(useQualifiedHostName)) {
-                       notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
-               }
-
-               String request = """
+        logger.debug("sdncRequest:  " + sdncRequest)
+        return sdncRequest
+    }
+
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing VnfAdapterDeleteV1 request
+    public void prepVNFAdapterRequest(DelegateExecution execution) {
+
+        String requestId = UUID.randomUUID().toString()
+        String origRequestId = execution.getVariable("DCVFMR_requestId")
+        String srvInstId = execution.getVariable("DCVFMR_serviceInstanceId")
+        String aicCloudRegion = execution.getVariable("DCVFMR_cloudSiteId")
+        String cloudOwner = execution.getVariable("DCVFMR_cloudOwner")
+        String vnfId = execution.getVariable("DCVFMR_vnfId")
+        String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+        String vfModuleStackId = execution.getVariable("DCVFMR_heatStackId")
+        String tenantId = execution.getVariable("DCVFMR_tenantId")
+        def messageId = execution.getVariable('mso-request-id') + '-' +
+                System.currentTimeMillis()
+        def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+        def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+        if ('true'.equals(useQualifiedHostName)) {
+            notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+        }
+
+        String request = """
                        <deleteVfModuleRequest>
                            <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
                            <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
@@ -394,117 +394,116 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                        </deleteVfModuleRequest>
                        """ as String
 
-               logger.debug("vnfAdapterRestV1Request: " + request)
-               execution.setVariable("vnfAdapterRestV1Request", request)
-       }
+        execution.setVariable("vnfAdapterTaskRequest", request)
+    }
 
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing UpdateAAIVfModuleRequest request
-       public void prepUpdateAAIVfModule(DelegateExecution execution) {
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing UpdateAAIVfModuleRequest request
+    public void prepUpdateAAIVfModule(DelegateExecution execution) {
 
-               String vnfId = execution.getVariable("DCVFMR_vnfId")
-               String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
-               // formulate the request for UpdateAAIVfModule
-               String request = """<UpdateAAIVfModuleRequest>
+        String vnfId = execution.getVariable("DCVFMR_vnfId")
+        String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+        // formulate the request for UpdateAAIVfModule
+        String request = """<UpdateAAIVfModuleRequest>
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                                <heat-stack-id>DELETE</heat-stack-id>
                                                                <orchestration-status>deleted</orchestration-status>
                                                        </UpdateAAIVfModuleRequest>""" as String
-               logger.debug("UpdateAAIVfModuleRequest :" + request)
-               execution.setVariable("UpdateAAIVfModuleRequest", request)
-       }
-
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing UpdateAAIVfModuleRequest request
-       public void prepUpdateAAIVfModuleToAssigned(DelegateExecution execution) {
-
-               String vnfId = execution.getVariable("DCVFMR_vnfId")
-               String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
-               // formulate the request for UpdateAAIVfModule
-               String request = """<UpdateAAIVfModuleRequest>
+        logger.debug("UpdateAAIVfModuleRequest :" + request)
+        execution.setVariable("UpdateAAIVfModuleRequest", request)
+    }
+
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing UpdateAAIVfModuleRequest request
+    public void prepUpdateAAIVfModuleToAssigned(DelegateExecution execution) {
+
+        String vnfId = execution.getVariable("DCVFMR_vnfId")
+        String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+        // formulate the request for UpdateAAIVfModule
+        String request = """<UpdateAAIVfModuleRequest>
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                                <heat-stack-id></heat-stack-id>
                                                                <orchestration-status>Assigned</orchestration-status>
                                                        </UpdateAAIVfModuleRequest>""" as String
-               logger.debug("UpdateAAIVfModuleRequest :" + request)
-               execution.setVariable("UpdateAAIVfModuleRequest", request)
-       }
-
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing DeleteAAIVfModuleRequest request
-       public void prepDeleteAAIVfModule(DelegateExecution execution) {
-
-               String vnfId = execution.getVariable("DCVFMR_vnfId")
-               String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
-               // formulate the request for UpdateAAIVfModule
-               String request = """<DeleteAAIVfModuleRequest>
+        logger.debug("UpdateAAIVfModuleRequest :" + request)
+        execution.setVariable("UpdateAAIVfModuleRequest", request)
+    }
+
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing DeleteAAIVfModuleRequest request
+    public void prepDeleteAAIVfModule(DelegateExecution execution) {
+
+        String vnfId = execution.getVariable("DCVFMR_vnfId")
+        String vfModuleId = execution.getVariable("DCVFMR_vfModuleId")
+        // formulate the request for UpdateAAIVfModule
+        String request = """<DeleteAAIVfModuleRequest>
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                        </DeleteAAIVfModuleRequest>""" as String
-               logger.debug("DeleteAAIVfModuleRequest :" + request)
-               execution.setVariable("DeleteAAIVfModuleRequest", request)
-       }
+        logger.debug("DeleteAAIVfModuleRequest :" + request)
+        execution.setVariable("DeleteAAIVfModuleRequest", request)
+    }
 
-       // generates a WorkflowException if
-       //              -
-       public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
+    // generates a WorkflowException if
+    //         -
+    public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
 
-               logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                               "AAI error occurred deleting the Generic Vnf" + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"),
-                               "BPMN", ErrorCode.UnknownError.getValue());
-               String processKey = getProcessKey(execution);
-               exceptionUtil.buildWorkflowException(execution, 5000, "Failure in DoDeleteVfModule")
+        logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                "AAI error occurred deleting the Generic Vnf" + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"),
+                "BPMN", ErrorCode.UnknownError.getValue());
+        String processKey = getProcessKey(execution);
+        exceptionUtil.buildWorkflowException(execution, 5000, "Failure in DoDeleteVfModule")
 
-       }
+    }
 
-       public void sdncValidateResponse(DelegateExecution execution, String response){
+    public void sdncValidateResponse(DelegateExecution execution, String response){
 
-               execution.setVariable("prefix",Prefix)
+        execution.setVariable("prefix",Prefix)
 
-               WorkflowException workflowException = execution.getVariable("WorkflowException")
-               boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+        WorkflowException workflowException = execution.getVariable("WorkflowException")
+        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
-               sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+        SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
-               if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
-                       logger.debug("Successfully Validated SDNC Response")
-               }else{
-                       throw new BpmnError("MSOWorkflowException")
-               }
-       }
+        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+            logger.debug("Successfully Validated SDNC Response")
+        }else{
+            throw new BpmnError("MSOWorkflowException")
+        }
+    }
 
-       public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
-               'execution=' + execution.getId() +
-               ')'
-               def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED deleteNetworkPoliciesFromAAI")
+    public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+                'execution=' + execution.getId() +
+                ')'
+        def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED deleteNetworkPoliciesFromAAI")
 
-               try {
-                       // get variables
-                       List fqdnList = execution.getVariable(Prefix + "createdNetworkPolicyFqdnList")
-                       if (fqdnList == null) {
-                               logger.debug("No network policies to delete")
-                               return
-                       }
-                       int fqdnCount = fqdnList.size()
+        try {
+            // get variables
+            List fqdnList = execution.getVariable(Prefix + "createdNetworkPolicyFqdnList")
+            if (fqdnList == null) {
+                logger.debug("No network policies to delete")
+                return
+            }
+            int fqdnCount = fqdnList.size()
 
-                       execution.setVariable(Prefix + "networkPolicyFqdnCount", fqdnCount)
-                       logger.debug("networkPolicyFqdnCount - " + fqdnCount)
+            execution.setVariable(Prefix + "networkPolicyFqdnCount", fqdnCount)
+            logger.debug("networkPolicyFqdnCount - " + fqdnCount)
 
-                       AaiUtil aaiUriUtil = new AaiUtil(this)
+            AaiUtil aaiUriUtil = new AaiUtil(this)
 
-                       if (fqdnCount > 0) {
-                               // AII loop call over contrail network policy fqdn list
-                               for (i in 0..fqdnCount-1) {
+            if (fqdnCount > 0) {
+                // AII loop call over contrail network policy fqdn list
+                for (i in 0..fqdnCount-1) {
 
-                                       int counting = i+1
-                                       String fqdn = fqdnList[i]
+                    int counting = i+1
+                    String fqdn = fqdnList[i]
 
                     try {
                         // Query AAI for this network policy FQDN
@@ -517,10 +516,10 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                             NetworkPolicy networkPolicy = networkPolicies.get().getNetworkPolicy().get(0)
 
                             try{
-                            AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId())
-                            getAAIClient().delete(delUri)
-                            execution.setVariable(Prefix + "aaiDeleteNetworkPolicyReturnCode", 200)
-                            logger.debug("AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + 200)
+                                AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId())
+                                getAAIClient().delete(delUri)
+                                execution.setVariable(Prefix + "aaiDeleteNetworkPolicyReturnCode", 200)
+                                logger.debug("AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + 200)
                                 logger.debug("The return code from deleting network policy is: " + 200)
                                 // This network policy was deleted from AAI successfully
                                 logger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ")
@@ -548,113 +547,113 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                         logger.debug(dataErrorMessage)
                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
                     }
-                               } // end loop
+                } // end loop
 
 
-                       } else {
-                                  logger.debug("No contrail network policies to query/create")
+            } else {
+                logger.debug("No contrail network policies to query/create")
 
-                       }
+            }
 
-               } catch (BpmnError e) {
-                       throw e;
+        } catch (BpmnError e) {
+            throw e;
 
-               } catch (Exception ex) {
-                       String exceptionMessage = "Bpmn error encountered in DoCreateVfModuleRollback flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
-                       logger.debug(exceptionMessage)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
-               }
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in DoCreateVfModuleRollback flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+            logger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
 
-       }
+    }
 
 
-       /**
-        * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
-        *
-        * @param execution The flow's execution instance.
-        */
-       public void preProcessUpdateAAIGenericVnf(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.preProcessUpdateAAIGenericVnf((' +
-                       'execution=' + execution.getId() +
-                       ')'
-               def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-               logger.trace('Entered ' + method)
+    /**
+     * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+     *
+     * @param execution The flow's execution instance.
+     */
+    public void preProcessUpdateAAIGenericVnf(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.preProcessUpdateAAIGenericVnf((' +
+                'execution=' + execution.getId() +
+                ')'
+        def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+        logger.trace('Entered ' + method)
 
-               try {
-                       def vnfId = execution.getVariable('DCVFMR_vnfId')
-                       def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address')
-                       def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address')
-                       def ipv4OamAddressElement = ''
-                       def managementV6AddressElement = ''
+        try {
+            def vnfId = execution.getVariable('DCVFMR_vnfId')
+            def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address')
+            def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address')
+            def ipv4OamAddressElement = ''
+            def managementV6AddressElement = ''
 
-                       if (oamManagementV4Address != null) {
-                               ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>'
-                       }
+            if (oamManagementV4Address != null) {
+                ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>'
+            }
 
-                       if (oamManagementV6Address != null) {
-                               managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>'
-                       }
+            if (oamManagementV6Address != null) {
+                managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>'
+            }
 
 
-                       String updateAAIGenericVnfRequest = """
+            String updateAAIGenericVnfRequest = """
                                        <UpdateAAIGenericVnfRequest>
                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                ${ipv4OamAddressElement}
                                                ${managementV6AddressElement}
                                        </UpdateAAIGenericVnfRequest>
                                """
-                               updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
-                               execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
-                               logger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
-
-
-                       logger.trace('Exited ' + method)
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception e) {
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       'Caught exception in ' + method, "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessUpdateAAIGenericVnf((): ' + e.getMessage())
-               }
-       }
-
-       public void setSuccessfulRollbackStatus (DelegateExecution execution){
-
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED setSuccessfulRollbackStatus")
-
-               try{
-                       // Set rolledBack to true, rollbackError to null
-                       execution.setVariable("rolledBack", true)
-                       execution.setVariable("rollbackError", null)
-
-               }catch(Exception e){
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       "Exception Occured Processing setSuccessfulRollbackStatus.", "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())
-               }
-               logger.trace("COMPLETED setSuccessfulRollbackStatus")
-       }
-
-       public void setFailedRollbackStatus (DelegateExecution execution){
-
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED setFailedRollbackStatus")
-
-               try{
-                       // Set rolledBack to false, rollbackError to actual value, rollbackData to null
-                       execution.setVariable("rolledBack", false)
-                       execution.setVariable("rollbackError", 'Caught exception in DoCreateVfModuleRollback')
-                       execution.setVariable("rollbackData", null)
-
-               }catch(Exception e){
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       "Exception Occured Processing setFailedRollbackStatus.", "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())
-               }
-               logger.trace("COMPLETED setFailedRollbackStatus")
-       }
+            updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+            execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+            logger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+
+
+            logger.trace('Exited ' + method)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception e) {
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    'Caught exception in ' + method, "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in preProcessUpdateAAIGenericVnf((): ' + e.getMessage())
+        }
+    }
+
+    public void setSuccessfulRollbackStatus (DelegateExecution execution){
+
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED setSuccessfulRollbackStatus")
+
+        try{
+            // Set rolledBack to true, rollbackError to null
+            execution.setVariable("rolledBack", true)
+            execution.setVariable("rollbackError", null)
+
+        }catch(Exception e){
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    "Exception Occured Processing setSuccessfulRollbackStatus.", "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())
+        }
+        logger.trace("COMPLETED setSuccessfulRollbackStatus")
+    }
+
+    public void setFailedRollbackStatus (DelegateExecution execution){
+
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED setFailedRollbackStatus")
+
+        try{
+            // Set rolledBack to false, rollbackError to actual value, rollbackData to null
+            execution.setVariable("rolledBack", false)
+            execution.setVariable("rollbackError", 'Caught exception in DoCreateVfModuleRollback')
+            execution.setVariable("rollbackData", null)
+
+        }catch(Exception e){
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    "Exception Occured Processing setFailedRollbackStatus.", "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())
+        }
+        logger.trace("COMPLETED setFailedRollbackStatus")
+    }
 }
index 002e283..e776eaf 100644 (file)
@@ -55,187 +55,185 @@ import org.xml.sax.InputSource
 
 /* Subflow for Delete VF Module. When no DoDeleteVfModuleRequest is specified on input,
  * functions as a building block subflow
-
-* Inputs for building block interface:
-* @param - requestId
-* @param - isDebugLogEnabled
-* @param - vnfId
-* @param - vfModuleId
-* @param - serviceInstanceId
-* @param - vfModuleName O
-* @param - vfModuleModelInfo
-* @param - cloudConfiguration*
-* @param - sdncVersion ("1610")
-* @param - retainResources
-* @param - aLaCarte
-*
-* Outputs:
-* @param - WorkflowException
-*
-*/
+ * Inputs for building block interface:
+ * @param - requestId
+ * @param - isDebugLogEnabled
+ * @param - vnfId
+ * @param - vfModuleId
+ * @param - serviceInstanceId
+ * @param - vfModuleName O
+ * @param - vfModuleModelInfo
+ * @param - cloudConfiguration*
+ * @param - sdncVersion ("1610")
+ * @param - retainResources
+ * @param - aLaCarte
+ *
+ * Outputs:
+ * @param - WorkflowException
+ *
+ */
 public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
     private static final Logger logger = LoggerFactory.getLogger( DoDeleteVfModule.class);
 
-       def Prefix="DoDVfMod_"
-
-       ExceptionUtil exceptionUtil = new ExceptionUtil()
-       JsonUtils jsonUtil = new JsonUtils()
-
-       public void initProcessVariables(DelegateExecution execution) {
-               execution.setVariable("prefix",Prefix)
-               execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", null)
-               execution.setVariable("DoDVfMod_oamManagementV4Address", null)
-               execution.setVariable("DoDVfMod_oamManagementV6Address", null)
-
-       }
-
-       // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
-       // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
-       public void preProcessRequest(DelegateExecution execution) {
-
-               initProcessVariables(execution)
-
-               try {
-                       def xml = execution.getVariable("DoDeleteVfModuleRequest")
-                       String vnfId = ""
-                       String vfModuleId = ""
-
-                       if (xml == null || xml.isEmpty()) {
-                               // Building Block-type request
-
-                               // Set mso-request-id to request-id for VNF Adapter interface
-                               String requestId = execution.getVariable("requestId")
-                               execution.setVariable("mso-request-id", requestId)
-
-                               String cloudConfiguration = execution.getVariable("cloudConfiguration")
-                               String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
-                               String tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId")
-                               execution.setVariable("tenantId", tenantId)
-                               String cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
-                               execution.setVariable("cloudSiteId", cloudSiteId)
-                               String cloudOwner = jsonUtil.getJsonValue(cloudConfiguration, "cloudOwner")
-                               execution.setVariable("cloudOwner", cloudOwner)
-                               // Source is HARDCODED
-                               String source = "VID"
-                               execution.setVariable("source", source)
-                               // SrvInstId is hardcoded to empty
-                               execution.setVariable("srvInstId", "")
-                               // ServiceId is hardcoded to empty
-                               execution.setVariable("serviceId", "")
-                               String serviceInstanceId = execution.getVariable("serviceInstanceId")
-                               vnfId = execution.getVariable("vnfId")
-                               vfModuleId = execution.getVariable("vfModuleId")
-                               if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
-                                       execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
-                               }
-                               else {
-                                       execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
-                               }
-                               //vfModuleModelName
-                               def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
-                               execution.setVariable("vfModuleModelName", vfModuleModelName)
-                               // retainResources
-                               def retainResources = execution.getVariable("retainResources")
-                               if (retainResources == null) {
-                                       retainResources  = false
-                               }
-                               execution.setVariable("retainResources", retainResources)
-                       }
-                       else {
-
-                               logger.debug("DoDeleteVfModule Request: " + xml)
-
-                               logger.debug("input request xml: " + xml)
-
-                               vnfId = utils.getNodeText(xml,"vnf-id")
-                               execution.setVariable("vnfId", vnfId)
-                               vfModuleId = utils.getNodeText(xml,"vf-module-id")
-                               execution.setVariable("vfModuleId", vfModuleId)
-                               def srvInstId = execution.getVariable("mso-service-instance-id")
-                               execution.setVariable("srvInstId", srvInstId)
-                               String requestId = ""
-                               try {
-                                       requestId = execution.getVariable("mso-request-id")
-                               } catch (Exception ex) {
-                                       requestId = utils.getNodeText(xml, "request-id")
-                               }
-                               execution.setVariable("requestId", requestId)
-                               String source = utils.getNodeText(xml, "source")
-                               execution.setVariable("source", source)
-                               String serviceId = utils.getNodeText(xml, "service-id")
-                               execution.setVariable("serviceId", serviceId)
-                               String tenantId = utils.getNodeText(xml, "tenant-id")
-                               execution.setVariable("tenantId", tenantId)
-
-                               String serviceInstanceIdToSdnc = ""
-                               if (xml.contains("service-instance-id")) {
-                                       serviceInstanceIdToSdnc = utils.getNodeText(xml, "service-instance-id")
-                               } else {
-                                       serviceInstanceIdToSdnc = vfModuleId
-                               }
-                               execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceIdToSdnc)
-                               String vfModuleName = utils.getNodeText(xml, "vf-module-name")
-                               execution.setVariable("vfModuleName", vfModuleName)
-                               String vfModuleModelName = utils.getNodeText(xml, "vf-module-model-name")
-                               execution.setVariable("vfModuleModelName", vfModuleModelName)
-                               String cloudSiteId = utils.getNodeText(xml, "aic-cloud-region")
-                               execution.setVariable("cloudSiteId", cloudSiteId)
-                               String cloudOwner = utils.getNodeText(xml, "cloud-owner")
-                               execution.setVariable("cloudOwner", cloudOwner)
-                       }
-
-                       // formulate the request for PrepareUpdateAAIVfModule
-                       String request = """<PrepareUpdateAAIVfModuleRequest>
+    def Prefix="DoDVfMod_"
+
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+
+    public void initProcessVariables(DelegateExecution execution) {
+        execution.setVariable("prefix",Prefix)
+        execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", null)
+        execution.setVariable("DoDVfMod_oamManagementV4Address", null)
+        execution.setVariable("DoDVfMod_oamManagementV6Address", null)
+    }
+
+    // parse the incoming DELETE_VF_MODULE request for the Generic Vnf and Vf Module Ids
+    // and formulate the outgoing request for PrepareUpdateAAIVfModuleRequest
+    public void preProcessRequest(DelegateExecution execution) {
+
+        initProcessVariables(execution)
+
+        try {
+            def xml = execution.getVariable("DoDeleteVfModuleRequest")
+            String vnfId = ""
+            String vfModuleId = ""
+
+            if (xml == null || xml.isEmpty()) {
+                // Building Block-type request
+
+                // Set mso-request-id to request-id for VNF Adapter interface
+                String requestId = execution.getVariable("requestId")
+                execution.setVariable("mso-request-id", requestId)
+
+                String cloudConfiguration = execution.getVariable("cloudConfiguration")
+                String vfModuleModelInfo = execution.getVariable("vfModuleModelInfo")
+                String tenantId = jsonUtil.getJsonValue(cloudConfiguration, "tenantId")
+                execution.setVariable("tenantId", tenantId)
+                String cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
+                execution.setVariable("cloudSiteId", cloudSiteId)
+                String cloudOwner = jsonUtil.getJsonValue(cloudConfiguration, "cloudOwner")
+                execution.setVariable("cloudOwner", cloudOwner)
+                // Source is HARDCODED
+                String source = "VID"
+                execution.setVariable("source", source)
+                // SrvInstId is hardcoded to empty
+                execution.setVariable("srvInstId", "")
+                // ServiceId is hardcoded to empty
+                execution.setVariable("serviceId", "")
+                String serviceInstanceId = execution.getVariable("serviceInstanceId")
+                vnfId = execution.getVariable("vnfId")
+                vfModuleId = execution.getVariable("vfModuleId")
+                if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+                    execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
+                }
+                else {
+                    execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
+                }
+                //vfModuleModelName
+                def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
+                execution.setVariable("vfModuleModelName", vfModuleModelName)
+                // retainResources
+                def retainResources = execution.getVariable("retainResources")
+                if (retainResources == null) {
+                    retainResources  = false
+                }
+                execution.setVariable("retainResources", retainResources)
+            }
+            else {
+
+                logger.debug("DoDeleteVfModule Request: " + xml)
+
+                logger.debug("input request xml: " + xml)
+
+                vnfId = utils.getNodeText(xml,"vnf-id")
+                execution.setVariable("vnfId", vnfId)
+                vfModuleId = utils.getNodeText(xml,"vf-module-id")
+                execution.setVariable("vfModuleId", vfModuleId)
+                def srvInstId = execution.getVariable("mso-service-instance-id")
+                execution.setVariable("srvInstId", srvInstId)
+                String requestId = ""
+                try {
+                    requestId = execution.getVariable("mso-request-id")
+                } catch (Exception ex) {
+                    requestId = utils.getNodeText(xml, "request-id")
+                }
+                execution.setVariable("requestId", requestId)
+                String source = utils.getNodeText(xml, "source")
+                execution.setVariable("source", source)
+                String serviceId = utils.getNodeText(xml, "service-id")
+                execution.setVariable("serviceId", serviceId)
+                String tenantId = utils.getNodeText(xml, "tenant-id")
+                execution.setVariable("tenantId", tenantId)
+
+                String serviceInstanceIdToSdnc = ""
+                if (xml.contains("service-instance-id")) {
+                    serviceInstanceIdToSdnc = utils.getNodeText(xml, "service-instance-id")
+                } else {
+                    serviceInstanceIdToSdnc = vfModuleId
+                }
+                execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceIdToSdnc)
+                String vfModuleName = utils.getNodeText(xml, "vf-module-name")
+                execution.setVariable("vfModuleName", vfModuleName)
+                String vfModuleModelName = utils.getNodeText(xml, "vf-module-model-name")
+                execution.setVariable("vfModuleModelName", vfModuleModelName)
+                String cloudSiteId = utils.getNodeText(xml, "aic-cloud-region")
+                execution.setVariable("cloudSiteId", cloudSiteId)
+                String cloudOwner = utils.getNodeText(xml, "cloud-owner")
+                execution.setVariable("cloudOwner", cloudOwner)
+            }
+
+            // formulate the request for PrepareUpdateAAIVfModule
+            String request = """<PrepareUpdateAAIVfModuleRequest>
                                                                        <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                        <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                                        <orchestration-status>pending-delete</orchestration-status>
                                                                </PrepareUpdateAAIVfModuleRequest>""" as String
-                       logger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
-                       logger.debug("UpdateAAIVfModule Request: " + request)
-                       execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
-                       execution.setVariable("vfModuleFromAAI", null)
-               }catch(BpmnError b){
-                       throw b
-               }catch(Exception e){
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
-               }
-       }
-
-       // build a SDNC vnf-topology-operation request for the specified action
-       // (note: the action passed is expected to be 'changedelete' or 'delete')
-       public void prepSDNCAdapterRequest(DelegateExecution execution, String action) {
-
-
-               String uuid = execution.getVariable('testReqId') // for junits
-               if(uuid==null){
-                       uuid = execution.getVariable("requestId") + "-" +       System.currentTimeMillis()
-               }
-
-               def srvInstId = execution.getVariable("srvInstId")
-               def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
-               String requestId = execution.getVariable("requestId")
-               String source = execution.getVariable("source")
-               String serviceId = execution.getVariable("serviceId")
-               String vnfId = execution.getVariable("vnfId")
-               String tenantId = execution.getVariable("tenantId")
-               String vfModuleId = execution.getVariable("vfModuleId")
-               String serviceInstanceIdToSdnc = execution.getVariable(Prefix + "serviceInstanceIdToSdnc")
-               String vfModuleName = execution.getVariable("vfModuleName")
-               // Get vfModuleName from AAI response if it was not specified on the request
-               if (vfModuleName == null || vfModuleName.isEmpty()) {
-                       if (execution.getVariable("vfModuleFromAAI") != null) {
-                               org.onap.aai.domain.yang.VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI")
-                               vfModuleName = vfModuleFromAAI.getVfModuleName()
-                       }
-               }
-               String vfModuleModelName = execution.getVariable("vfModuleModelName")
-               String cloudSiteId = execution.getVariable("cloudSiteId")
-               boolean retainResources = execution.getVariable("retainResources")
-               String requestSubActionString = ""
-               if (retainResources) {
-                       requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>"
-               }
-               String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+            logger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
+            logger.debug("UpdateAAIVfModule Request: " + request)
+            execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
+            execution.setVariable("vfModuleFromAAI", null)
+        }catch(BpmnError b){
+            throw b
+        }catch(Exception e){
+            exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
+        }
+    }
+
+    // build a SDNC vnf-topology-operation request for the specified action
+    // (note: the action passed is expected to be 'changedelete' or 'delete')
+    public void prepSDNCAdapterRequest(DelegateExecution execution, String action) {
+
+
+        String uuid = execution.getVariable('testReqId') // for junits
+        if(uuid==null){
+            uuid = execution.getVariable("requestId") + "-" +          System.currentTimeMillis()
+        }
+
+        def srvInstId = execution.getVariable("srvInstId")
+        def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+        String requestId = execution.getVariable("requestId")
+        String source = execution.getVariable("source")
+        String serviceId = execution.getVariable("serviceId")
+        String vnfId = execution.getVariable("vnfId")
+        String tenantId = execution.getVariable("tenantId")
+        String vfModuleId = execution.getVariable("vfModuleId")
+        String serviceInstanceIdToSdnc = execution.getVariable(Prefix + "serviceInstanceIdToSdnc")
+        String vfModuleName = execution.getVariable("vfModuleName")
+        // Get vfModuleName from AAI response if it was not specified on the request
+        if (vfModuleName == null || vfModuleName.isEmpty()) {
+            if (execution.getVariable("vfModuleFromAAI") != null) {
+                org.onap.aai.domain.yang.VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI")
+                vfModuleName = vfModuleFromAAI.getVfModuleName()
+            }
+        }
+        String vfModuleModelName = execution.getVariable("vfModuleModelName")
+        String cloudSiteId = execution.getVariable("cloudSiteId")
+        boolean retainResources = execution.getVariable("retainResources")
+        String requestSubActionString = ""
+        if (retainResources) {
+            requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>"
+        }
+        String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
                                                                                                        xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
                                                                                                        xmlns:sdncadapter="http://org.onap/workflow/sdnc/adapter/schema/v1">
                                                      <sdncadapter:RequestHeader>
@@ -274,33 +272,33 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                                      </sdncadapterworkflow:SDNCRequestData>
                                                   </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
 
-               logger.debug("sdncAdapterWorkflowRequest: " + request)
-               logger.debug("DoDeleteVfModule - SDNCAdapterWorkflowRequest: " + request)
-               execution.setVariable("sdncAdapterWorkflowRequest", request)
-       }
-
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing VnfAdapterDeleteV1 request
-       public void prepVNFAdapterRequest(DelegateExecution execution) {
-
-               def requestId = UUID.randomUUID().toString()
-               def origRequestId = execution.getVariable('requestId')
-               def srvInstId = execution.getVariable("serviceInstanceId")
-               def aicCloudRegion = execution.getVariable("cloudSiteId")
-               def cloudOwner = execution.getVariable("cloudOwner")
-               def vnfId = execution.getVariable("vnfId")
-               def vfModuleId = execution.getVariable("vfModuleId")
-               def vfModuleStackId = execution.getVariable('DoDVfMod_heatStackId')
-               def tenantId = execution.getVariable("tenantId")
-               def messageId = execution.getVariable('requestId') + '-' +
-                       System.currentTimeMillis()
-               def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
-               def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
-               if ('true'.equals(useQualifiedHostName)) {
-                       notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
-               }
-
-               String request = """
+        logger.debug("sdncAdapterWorkflowRequest: " + request)
+        logger.debug("DoDeleteVfModule - SDNCAdapterWorkflowRequest: " + request)
+        execution.setVariable("sdncAdapterWorkflowRequest", request)
+    }
+
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing VnfAdapterDeleteV1 request
+    public void prepVNFAdapterRequest(DelegateExecution execution) {
+
+        def requestId = UUID.randomUUID().toString()
+        def origRequestId = execution.getVariable('requestId')
+        def srvInstId = execution.getVariable("serviceInstanceId")
+        def aicCloudRegion = execution.getVariable("cloudSiteId")
+        def cloudOwner = execution.getVariable("cloudOwner")
+        def vnfId = execution.getVariable("vnfId")
+        def vfModuleId = execution.getVariable("vfModuleId")
+        def vfModuleStackId = execution.getVariable('DoDVfMod_heatStackId')
+        def tenantId = execution.getVariable("tenantId")
+        def messageId = execution.getVariable('requestId') + '-' +
+                System.currentTimeMillis()
+        def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+        def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+        if ('true'.equals(useQualifiedHostName)) {
+            notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+        }
+
+        String request = """
                        <deleteVfModuleRequest>
                            <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
                            <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
@@ -318,303 +316,301 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                        </deleteVfModuleRequest>
                        """ as String
 
-               logger.debug("vnfAdapterRestV1Request: " + request)
-               logger.debug("deleteVfModuleRequest: " + request)
-               execution.setVariable("vnfAdapterRestV1Request", request)
-       }
+        logger.debug("deleteVfModuleRequest: " + request)
+        execution.setVariable("vnfAdapterTaskRequest", request)
+    }
 
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing UpdateAAIVfModuleRequest request
-       public void prepUpdateAAIVfModule(DelegateExecution execution) {
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing UpdateAAIVfModuleRequest request
+    public void prepUpdateAAIVfModule(DelegateExecution execution) {
 
-               def vnfId = execution.getVariable("vnfId")
-               def vfModuleId = execution.getVariable("vfModuleId")
-               // formulate the request for UpdateAAIVfModule
-               String request = """<UpdateAAIVfModuleRequest>
+        def vnfId = execution.getVariable("vnfId")
+        def vfModuleId = execution.getVariable("vfModuleId")
+        // formulate the request for UpdateAAIVfModule
+        String request = """<UpdateAAIVfModuleRequest>
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                                <heat-stack-id>DELETE</heat-stack-id>
                                                                <orchestration-status>deleted</orchestration-status>
                                                        </UpdateAAIVfModuleRequest>""" as String
-               logger.debug("UpdateAAIVfModuleRequest :" + request)
-               logger.debug("UpdateAAIVfModuleRequest: " + request)
-               execution.setVariable("UpdateAAIVfModuleRequest", request)
-       }
+        logger.debug("UpdateAAIVfModuleRequest: " + request)
+        execution.setVariable("UpdateAAIVfModuleRequest", request)
+    }
 
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing DeleteAAIVfModuleRequest request
-       public void prepDeleteAAIVfModule(DelegateExecution execution) {
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing DeleteAAIVfModuleRequest request
+    public void prepDeleteAAIVfModule(DelegateExecution execution) {
 
 
-               def vnfId = execution.getVariable("vnfId")
-               def vfModuleId = execution.getVariable("vfModuleId")
-               // formulate the request for UpdateAAIVfModule
-               String request = """<DeleteAAIVfModuleRequest>
+        def vnfId = execution.getVariable("vnfId")
+        def vfModuleId = execution.getVariable("vfModuleId")
+        // formulate the request for UpdateAAIVfModule
+        String request = """<DeleteAAIVfModuleRequest>
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                        </DeleteAAIVfModuleRequest>""" as String
-               logger.debug("DeleteAAIVfModuleRequest :" + request)
-               logger.debug("DeleteAAIVfModuleRequest: " + request)
-               execution.setVariable("DeleteAAIVfModuleRequest", request)
-       }
-
-       // generates a WorkflowException if
-       //              -
-       public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
-               logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                               "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"),
-                               "BPMN", ErrorCode.UnknownError.getValue(), "Exception");
-               String processKey = getProcessKey(execution);
-               WorkflowException exception = new WorkflowException(processKey, 5000,
-                       execution.getVariable("DoDVfMod_deleteGenericVnfResponse"))
-               execution.setVariable("WorkflowException", exception)
-       }
-
-       public void sdncValidateResponse(DelegateExecution execution, String response){
-
-               execution.setVariable("prefix",Prefix)
-
-               WorkflowException workflowException = execution.getVariable("WorkflowException")
-               boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
-
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
-               sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
-
-               if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
-                       logger.debug("Successfully Validated SDNC Response")
-               }else{
-                       throw new BpmnError("MSOWorkflowException")
-               }
-       }
-
-       public void postProcessVNFAdapterRequest(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
-                       'execution=' + execution.getId() +
-                       ')'
-
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix",Prefix)
-               try{
-               logger.trace("STARTED postProcessVNFAdapterRequest Process")
-
-               String vnfResponse = execution.getVariable("DoDVfMod_doDeleteVfModuleResponse")
-               logger.debug("VNF Adapter Response is: " + vnfResponse)
-               logger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
-
-               if(vnfResponse != null){
-
-                       if(vnfResponse.contains("deleteVfModuleResponse")){
-                               logger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
-                               execution.setVariable("DoDVfMod_vnfVfModuleDeleteCompleted", true)
-
-                               // Parse vnfOutputs for contrail network polcy FQDNs
-                               if (vnfResponse.contains("vfModuleOutputs")) {
-                                       def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
-                                       InputSource source = new InputSource(new StringReader(vfModuleOutputsXml));
-                       DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
-                       docFactory.setNamespaceAware(true)
-                       DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
-                       Document outputsXml = docBuilder.parse(source)
-
-                                       NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry")
-                                       List contrailNetworkPolicyFqdnList = []
-                                       for (int i = 0; i< entries.getLength(); i++) {
-                                               Node node = entries.item(i)
-                                               if (node.getNodeType() == Node.ELEMENT_NODE) {
-                                                       Element element = (Element) node
-                                                       String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent()
-                                                       if (key.endsWith("contrail_network_policy_fqdn")) {
-                                                               String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
-                                                               logger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
-                                                               contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
-                                                       }
-                                                       else if (key.equals("oam_management_v4_address")) {
-                                                               String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
-                                                               logger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
-                                                               execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
-                                                       }
-                                                       else if (key.equals("oam_management_v6_address")) {
-                                                               String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
-                                                               logger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
-                                                               execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
-                                                       }
-
-                                               }
-                                       }
-                                       if (!contrailNetworkPolicyFqdnList.isEmpty()) {
-                                               logger.debug("Setting the fqdn list")
-                                               execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
-                                       }
-                               }
-                       }else{
-                               logger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
-                               exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
-                       }
-               }else{
-                       logger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
-               }
-
-               }catch(BpmnError b){
-                       throw b
-               }catch(Exception e){
-                       logger.debug("Internal Error Occured in PostProcess Method")
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
-               }
-               logger.trace("COMPLETED postProcessVnfAdapterResponse Process")
-       }
-
-       public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
-               'execution=' + execution.getId() +
-               ')'
-
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED deleteNetworkPoliciesFromAAI ")
-
-               try {
-                       // get variables
-                       List fqdnList = execution.getVariable("DoDVfMod_contrailNetworkPolicyFqdnList")
-                       if (fqdnList == null) {
-                               logger.debug("No network policies to delete")
-                               return
-                       }
-                       int fqdnCount = fqdnList.size()
-
-                       execution.setVariable("DoDVfMod_networkPolicyFqdnCount", fqdnCount)
-                       logger.debug("DoDVfMod_networkPolicyFqdnCount - " + fqdnCount)
-
-                       if (fqdnCount > 0) {
-                               // AII loop call over contrail network policy fqdn list
-                               for (i in 0..fqdnCount-1) {
-                                       String fqdn = fqdnList[i]
-                                       // Query AAI for this network policy FQDN
+        logger.debug("DeleteAAIVfModuleRequest :" + request)
+        logger.debug("DeleteAAIVfModuleRequest: " + request)
+        execution.setVariable("DeleteAAIVfModuleRequest", request)
+    }
+
+    // generates a WorkflowException if
+    //         -
+    public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
+        logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"),
+                "BPMN", ErrorCode.UnknownError.getValue(), "Exception");
+        String processKey = getProcessKey(execution);
+        WorkflowException exception = new WorkflowException(processKey, 5000,
+                execution.getVariable("DoDVfMod_deleteGenericVnfResponse"))
+        execution.setVariable("WorkflowException", exception)
+    }
+
+    public void sdncValidateResponse(DelegateExecution execution, String response){
+
+        execution.setVariable("prefix",Prefix)
+
+        WorkflowException workflowException = execution.getVariable("WorkflowException")
+        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+        SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+            logger.debug("Successfully Validated SDNC Response")
+        }else{
+            throw new BpmnError("MSOWorkflowException")
+        }
+    }
+
+    public void postProcessVNFAdapterRequest(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix",Prefix)
+        try{
+            logger.trace("STARTED postProcessVNFAdapterRequest Process")
+
+            String vnfResponse = execution.getVariable("DoDVfMod_doDeleteVfModuleResponse")
+            logger.debug("VNF Adapter Response is: " + vnfResponse)
+            logger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
+
+            if(vnfResponse != null){
+
+                if(vnfResponse.contains("deleteVfModuleResponse")){
+                    logger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
+                    execution.setVariable("DoDVfMod_vnfVfModuleDeleteCompleted", true)
+
+                    // Parse vnfOutputs for contrail network polcy FQDNs
+                    if (vnfResponse.contains("vfModuleOutputs")) {
+                        def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
+                        InputSource source = new InputSource(new StringReader(vfModuleOutputsXml));
+                        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+                        docFactory.setNamespaceAware(true)
+                        DocumentBuilder docBuilder = docFactory.newDocumentBuilder()
+                        Document outputsXml = docBuilder.parse(source)
+
+                        NodeList entries = outputsXml.getElementsByTagNameNS("*", "entry")
+                        List contrailNetworkPolicyFqdnList = []
+                        for (int i = 0; i< entries.getLength(); i++) {
+                            Node node = entries.item(i)
+                            if (node.getNodeType() == Node.ELEMENT_NODE) {
+                                Element element = (Element) node
+                                String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent()
+                                if (key.endsWith("contrail_network_policy_fqdn")) {
+                                    String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+                                    logger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
+                                    contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
+                                }
+                                else if (key.equals("oam_management_v4_address")) {
+                                    String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+                                    logger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
+                                    execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
+                                }
+                                else if (key.equals("oam_management_v6_address")) {
+                                    String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
+                                    logger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
+                                    execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
+                                }
+
+                            }
+                        }
+                        if (!contrailNetworkPolicyFqdnList.isEmpty()) {
+                            logger.debug("Setting the fqdn list")
+                            execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
+                        }
+                    }
+                }else{
+                    logger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
+                    exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+                }
+            }else{
+                logger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
+                exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
+            }
+
+        }catch(BpmnError b){
+            throw b
+        }catch(Exception e){
+            logger.debug("Internal Error Occured in PostProcess Method")
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
+        }
+        logger.trace("COMPLETED postProcessVnfAdapterResponse Process")
+    }
+
+    public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED deleteNetworkPoliciesFromAAI ")
+
+        try {
+            // get variables
+            List fqdnList = execution.getVariable("DoDVfMod_contrailNetworkPolicyFqdnList")
+            if (fqdnList == null) {
+                logger.debug("No network policies to delete")
+                return
+            }
+            int fqdnCount = fqdnList.size()
+
+            execution.setVariable("DoDVfMod_networkPolicyFqdnCount", fqdnCount)
+            logger.debug("DoDVfMod_networkPolicyFqdnCount - " + fqdnCount)
+
+            if (fqdnCount > 0) {
+                // AII loop call over contrail network policy fqdn list
+                for (i in 0..fqdnCount-1) {
+                    String fqdn = fqdnList[i]
+                    // Query AAI for this network policy FQDN
                                        AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY)
-                                       uri.queryParam("network-policy-fqdn", fqdn)
-                                       try {
-                                               Optional<NetworkPolicies> networkPolicies = getAAIClient().get(NetworkPolicies.class, uri)
-                                               if (networkPolicies.isPresent() && !networkPolicies.get().getNetworkPolicy().isEmpty()) {
-                                                       // This network policy FQDN exists in AAI - need to delete it now
-                                                       NetworkPolicy networkPolicy = networkPolicies.get().getNetworkPolicy().get(0)
-                                                       execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 200)
-                                                       // Retrieve the network policy id for this FQDN
-                                                       def networkPolicyId = networkPolicy.getNetworkPolicyId()
-                                                       logger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
-                                                       try {
-                                                               AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId)
-                                                               getAAIClient().delete(delUri)
-                                                               execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 200)
-                                                       } catch (Exception e) {
-                                                               execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 500)
-                                                               String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + e.getMessage()
-                                                               logger.debug(delErrorMessage)
-                                                               exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
-                                                       }
-                                               } else {
-                                                       execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 404)
-                                                       // This network policy FQDN is not in AAI. No need to delete.
-                                                       logger.debug("The return code is: " + 404)
-                                                       logger.debug("This network policy FQDN is not in AAI: " + fqdn)
-                                                       logger.debug("Network policy FQDN is not in AAI")
-                                               }
-                                       }catch(Exception e ) {
-                                                               // aai all errors
-                                                               String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + e.getMessage()
-                                                               logger.debug(dataErrorMessage)
-                                       }
-                               } // end loop
-                       } else {
-                                  logger.debug("No contrail network policies to query/create")
-                       }
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception ex) {
-                       String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
-                       logger.debug(exceptionMessage)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
-               }
-
-       }
-
-       /**
-        * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
-        *
-        * @param execution The flow's execution instance.
-        */
-       public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
-                       'execution=' + execution.getId() +
-                       ')'
-
-               logger.trace('Entered ' + method)
-
-               try {
-                       def vnfId = execution.getVariable('vnfId')
-                       def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address')
-                       def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address')
-                       def ipv4OamAddressElement = ''
-                       def managementV6AddressElement = ''
-
-                       if (oamManagementV4Address != null) {
-                               ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>'
-                       }
-
-                       if (oamManagementV6Address != null) {
-                               managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>'
-                       }
-
-
-                       String updateAAIGenericVnfRequest = """
+                    uri.queryParam("network-policy-fqdn", fqdn)
+                    try {
+                        Optional<NetworkPolicies> networkPolicies = getAAIClient().get(NetworkPolicies.class, uri)
+                        if (networkPolicies.isPresent() && !networkPolicies.get().getNetworkPolicy().isEmpty()) {
+                            // This network policy FQDN exists in AAI - need to delete it now
+                            NetworkPolicy networkPolicy = networkPolicies.get().getNetworkPolicy().get(0)
+                            execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 200)
+                            // Retrieve the network policy id for this FQDN
+                            def networkPolicyId = networkPolicy.getNetworkPolicyId()
+                            logger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
+                            try {
+                                AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId)
+                                getAAIClient().delete(delUri)
+                                execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 200)
+                            } catch (Exception e) {
+                                execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 500)
+                                String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + e.getMessage()
+                                logger.debug(delErrorMessage)
+                                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+                            }
+                        } else {
+                            execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 404)
+                            // This network policy FQDN is not in AAI. No need to delete.
+                            logger.debug("The return code is: " + 404)
+                            logger.debug("This network policy FQDN is not in AAI: " + fqdn)
+                            logger.debug("Network policy FQDN is not in AAI")
+                        }
+                    }catch(Exception e ) {
+                        // aai all errors
+                        String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + e.getMessage()
+                        logger.debug(dataErrorMessage)
+                    }
+                } // end loop
+            } else {
+                logger.debug("No contrail network policies to query/create")
+            }
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+            logger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+
+    }
+
+    /**
+     * Prepare a Request for invoking the UpdateAAIGenericVnf subflow.
+     *
+     * @param execution The flow's execution instance.
+     */
+    public void prepUpdateAAIGenericVnf(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.prepUpdateAAIGenericVnf(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+
+        try {
+            def vnfId = execution.getVariable('vnfId')
+            def oamManagementV4Address = execution.getVariable(Prefix + 'oamManagementV4Address')
+            def oamManagementV6Address = execution.getVariable(Prefix + 'oamManagementV6Address')
+            def ipv4OamAddressElement = ''
+            def managementV6AddressElement = ''
+
+            if (oamManagementV4Address != null) {
+                ipv4OamAddressElement = '<ipv4-oam-address>' + 'DELETE' + '</ipv4-oam-address>'
+            }
+
+            if (oamManagementV6Address != null) {
+                managementV6AddressElement = '<management-v6-address>' + 'DELETE' + '</management-v6-address>'
+            }
+
+
+            String updateAAIGenericVnfRequest = """
                                        <UpdateAAIGenericVnfRequest>
                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                ${ipv4OamAddressElement}
                                                ${managementV6AddressElement}
                                        </UpdateAAIGenericVnfRequest>
                                """
-                               updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
-                               execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
-                               logger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
-                               logger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
-
-
-                       logger.trace('Exited ' + method)
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception e) {
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       'Caught exception in ' + method, "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
-               }
-       }
-
-       /**
-        * Using the vnfId and vfModuleId provided in the inputs,
-        * query AAI to get the corresponding VF Module info.
-        * A 200 response is expected with the VF Module info in the response body,
-        * Will determine VF Module's orchestration status if one exists
-        *
-        * @param execution The flow's execution instance.
-        */
-       public void queryAAIVfModuleForStatus(DelegateExecution execution) {
-
-               def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
-                       'execution=' + execution.getId() +
-                       ')'
-               logger.trace('Entered ' + method)
-
-               execution.setVariable(Prefix + 'orchestrationStatus', '')
-
-               try {
-                       def vnfId = execution.getVariable('vnfId')
-                       def vfModuleId = execution.getVariable('vfModuleId')
-
-                       AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId)
-
-                       try {
+            updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
+            execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
+            logger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
+            logger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+
+
+            logger.trace('Exited ' + method)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception e) {
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    'Caught exception in ' + method, "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
+        }
+    }
+
+    /**
+     * Using the vnfId and vfModuleId provided in the inputs,
+     * query AAI to get the corresponding VF Module info.
+     * A 200 response is expected with the VF Module info in the response body,
+     * Will determine VF Module's orchestration status if one exists
+     *
+     * @param execution The flow's execution instance.
+     */
+    public void queryAAIVfModuleForStatus(DelegateExecution execution) {
+
+        def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
+                'execution=' + execution.getId() +
+                ')'
+        logger.trace('Entered ' + method)
+
+        execution.setVariable(Prefix + 'orchestrationStatus', '')
+
+        try {
+            def vnfId = execution.getVariable('vnfId')
+            def vfModuleId = execution.getVariable('vfModuleId')
+
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId)
+
+            try {
                 Optional<org.onap.aai.domain.yang.VfModule> vfModule = getAAIClient().get(org.onap.aai.domain.yang.VfModule.class, uri);
-                               // Retrieve VF Module info and its orchestration status; if not found, do nothing
+                // Retrieve VF Module info and its orchestration status; if not found, do nothing
                 if (vfModule.isPresent()) {
                     execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponseCode', 200)
                     execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponse', vfModule.get())
@@ -622,20 +618,20 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                     execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus)
                     logger.debug("Received orchestration status from A&AI: " + orchestrationStatus)
                 }
-                       } catch (Exception ex) {
-                               logger.debug('Exception occurred while executing AAI GET: {}', ex.getMessage(), ex)
-                               exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
-                       }
-                       logger.trace('Exited ' + method)
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception e) {
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       'Caught exception in ' + method, "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
-               }
-       }
+            } catch (Exception ex) {
+                logger.debug('Exception occurred while executing AAI GET: {}', ex.getMessage(), ex)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
+            }
+            logger.trace('Exited ' + method)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception e) {
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    'Caught exception in ' + method, "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
+        }
+    }
 
 
 
index 34a2103..350de4a 100644 (file)
@@ -9,9 +9,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -53,244 +53,244 @@ import org.slf4j.LoggerFactory
 public class DoDeleteVfModuleFromVnf extends VfModuleBase {
     private static final Logger logger = LoggerFactory.getLogger( DoDeleteVfModuleFromVnf.class);
 
-       def Prefix="DDVFMV_"
-       ExceptionUtil exceptionUtil = new ExceptionUtil()
-       JsonUtils jsonUtil = new JsonUtils()
-
-       public void initProcessVariables(DelegateExecution execution) {
-               execution.setVariable("prefix",Prefix)
-               execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null)
-       }
-
-       // parse the incoming request
-       public void preProcessRequest(DelegateExecution execution) {
-
-               initProcessVariables(execution)
-
-               try {
-
-                               // Building Block-type request
-
-                               // Set mso-request-id to request-id for VNF Adapter interface
-                               String requestId = execution.getVariable("msoRequestId")
-                               execution.setVariable("mso-request-id", requestId)
-                               execution.setVariable("requestId", requestId)
-                               logger.debug("msoRequestId: " + requestId)
-                               String tenantId = execution.getVariable("tenantId")
-                               logger.debug("tenantId: " + tenantId)
-                               String cloudSiteId = execution.getVariable("lcpCloudRegionId")
-                               execution.setVariable("cloudSiteId", cloudSiteId)
-                               logger.debug("cloudSiteId: " + cloudSiteId)
-                               String cloudOwner = execution.getVariable("cloudOwner")
-                               execution.setVariable("cloudOwner", cloudOwner)
-                               logger.debug("cloudOwner: " + cloudOwner)
-                               // Source is HARDCODED
-                               String source = "VID"
-                               execution.setVariable("source", source)
-                               // isVidRequest is hardcoded to "true"
-                               execution.setVariable("isVidRequest", "true")
-                               // SrvInstId is hardcoded to empty
-                               execution.setVariable("srvInstId", "")
-                               // ServiceId is hardcoded to empty
-                               execution.setVariable("serviceId", "")
-                               String serviceInstanceId = execution.getVariable("serviceInstanceId")
-                               logger.debug("serviceInstanceId: " + serviceInstanceId)
-                               String vnfId = execution.getVariable("vnfId")
-                               logger.debug("vnfId: " + vnfId)
-                               String vfModuleId = execution.getVariable("vfModuleId")
-                               logger.debug("vfModuleId: " + vfModuleId)
-                               if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
-                                       execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
-                               }
-                               else {
-                                       execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
-                               }
-                               
-                               String sdncVersion = execution.getVariable("sdncVersion")
-                               if (sdncVersion == null) {
-                                       sdncVersion = "1707"
-                               }
-                               execution.setVariable(Prefix + "sdncVersion", sdncVersion)
-                               logger.debug("Incoming Sdnc Version is: " + sdncVersion)
-
-                               String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
-                               if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
-                                       def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
-                                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
-                                                       ErrorCode.UnknownError.getValue(), "Exception");
-                                       exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
-                               }
-                               execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
-                               logger.debug("SDNC Callback URL: " + sdncCallbackUrl)
-                               logger.debug("SDNC Callback URL is: " + sdncCallbackUrl)
-
-               }catch(BpmnError b){
-                       throw b
-               }catch(Exception e){
-                       logger.debug("Exception is: " + e.getMessage())
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
-               }
-       }
-
-       public void queryAAIForVfModule(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.queryAAIForVfModule(' +
-                       'execution=' + execution.getId() +
-                       ')'
-
-               logger.trace('Entered ' + method)
-
-               try {
-                       def vnfId = execution.getVariable('vnfId')
-
-                       AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE)
-                       try {
-                               Optional<GenericVnf> genericVnf = getAAIClient().get(GenericVnf.class,uri)
-
-                               if(genericVnf.isPresent()){
-                                       execution.setVariable('DDVMFV_getVnfResponseCode', 200)
-                                       execution.setVariable('DDVMFV_getVnfResponse', genericVnf.get())
-                               }else{
-                                       execution.setVariable('DDVMFV_getVnfResponseCode', 404)
-                                       execution.setVariable('DDVMFV_getVnfResponse', "Generic Vnf not found!")
-                               }
-                       } catch (Exception ex) {
-                               logger.debug('Exception occurred while executing AAI GET: {}', ex.getMessage(), ex)
-                               execution.setVariable('DDVMFV_getVnfResponseCode', 500)
-                               execution.setVariable('DDVFMV_getVnfResponse', 'AAI GET Failed:' + ex.getMessage())
-                       }
-                       logger.trace('Exited ' + method)
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception e) {
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       'Caught exception in ' + method, "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVfModule(): ' + e.getMessage())
-               }
-       }
-
-       /**
-        * Validate the VF Module.  That is, confirm that a VF Module with the input VF Module ID
-        * exists in the retrieved Generic VNF.  Then, check to make sure that if that VF Module
-        * is the base VF Module and it's not the only VF Module for this Generic VNF, that we're not
-        * attempting to delete it.
-        *
-        * @param execution The flow's execution instance.
-        */
-       public void validateVfModule(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.validateVfModule(' +
-                       'execution=' + execution.getId() +
-                       ')'
-               def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
-               logger.trace('Entered ' + method)
-
-               try {
-                       GenericVnf genericVnf = execution.getVariable('DDVMFV_getVnfResponse')
-                       def vnfId = execution.getVariable('_vnfId')
-                       def vfModuleId = execution.getVariable('vfModuleId')
+    def Prefix="DDVFMV_"
+    ExceptionUtil exceptionUtil = new ExceptionUtil()
+    JsonUtils jsonUtil = new JsonUtils()
+
+    public void initProcessVariables(DelegateExecution execution) {
+        execution.setVariable("prefix",Prefix)
+        execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null)
+    }
+
+    // parse the incoming request
+    public void preProcessRequest(DelegateExecution execution) {
+
+        initProcessVariables(execution)
+
+        try {
+
+            // Building Block-type request
+
+            // Set mso-request-id to request-id for VNF Adapter interface
+            String requestId = execution.getVariable("msoRequestId")
+            execution.setVariable("mso-request-id", requestId)
+            execution.setVariable("requestId", requestId)
+            logger.debug("msoRequestId: " + requestId)
+            String tenantId = execution.getVariable("tenantId")
+            logger.debug("tenantId: " + tenantId)
+            String cloudSiteId = execution.getVariable("lcpCloudRegionId")
+            execution.setVariable("cloudSiteId", cloudSiteId)
+            logger.debug("cloudSiteId: " + cloudSiteId)
+            String cloudOwner = execution.getVariable("cloudOwner")
+            execution.setVariable("cloudOwner", cloudOwner)
+            logger.debug("cloudOwner: " + cloudOwner)
+            // Source is HARDCODED
+            String source = "VID"
+            execution.setVariable("source", source)
+            // isVidRequest is hardcoded to "true"
+            execution.setVariable("isVidRequest", "true")
+            // SrvInstId is hardcoded to empty
+            execution.setVariable("srvInstId", "")
+            // ServiceId is hardcoded to empty
+            execution.setVariable("serviceId", "")
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+            logger.debug("serviceInstanceId: " + serviceInstanceId)
+            String vnfId = execution.getVariable("vnfId")
+            logger.debug("vnfId: " + vnfId)
+            String vfModuleId = execution.getVariable("vfModuleId")
+            logger.debug("vfModuleId: " + vfModuleId)
+            if (serviceInstanceId == null || serviceInstanceId.isEmpty()) {
+                execution.setVariable(Prefix + "serviceInstanceIdToSdnc", vfModuleId)
+            }
+            else {
+                execution.setVariable(Prefix + "serviceInstanceIdToSdnc", serviceInstanceId)
+            }
+
+            String sdncVersion = execution.getVariable("sdncVersion")
+            if (sdncVersion == null) {
+                sdncVersion = "1707"
+            }
+            execution.setVariable(Prefix + "sdncVersion", sdncVersion)
+            logger.debug("Incoming Sdnc Version is: " + sdncVersion)
+
+            String sdncCallbackUrl = (String) UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
+            if (sdncCallbackUrl == null || sdncCallbackUrl.trim().isEmpty()) {
+                def msg = 'Required variable \'mso.workflow.sdncadapter.callback\' is missing'
+                logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(), msg, "BPMN",
+                        ErrorCode.UnknownError.getValue(), "Exception");
+                exceptionUtil.buildAndThrowWorkflowException(execution, 2000, msg)
+            }
+            execution.setVariable("sdncCallbackUrl", sdncCallbackUrl)
+            logger.debug("SDNC Callback URL: " + sdncCallbackUrl)
+            logger.debug("SDNC Callback URL is: " + sdncCallbackUrl)
+
+        }catch(BpmnError b){
+            throw b
+        }catch(Exception e){
+            logger.debug("Exception is: " + e.getMessage())
+            exceptionUtil.buildAndThrowWorkflowException(execution, 2000, "Internal Error encountered in PreProcess method!")
+        }
+    }
+
+    public void queryAAIForVfModule(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.queryAAIForVfModule(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+
+        try {
+            def vnfId = execution.getVariable('vnfId')
+
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE)
+            try {
+                Optional<GenericVnf> genericVnf = getAAIClient().get(GenericVnf.class,uri)
+
+                if(genericVnf.isPresent()){
+                    execution.setVariable('DDVMFV_getVnfResponseCode', 200)
+                    execution.setVariable('DDVMFV_getVnfResponse', genericVnf.get())
+                }else{
+                    execution.setVariable('DDVMFV_getVnfResponseCode', 404)
+                    execution.setVariable('DDVMFV_getVnfResponse', "Generic Vnf not found!")
+                }
+            } catch (Exception ex) {
+                logger.debug('Exception occurred while executing AAI GET: {}', ex.getMessage(), ex)
+                execution.setVariable('DDVMFV_getVnfResponseCode', 500)
+                execution.setVariable('DDVFMV_getVnfResponse', 'AAI GET Failed:' + ex.getMessage())
+            }
+            logger.trace('Exited ' + method)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception e) {
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    'Caught exception in ' + method, "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIForVfModule(): ' + e.getMessage())
+        }
+    }
+
+    /**
+     * Validate the VF Module.  That is, confirm that a VF Module with the input VF Module ID
+     * exists in the retrieved Generic VNF.  Then, check to make sure that if that VF Module
+     * is the base VF Module and it's not the only VF Module for this Generic VNF, that we're not
+     * attempting to delete it.
+     *
+     * @param execution The flow's execution instance.
+     */
+    public void validateVfModule(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.validateVfModule(' +
+                'execution=' + execution.getId() +
+                ')'
+        def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')
+        logger.trace('Entered ' + method)
+
+        try {
+            GenericVnf genericVnf = execution.getVariable('DDVMFV_getVnfResponse')
+            def vnfId = execution.getVariable('_vnfId')
+            def vfModuleId = execution.getVariable('vfModuleId')
             Optional<VfModule> vfModule = Optional.empty()
             if(genericVnf.getVfModules()!=null && ! genericVnf.getVfModules().getVfModule().isEmpty()) {
                 vfModule = genericVnf.getVfModules().getVfModule().stream().filter { v -> v.getVfModuleId().equals(vfModuleId) }.findFirst()
             }
-                       if (!vfModule.isPresent()) {
-                               String msg = 'VF Module \'' + vfModuleId + '\' does not exist in Generic VNF \'' + vnfId + '\''
-                               logger.debug(msg)
-                               exceptionUtil.buildAndThrowWorkflowException(execution, 1002, msg)
-                       } else {
+            if (!vfModule.isPresent()) {
+                String msg = 'VF Module \'' + vfModuleId + '\' does not exist in Generic VNF \'' + vnfId + '\''
+                logger.debug(msg)
+                exceptionUtil.buildAndThrowWorkflowException(execution, 1002, msg)
+            } else {
                 Boolean isOnlyVfModule = (genericVnf.getVfModules().getVfModule().size() == 1)
-                               if (isDebugLogEnabled) {
-                                       logger.debug('VF Module \'' + vfModuleId + '\': isBaseVfModule=' + vfModule.get().isIsBaseVfModule() + ', isOnlyVfModule=' + isOnlyVfModule)
-                               }
-                               if (vfModule.get().isIsBaseVfModule() && !isOnlyVfModule) {
+                if (isDebugLogEnabled) {
+                    logger.debug('VF Module \'' + vfModuleId + '\': isBaseVfModule=' + vfModule.get().isIsBaseVfModule() + ', isOnlyVfModule=' + isOnlyVfModule)
+                }
+                if (vfModule.get().isIsBaseVfModule() && !isOnlyVfModule) {
                     String msg = 'Cannot delete VF Module \'' + vfModuleId +
                             '\'since it is the base VF Module and it\'s not the only VF Module in Generic VNF \'' + vnfId + '\''
                     logger.debug(msg)
                     exceptionUtil.buildAndThrowWorkflowException(execution, 1002,msg)
-                               }
-                               def heatStackId = vfModule.get().getHeatStackId()
-                               execution.setVariable('DDVMFV_heatStackId', heatStackId)
-                               logger.debug('VF Module heatStackId retrieved from AAI: ' + heatStackId)
-                       }
-                       logger.trace('Exited ' + method)
-               } catch (BpmnError e) {
-                       throw e;
-               } catch (Exception e) {
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       'Caught exception in ' + method, "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in validateVfModule(): ' + e.getMessage())
-               }
-       }
-
-
-       public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
-
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED preProcessSDNCDeactivateRequest ")
-               
-               def serviceInstanceId = execution.getVariable("serviceInstanceId")
-       
-               try{
-                       //Build SDNC Request
-                       
-                       String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
-       
-                       deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
-                       execution.setVariable("DDVMFV_deactivateSDNCRequest", deactivateSDNCRequest)
-                       logger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
-                       
-       
-               }catch(Exception e){
-                       logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                                       "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, "BPMN",
-                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
-               }
-               logger.trace("COMPLETED preProcessSDNCDeactivateRequest ")
-       }
-
-       public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
-                       'execution=' + execution.getId() +
-                       ')'
-
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED preProcessSDNCUnassignRequest Process ")
-               try{                    
-                       String serviceInstanceId = execution.getVariable("serviceInstanceId")
-       
-                       String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
-       
-                       execution.setVariable("DDVMFV_unassignSDNCRequest", unassignSDNCRequest)
-                       logger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
-                       
-       
-               }catch(Exception e){
-                       logger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
-               }
-               logger.trace("COMPLETED  preProcessSDNCUnassignRequest Process ")
-       }
-
-       public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
-       
-                       String uuid = execution.getVariable('testReqId') // for junits
-                       if(uuid==null){
-                               uuid = execution.getVariable("msoRequestId") + "-" +    System.currentTimeMillis()
-                       }
-                       def callbackURL = execution.getVariable("sdncCallbackUrl")      
-                       def requestId = execution.getVariable("msoRequestId")
-                       def serviceId = execution.getVariable("serviceId")
-                       def serviceInstanceId = execution.getVariable("serviceInstanceId")
-                       def vfModuleId = execution.getVariable("vfModuleId")
-                       def source = execution.getVariable("source")
-                       def vnfId = execution.getVariable("vnfId")
-                               
-                       def sdncVersion = execution.getVariable(Prefix + "sdncVersion")
-                       
-                       String sdncRequest =
-                       """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
+                }
+                def heatStackId = vfModule.get().getHeatStackId()
+                execution.setVariable('DDVMFV_heatStackId', heatStackId)
+                logger.debug('VF Module heatStackId retrieved from AAI: ' + heatStackId)
+            }
+            logger.trace('Exited ' + method)
+        } catch (BpmnError e) {
+            throw e;
+        } catch (Exception e) {
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    'Caught exception in ' + method, "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in validateVfModule(): ' + e.getMessage())
+        }
+    }
+
+
+    public void preProcessSDNCDeactivateRequest(DelegateExecution execution){
+
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED preProcessSDNCDeactivateRequest ")
+
+        def serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+        try{
+            //Build SDNC Request
+
+            String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")
+
+            deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)
+            execution.setVariable("DDVMFV_deactivateSDNCRequest", deactivateSDNCRequest)
+            logger.debug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)
+
+
+        }catch(Exception e){
+            logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                    "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, "BPMN",
+                    ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())
+        }
+        logger.trace("COMPLETED preProcessSDNCDeactivateRequest ")
+    }
+
+    public void preProcessSDNCUnassignRequest(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED preProcessSDNCUnassignRequest Process ")
+        try{
+            String serviceInstanceId = execution.getVariable("serviceInstanceId")
+
+            String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")
+
+            execution.setVariable("DDVMFV_unassignSDNCRequest", unassignSDNCRequest)
+            logger.debug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest)
+
+
+        }catch(Exception e){
+            logger.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())
+        }
+        logger.trace("COMPLETED  preProcessSDNCUnassignRequest Process ")
+    }
+
+    public String buildSDNCRequest(DelegateExecution execution, String svcInstId, String action){
+
+        String uuid = execution.getVariable('testReqId') // for junits
+        if(uuid==null){
+            uuid = execution.getVariable("msoRequestId") + "-" +       System.currentTimeMillis()
+        }
+        def callbackURL = execution.getVariable("sdncCallbackUrl")
+        def requestId = execution.getVariable("msoRequestId")
+        def serviceId = execution.getVariable("serviceId")
+        def serviceInstanceId = execution.getVariable("serviceInstanceId")
+        def vfModuleId = execution.getVariable("vfModuleId")
+        def source = execution.getVariable("source")
+        def vnfId = execution.getVariable("vnfId")
+
+        def sdncVersion = execution.getVariable(Prefix + "sdncVersion")
+
+        String sdncRequest =
+                """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
                                                                                                        xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
                                                                                                        xmlns:sdncadapter="http://org.onap.so/workflow/sdnc/adapter/schema/v1">
           <sdncadapter:RequestHeader>
@@ -312,73 +312,73 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase {
                </request-information>
                <service-information>
                        <service-id/>
-                       <subscription-service-type/>                    
+                       <subscription-service-type/>
                        <service-instance-id>${MsoUtils.xmlEscape(serviceInstanceId)}</service-instance-id>
                        <global-customer-id/>
                </service-information>
                <vnf-information>
                        <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
-                       <vnf-type/>                     
+                       <vnf-type/>
                </vnf-information>
                <vf-module-information>
                        <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                </vf-module-information>
-               <vf-module-request-input/>              
+               <vf-module-request-input/>
        </sdncadapterworkflow:SDNCRequestData>
        </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
-       
-               logger.debug("sdncRequest:  " + sdncRequest)
-               return sdncRequest
-       }
-       
-       public void validateSDNCResponse(DelegateExecution execution, String response, String method){
-
-               execution.setVariable("prefix",Prefix)
-               logger.trace("STARTED ValidateSDNCResponse Process")
-       
-               WorkflowException workflowException = execution.getVariable("WorkflowException")
-               boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
-       
-               logger.debug("workflowException: " + workflowException)
-       
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
-               sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
-       
-               logger.debug("SDNCResponse: " + response)
-       
-               String sdncResponse = response
-               if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
-                       logger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
-               }else{
-                       logger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
-                       throw new BpmnError("MSOWorkflowException")
-               }
-               logger.trace("COMPLETED ValidateSDNCResponse Process")
-       }
-
-
-       // parse the incoming DELETE_VF_MODULE request
-       // and formulate the outgoing VnfAdapterDeleteV1 request
-       public void prepVNFAdapterRequest(DelegateExecution execution) {
-
-               def requestId = UUID.randomUUID().toString()
-               def origRequestId = execution.getVariable('requestId')
-               def srvInstId = execution.getVariable("serviceInstanceId")
-               def aicCloudRegion = execution.getVariable("cloudSiteId")
-               def cloudOwner = execution.getVariable("cloudOwner")
-               def vnfId = execution.getVariable("vnfId")
-               def vfModuleId = execution.getVariable("vfModuleId")
-               def vfModuleStackId = execution.getVariable('DDVMFV_heatStackId')
-               def tenantId = execution.getVariable("tenantId")
-               def messageId = execution.getVariable('requestId') + '-' +
-                       System.currentTimeMillis()
-               def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
-               def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
-               if ('true'.equals(useQualifiedHostName)) {
-                       notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
-               }
-
-               String request = """
+
+        logger.debug("sdncRequest:  " + sdncRequest)
+        return sdncRequest
+    }
+
+    public void validateSDNCResponse(DelegateExecution execution, String response, String method){
+
+        execution.setVariable("prefix",Prefix)
+        logger.trace("STARTED ValidateSDNCResponse Process")
+
+        WorkflowException workflowException = execution.getVariable("WorkflowException")
+        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
+
+        logger.debug("workflowException: " + workflowException)
+
+        SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
+        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
+
+        logger.debug("SDNCResponse: " + response)
+
+        String sdncResponse = response
+        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
+            logger.debug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse)
+        }else{
+            logger.debug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.")
+            throw new BpmnError("MSOWorkflowException")
+        }
+        logger.trace("COMPLETED ValidateSDNCResponse Process")
+    }
+
+
+    // parse the incoming DELETE_VF_MODULE request
+    // and formulate the outgoing VnfAdapterDeleteV1 request
+    public void prepVNFAdapterRequest(DelegateExecution execution) {
+
+        def requestId = UUID.randomUUID().toString()
+        def origRequestId = execution.getVariable('requestId')
+        def srvInstId = execution.getVariable("serviceInstanceId")
+        def aicCloudRegion = execution.getVariable("cloudSiteId")
+        def cloudOwner = execution.getVariable("cloudOwner")
+        def vnfId = execution.getVariable("vnfId")
+        def vfModuleId = execution.getVariable("vfModuleId")
+        def vfModuleStackId = execution.getVariable('DDVMFV_heatStackId')
+        def tenantId = execution.getVariable("tenantId")
+        def messageId = execution.getVariable('requestId') + '-' +
+                System.currentTimeMillis()
+        def notificationUrl = createCallbackURL(execution, "VNFAResponse", messageId)
+        def useQualifiedHostName = UrnPropertiesReader.getVariable("mso.use.qualified.host",execution)
+        if ('true'.equals(useQualifiedHostName)) {
+            notificationUrl = utils.getQualifiedHostNameForCallback(notificationUrl)
+        }
+
+        String request = """
                        <deleteVfModuleRequest>
                            <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
                            <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
@@ -396,126 +396,126 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase {
                        </deleteVfModuleRequest>
                        """ as String
 
-               logger.debug("vnfAdapterRestV1Request: " + request)
-               logger.debug("deleteVfModuleRequest: " + request)
-               execution.setVariable("vnfAdapterRestV1Request", request)
-       }
-
-       
-       // generates a WorkflowException if
-       //              -
-       public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
-               logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
-                               "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DDVFMV_deleteGenericVnfResponse"),
-                               "BPMN", ErrorCode.UnknownError.getValue(), "Exception");
-               String processKey = getProcessKey(execution);
-               WorkflowException exception = new WorkflowException(processKey, 5000,
-                       execution.getVariable("DDVFMV_deleteGenericVnfResponse"))
-               execution.setVariable("WorkflowException", exception)
-       }
-       
-       public void postProcessVNFAdapterRequest(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
-                       'execution=' + execution.getId() +
-                       ')'
-
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix",Prefix)
-               try{
-               logger.trace("STARTED postProcessVNFAdapterRequest Process")
-               
-               String vnfResponse = execution.getVariable("DDVMFV_doDeleteVfModuleResponse")
-               logger.debug("VNF Adapter Response is: " + vnfResponse)
-               logger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
-
-               if(vnfResponse != null){
-
-                       if(vnfResponse.contains("deleteVfModuleResponse")){
-                               logger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
-                               execution.setVariable("DDVFMV_vnfVfModuleDeleteCompleted", true)
-
-                               // Parse vnfOutputs for contrail network polcy FQDNs
-                               def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
-                               if(!isBlank(vfModuleOutputsXml)) {
-                                       vfModuleOutputsXml = utils.removeXmlNamespaces(vfModuleOutputsXml)
-                                       List contrailNetworkPolicyFqdnList = []
-                                       for(Node node: utils.getMultNodeObjects(vfModuleOutputsXml, "entry")) {
-                                               String key = utils.getChildNodeText(node, "key")
-                                               if(key == null) {
-                                                       
-                                               } else if (key.endsWith("contrail_network_policy_fqdn")) {
-                                                       String contrailNetworkPolicyFqdn = utils.getChildNodeText(node, "value")
-                                                       logger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
-                                                       contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
-                                               }
-                                               else if (key.equals("oam_management_v4_address")) {
-                                                       String oamManagementV4Address = utils.getChildNodeText(node, "value")
-                                                       logger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
-                                                       execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
-                                               }
-                                               else if (key.equals("oam_management_v6_address")) {
-                                                       String oamManagementV6Address = utils.getChildNodeText(node, "value")
-                                                       logger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
-                                                       execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
-                                               }
-                                       }
-                                       if (!contrailNetworkPolicyFqdnList.isEmpty()) {
-                                               logger.debug("Setting the fqdn list")
-                                               execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
-                                       }
-                               }
-                       }else{
-                               logger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
-                               exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
-                       }
-               }else{
-                       logger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
-               }
-
-               }catch(BpmnError b){
-                       throw b
-               }catch(Exception e){
-                       logger.debug("Internal Error Occured in PostProcess Method")
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
-               }
-               logger.trace("COMPLETED postProcessVnfAdapterResponse Process")
-       }
-
-       public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
-               def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
-               'execution=' + execution.getId() +
-               ')'
-
-               logger.trace('Entered ' + method)
-               execution.setVariable("prefix", Prefix)
-               logger.trace("STARTED deleteNetworkPoliciesFromAAI ")
-
-               try {
-                       // get variables
-                       List fqdnList = execution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")
-                       if (fqdnList == null) {
-                               logger.debug("No network policies to delete")
-                               return
-                       }
-                       int fqdnCount = fqdnList.size()
-
-                       execution.setVariable("DDVFMV_networkPolicyFqdnCount", fqdnCount)
-                       logger.debug("DDVFMV_networkPolicyFqdnCount - " + fqdnCount)
-
-                       AaiUtil aaiUriUtil = new AaiUtil(this)
-
-                       if (fqdnCount > 0) {
-                               // AII loop call over contrail network policy fqdn list
-                               for (i in 0..fqdnCount-1) {
-
-                                       int counting = i+1
-                                       String fqdn = fqdnList[i]
-
-                                       // Query AAI for this network policy FQDN
+
+        logger.debug("deleteVfModuleRequest: " + request)
+        execution.setVariable("vnfAdapterTaskRequest", request)
+    }
+
+
+    // generates a WorkflowException if
+    //         -
+    public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
+        logger.error(LoggingAnchor.FIVE, MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DDVFMV_deleteGenericVnfResponse"),
+                "BPMN", ErrorCode.UnknownError.getValue(), "Exception");
+        String processKey = getProcessKey(execution);
+        WorkflowException exception = new WorkflowException(processKey, 5000,
+                execution.getVariable("DDVFMV_deleteGenericVnfResponse"))
+        execution.setVariable("WorkflowException", exception)
+    }
+
+    public void postProcessVNFAdapterRequest(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.postProcessVNFAdapterRequest(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix",Prefix)
+        try{
+            logger.trace("STARTED postProcessVNFAdapterRequest Process")
+
+            String vnfResponse = execution.getVariable("DDVMFV_doDeleteVfModuleResponse")
+            logger.debug("VNF Adapter Response is: " + vnfResponse)
+            logger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
+
+            if(vnfResponse != null){
+
+                if(vnfResponse.contains("deleteVfModuleResponse")){
+                    logger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
+                    execution.setVariable("DDVFMV_vnfVfModuleDeleteCompleted", true)
+
+                    // Parse vnfOutputs for contrail network polcy FQDNs
+                    def vfModuleOutputsXml = utils.getNodeXml(vnfResponse, "vfModuleOutputs")
+                    if(!isBlank(vfModuleOutputsXml)) {
+                        vfModuleOutputsXml = utils.removeXmlNamespaces(vfModuleOutputsXml)
+                        List contrailNetworkPolicyFqdnList = []
+                        for(Node node: utils.getMultNodeObjects(vfModuleOutputsXml, "entry")) {
+                            String key = utils.getChildNodeText(node, "key")
+                            if(key == null) {
+
+                            } else if (key.endsWith("contrail_network_policy_fqdn")) {
+                                String contrailNetworkPolicyFqdn = utils.getChildNodeText(node, "value")
+                                logger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
+                                contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
+                            }
+                            else if (key.equals("oam_management_v4_address")) {
+                                String oamManagementV4Address = utils.getChildNodeText(node, "value")
+                                logger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
+                                execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
+                            }
+                            else if (key.equals("oam_management_v6_address")) {
+                                String oamManagementV6Address = utils.getChildNodeText(node, "value")
+                                logger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
+                                execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
+                            }
+                        }
+                        if (!contrailNetworkPolicyFqdnList.isEmpty()) {
+                            logger.debug("Setting the fqdn list")
+                            execution.setVariable("DDVFMV_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
+                        }
+                    }
+                }else{
+                    logger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
+                    exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
+                }
+            }else{
+                logger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
+                exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
+            }
+
+        }catch(BpmnError b){
+            throw b
+        }catch(Exception e){
+            logger.debug("Internal Error Occured in PostProcess Method")
+            exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
+        }
+        logger.trace("COMPLETED postProcessVnfAdapterResponse Process")
+    }
+
+    public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
+        def method = getClass().getSimpleName() + '.deleteNetworkPoliciesFromAAI(' +
+                'execution=' + execution.getId() +
+                ')'
+
+        logger.trace('Entered ' + method)
+        execution.setVariable("prefix", Prefix)
+        logger.trace("STARTED deleteNetworkPoliciesFromAAI ")
+
+        try {
+            // get variables
+            List fqdnList = execution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")
+            if (fqdnList == null) {
+                logger.debug("No network policies to delete")
+                return
+            }
+            int fqdnCount = fqdnList.size()
+
+            execution.setVariable("DDVFMV_networkPolicyFqdnCount", fqdnCount)
+            logger.debug("DDVFMV_networkPolicyFqdnCount - " + fqdnCount)
+
+            AaiUtil aaiUriUtil = new AaiUtil(this)
+
+            if (fqdnCount > 0) {
+                // AII loop call over contrail network policy fqdn list
+                for (i in 0..fqdnCount-1) {
+
+                    int counting = i+1
+                    String fqdn = fqdnList[i]
+
+                    // Query AAI for this network policy FQDN
 
                                        AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY)
-                                       uri.queryParam("network-policy-fqdn", fqdn)
+                    uri.queryParam("network-policy-fqdn", fqdn)
 
                     try {
                         Optional<NetworkPolicies> networkPolicies = getAAIClient().get(NetworkPolicies.class, uri)
@@ -555,35 +555,35 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase {
                         exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
                     }
                 } // end loop
-                       } else {
-                                  logger.debug("No contrail network policies to query/create")
+            } else {
+                logger.debug("No contrail network policies to query/create")
 
-                       }
+            }
+
+        } catch (BpmnError e) {
+            throw e;
 
-               } catch (BpmnError e) {
-                       throw e;
+        } catch (Exception ex) {
+            String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
+            logger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
 
-               } catch (Exception ex) {
-                       String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
-                       logger.debug(exceptionMessage)
-                       exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
-               }
+    }
 
-       }       
-       
-       // and formulate the outgoing DeleteAAIVfModuleRequest request
-       public void prepDeleteAAIVfModule(DelegateExecution execution) {
+    // and formulate the outgoing DeleteAAIVfModuleRequest request
+    public void prepDeleteAAIVfModule(DelegateExecution execution) {
 
 
-               def vnfId = execution.getVariable("vnfId")
-               def vfModuleId = execution.getVariable("vfModuleId")
-               // formulate the request for UpdateAAIVfModule
-               String request = """<DeleteAAIVfModuleRequest>
+        def vnfId = execution.getVariable("vnfId")
+        def vfModuleId = execution.getVariable("vfModuleId")
+        // formulate the request for UpdateAAIVfModule
+        String request = """<DeleteAAIVfModuleRequest>
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                        </DeleteAAIVfModuleRequest>""" as String
-               logger.debug("DeleteAAIVfModuleRequest :" + request)
-               
-               execution.setVariable("DeleteAAIVfModuleRequest", request)
-       }
+        logger.debug("DeleteAAIVfModuleRequest :" + request)
+
+        execution.setVariable("DeleteAAIVfModuleRequest", request)
+    }
 }
index b7ce608..2e5d2e3 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DeleteVfModuleVolumeInfraV1" name="DeleteVfModuleVolumeInfraV1" isExecutable="true">
     <bpmn2:scriptTask id="preProcessRequest_ScriptTask" name="PreProcess Incoming Request" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
@@ -51,13 +51,12 @@ deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLo
       <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{execution.getVariable("DELVfModVol_tenantId") == execution.getVariable("DELVfModVol_volumeGroupTenantId")}]]></bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_21" name="" sourceRef="ExclusiveGateway_3" targetRef="ScriptTask_2" />
-    <bpmn2:callActivity id="callVnfAdapterDeleteSubflow_CallActivity" name="Call Vnf Adapter Delete subflow" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="callVnfAdapterDeleteSubflow_CallActivity" name="Call Vnf Adapter Delete subflow" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
-        <camunda:in source="DELVfModVol_deleteVnfARequest" target="vnfAdapterRestV1Request" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DELVfModVol_deleteVnfAResponse" />
+        <camunda:in source="DELVfModVol_deleteVnfARequest" target="vnfAdapterTaskRequest" />
+        <camunda:out source="WorkflowResponse" target="DELVfModVol_deleteVnfAResponse" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
-        <camunda:in variables="all" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" />
       </bpmn2:extensionElements>
index 078d72a..ce346e1 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_ZBLUcCkQEeaY6ZhIaNLwzg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_ZBLUcCkQEeaY6ZhIaNLwzg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="UpdateVfModuleVolumeInfraV1" name="UpdateVfModuleVolumeInfraV1" isExecutable="true">
     <bpmn2:endEvent id="EndEvent_4" name="TheEnd">
       <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
@@ -56,14 +56,13 @@ def uvmv = new UpdateVfModuleVolumeInfraV1()
 uvmv.executeMethod('prepCompletionHandlerRequest', execution, UPDVfModVol_requestId, 'UPDATE', UPDVfModVol_source, isDebugLogEnabled)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_13" name="" sourceRef="ScriptTask_prepCompletionHandlerRequest" targetRef="CallActivity_completionHandler" />
-    <bpmn2:callActivity id="CallActivity_callVNFAdapterRest" name="VNFAdapterRest" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="CallActivity_callVNFAdapterRest" name="VNFAdapterRest" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
-        <camunda:out source="vnfAdapterRestV1Response" target="UPDVfModVol_vnfAdapterRestResponse" />
+        <camunda:out source="WorkflowResponse" target="UPDVfModVol_vnfAdapterRestResponse" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
-        <camunda:in source="UPDVfModVol_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="UPDVfModVol_vnfAdapterRestRequest" target="vnfAdapterTaskRequest" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_19</bpmn2:outgoing>
index c16061e..0d1b970 100644 (file)
@@ -224,10 +224,10 @@ doCreateVfModule.prepareCreateAAIVfModuleVolumeGroupRequest(execution)]]></bpmn2
 def doCreateVfModule = new DoCreateVfModule()
 doCreateVfModule.preProcessVNFAdapterRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:callActivity id="CallVNFAdapterVFModuleCreate" name="Call VNF Adapter to create VF Module" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="CallVNFAdapterVFModuleCreate" name="Call VNF Adapter to create VF Module" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
-        <camunda:in source="DCVFM_createVnfARequest" target="vnfAdapterRestV1Request" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DCVFM_createVnfAResponse" />
+        <camunda:in source="DCVFM_createVnfARequest" target="vnfAdapterTaskRequest" />
+        <camunda:out source="WorkflowResponse" target="DCVFM_createVnfAResponse" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
         <camunda:in variables="all" />
index 2508b31..e9675b8 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoCreateVfModuleRollback" name="DoCreateVfModuleRollback" isExecutable="true">
     <bpmn2:startEvent id="StartEvent_1">
       <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
 def dcvfmr = new DoCreateVfModuleRollback()
 dcvfmr.prepVNFAdapterRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" />
-    <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke&#10;VNFAdapterRestV1" calledElement="vnfAdapterRestV1">
+    <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapter" />
+    <bpmn2:callActivity id="InvokeVNFAdapter" name="Invoke&#10;VNFAdapterTask" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DoDVfMod_DoCreateVfModuleRollbackResponse" />
+        <camunda:in source="vnfAdapterTaskRequest" target="vnfAdapterTaskRequest" />
+        <camunda:out source="WorkflowResponse" target="DoDVfMod_DoCreateVfModuleRollbackResponse" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
       </bpmn2:extensionElements>
@@ -375,7 +374,7 @@ dcvfmr.setSuccessfulRollbackStatus(execution)]]></bpmn2:script>
 def dcvfmr = new DoCreateVfModuleRollback()
 dcvfmr.prepUpdateAAIVfModuleToAssigned(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_08aruzz" sourceRef="InvokeVNFAdapterRestV1" targetRef="ExclusiveGateway_0ahc44p" />
+    <bpmn2:sequenceFlow id="SequenceFlow_08aruzz" sourceRef="InvokeVNFAdapter" targetRef="ExclusiveGateway_0ahc44p" />
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
   <bpmn2:message id="Message_1" name="DoCreateVfModuleRollbackRequest" />
@@ -403,7 +402,7 @@ dcvfmr.prepUpdateAAIVfModuleToAssigned(execution)]]></bpmn2:script>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep">
         <dc:Bounds x="104" y="763" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1">
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapter">
         <dc:Bounds x="262" y="763" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ScriptTask_170" targetElement="_BPMNShape_CallActivity_13">
index a762b7e..6f3dced 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DoCreateVfModuleVolumeRollback" name="DoCreateVfModuleVolumeRollback" isExecutable="true">
     <bpmn:subProcess id="SubProcess_1p4663w" name="Sub-process for UnexpectedErrors" triggeredByEvent="true">
       <bpmn:scriptTask id="ScriptTask_0by1uwk" name="Log / Print Unexpected Error" scriptFormat="groovy">
@@ -33,10 +33,9 @@ doCreateVfModuleVolumeRollback.processJavaException(execution)]]></bpmn:script>
       <bpmn:outgoing>SequenceFlow_0h7k68j</bpmn:outgoing>
       <bpmn:outgoing>SequenceFlow_10dawse</bpmn:outgoing>
     </bpmn:exclusiveGateway>
-    <bpmn:callActivity id="CallActivity_03pmk7v" name="Call VNF Adapter Rollback" calledElement="vnfAdapterRestV1">
+    <bpmn:callActivity id="CallActivity_03pmk7v" name="Call VNF Adapter Rollback" calledElement="vnfAdapterTask">
       <bpmn:extensionElements>
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:in source="DCVFMODVOLRBK_rollbackVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="DCVFMODVOLRBK_rollbackVnfARequest" target="vnfAdapterTaskRequest" />
         <camunda:out source="workflowException" target="workflowException" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
index 26a4112..58ea0c4 100644 (file)
@@ -63,15 +63,14 @@ def doCreateVfModuleVolumeV2 = new DoCreateVfModuleVolumeV2()
 doCreateVfModuleVolumeV2.executeMethod('callRESTCreateAAIVolGrpName', execution, isDebugLogEnabled)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="ScriptTask_callRestAaiCreateVolumeGrp" targetRef="ScriptTask_prepareVnfAdapterCreate" />
-    <bpmn2:callActivity id="CallActivity_callVnfAdapterCreate" name="Call VNF Adapter Create" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="CallActivity_callVnfAdapterCreate" name="Call VNF Adapter Create" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
-        <camunda:in source="DCVFMODVOLV2_createVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="DCVFMODVOLV2_createVnfARequest" target="vnfAdapterTaskRequest" />
         <camunda:in source="msoRequestId" target="mso-request-id" />
         <camunda:in source="serviceInstanceId" target="mso-service-instance-id" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DCVFMODVOLV2_createVnfAResponse" />
+        <camunda:out source="WorkflowResponse" target="DCVFMODVOLV2_createVnfAResponse" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="VNFREST_vnfAdapterStatusCode" target="DCVFMODVOLV2_createVnfAReturnCode" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming>
index 848796c..6026fc8 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoDeleteVfModule" name="DoDeleteVfModule" isExecutable="true">
     <bpmn2:scriptTask id="UpdateAAIVfModulePrep" name="UpdateAAIVfModule\r&#10;Prep" scriptFormat="groovy">
       <bpmn2:incoming>SequenceFlow_0fp1wqz</bpmn2:incoming>
@@ -30,7 +30,7 @@ dvm.prepUpdateAAIVfModule(execution)]]></bpmn2:script>
       <bpmn2:incoming>SequenceFlow_029ioyr</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_14xn858</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterTask" />
     <bpmn2:callActivity id="InvokeSDNCAdapterV1_2" name="Invoke\r&#10;SDNCAdapterV1" calledElement="sdncAdapter">
       <bpmn2:extensionElements>
         <camunda:out source="WorkflowException" target="WorkflowException" />
@@ -60,12 +60,11 @@ def dvm = new DoDeleteVfModule()
 dvm.prepSDNCAdapterRequest(execution, "delete")]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="InvokeSDNCAdapterV1_2" />
-    <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke\r&#10;VNFAdapterRestV1" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="InvokeVNFAdapterTask" name="Invoke&#10;VNFAdapterTask" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DoDVfMod_doDeleteVfModuleResponse" />
+        <camunda:in source="vnfAdapterTaskRequest" target="vnfAdapterTaskRequest" />
+        <camunda:out source="WorkflowResponse" target="DoDVfMod_doDeleteVfModuleResponse" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
       </bpmn2:extensionElements>
@@ -182,7 +181,7 @@ doDeleteVfModule.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script>
 def dvm = new DoDeleteVfModule()
 dvm.queryAAIVfModuleForStatus(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1xruki1" sourceRef="InvokeVNFAdapterRestV1" targetRef="PostProcessVNFAdapterRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1xruki1" sourceRef="InvokeVNFAdapterTask" targetRef="PostProcessVNFAdapterRequest" />
     <bpmn2:sequenceFlow id="SequenceFlow_14xn858" sourceRef="InvokePrepareUpdateAAIVfModule" targetRef="VNFAdapterPrep" />
   </bpmn2:process>
   <bpmn2:error id="Error_1" name="MSO Workflow Exception" errorCode="MSOWorkflowException" />
@@ -221,7 +220,7 @@ dvm.queryAAIVfModuleForStatus(execution)]]></bpmn2:script>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep">
         <dc:Bounds x="193" y="206" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1">
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterTask">
         <dc:Bounds x="404" y="206" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_171" bpmnElement="UpdateAAIVfModulePrep">
index b7a1373..918964f 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoDeleteVfModuleFromVnf" name="DoDeleteVfModuleFromVnf" isExecutable="true">
-    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapterRestV1" />
+    <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="VNFAdapterPrep" targetRef="InvokeVNFAdapter" />
     <bpmn2:callActivity id="callSDNCAdapterTopologyUnassign" name="Call SDNC Adapter Topology Unassign" calledElement="sdncAdapter">
       <bpmn2:extensionElements>
         <camunda:out source="WorkflowException" target="WorkflowException" />
@@ -31,12 +31,11 @@ def ddvmfv = new DoDeleteVfModuleFromVnf()
 ddvmfv.preProcessSDNCUnassignRequest(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="SDNCAdapterPrep2" targetRef="callSDNCAdapterTopologyUnassign" />
-    <bpmn2:callActivity id="InvokeVNFAdapterRestV1" name="Invoke\r&#10;&#10;VNFAdapterRestV1" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="InvokeVNFAdapter" name="Invoke&#10;&#10;VNFAdapter" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:in source="vnfAdapterRestV1Request" target="vnfAdapterRestV1Request" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DDVMFV_doDeleteVfModuleResponse" />
+        <camunda:in source="vnfAdapterTaskRequest" target="vnfAdapterTaskRequest" />
+        <camunda:out source="WorkflowResponse" target="DDVMFV_doDeleteVfModuleResponse" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
       </bpmn2:extensionElements>
@@ -83,7 +82,7 @@ ddvmfv.postProcessVNFAdapterRequest(execution)]]></bpmn2:script>
     </bpmn2:startEvent>
     <bpmn2:sequenceFlow id="SequenceFlow_0y4td40" sourceRef="preProcessSDNCDeactivateRequest" targetRef="callSDNCAdapterTopologyDeactivate" />
     <bpmn2:sequenceFlow id="SequenceFlow_12q2r4i" sourceRef="callSDNCAdapterTopologyDeactivate" targetRef="postProcessSDNCDeactivateRequest" />
-    <bpmn2:sequenceFlow id="SequenceFlow_0hia88a" sourceRef="InvokeVNFAdapterRestV1" targetRef="PostProcessVNFAdapterRequest" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0hia88a" sourceRef="InvokeVNFAdapter" targetRef="PostProcessVNFAdapterRequest" />
     <bpmn2:sequenceFlow id="SequenceFlow_0kx9e3s" sourceRef="postProcessSDNCDeactivateRequest" targetRef="VNFAdapterPrep" />
     <bpmn2:sequenceFlow id="SequenceFlow_0ltm4jt" sourceRef="DeleteNetworkPoliciesFromAAI" targetRef="SDNCAdapterPrep2" />
     <bpmn2:scriptTask id="preProcessSDNCDeactivateRequest" name="PreProcess SDNC Deactivate Request" scriptFormat="groovy">
@@ -187,7 +186,7 @@ ddvmfv.prepDeleteAAIVfModule(execution)]]></bpmn2:script>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_170" bpmnElement="VNFAdapterPrep">
         <dc:Bounds x="125" y="330" width="100" height="80" />
       </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapterRestV1">
+      <bpmndi:BPMNShape id="_BPMNShape_CallActivity_13" bpmnElement="InvokeVNFAdapter">
         <dc:Bounds x="281" y="330" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="_BPMNShape_ScriptTask_172" bpmnElement="SDNCAdapterPrep2">
index 4409f2a..e7706c2 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0">
+<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0">
   <bpmn:process id="DoDeleteVfModuleVolumeV2" name="DoDeleteVfModuleVolumeV2" isExecutable="true">
     <bpmn:startEvent id="StartEvent_1" name="Start">
       <bpmn:outgoing>SequenceFlow_1gvfdp4</bpmn:outgoing>
@@ -25,21 +25,20 @@ deleteVfMod.executeMethod('callRESTQueryAAIForVolumeGroup', execution, isDebugLo
 def deleteVfMod = new DoDeleteVfModuleVolumeV2()
 deleteVfMod.executeMethod('prepareVnfAdapterDeleteRequest', execution, isDebugLogEnabled)]]></bpmn:script>
     </bpmn:scriptTask>
-    <bpmn:callActivity id="Task_14fsstq" name="Call REST VNF Adapter Delete" calledElement="vnfAdapterRestV1">
+    <bpmn:callActivity id="Task_14fsstq" name="Call REST VNF Adapter Delete" calledElement="vnfAdapterTask">
       <bpmn:extensionElements>
-        <camunda:in source="DDVMV_deleteVnfARequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="DDVMV_deleteVnfARequest" target="vnfAdapterTaskRequest" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
-        <camunda:in variables="all" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DDVMV_deleteVnfAResponse" />
+        <camunda:out source="WorkflowResponse" target="DDVMV_deleteVnfAResponse" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
         <camunda:out source="VNFREST_SuccessIndicator" target="VNFREST_SuccessIndicator" />
       </bpmn:extensionElements>
       <bpmn:incoming>SequenceFlow_1tgngf7</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_1x3luyj</bpmn:outgoing>
+      <bpmn:outgoing>SequenceFlow_04zsr0f</bpmn:outgoing>
     </bpmn:callActivity>
     <bpmn:scriptTask id="Task_17q1roq" name="Call REST AAI Delete Volume Group" scriptFormat="groovy">
-      <bpmn:incoming>SequenceFlow_0cy0y9t</bpmn:incoming>
+      <bpmn:incoming>SequenceFlow_04zsr0f</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_13c3cv2</bpmn:outgoing>
       <bpmn:script><![CDATA[import org.onap.so.bpmn.infrastructure.scripts.*
 def deleteVfMod = new DoDeleteVfModuleVolumeV2()
@@ -61,20 +60,6 @@ deleteVfMod.executeMethod('preProcessRequest', execution, isDebugLogEnabled)
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_1gvfdp4" sourceRef="StartEvent_1" targetRef="Task_1i432ud" />
     <bpmn:sequenceFlow id="SequenceFlow_1vy2ojp" sourceRef="Task_1i432ud" targetRef="Task_06u1lr0" />
-    <bpmn:exclusiveGateway id="ExclusiveGateway_0o3lxtf" name="VNF Adapter REST call success?">
-      <bpmn:incoming>SequenceFlow_1x3luyj</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0cy0y9t</bpmn:outgoing>
-      <bpmn:outgoing>SequenceFlow_1rgd8dg</bpmn:outgoing>
-    </bpmn:exclusiveGateway>
-    <bpmn:sequenceFlow id="SequenceFlow_1x3luyj" sourceRef="Task_14fsstq" targetRef="ExclusiveGateway_0o3lxtf" />
-    <bpmn:sequenceFlow id="SequenceFlow_0cy0y9t" name="Yes" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="Task_17q1roq">
-      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">#{VNFREST_SuccessIndicator == true}</bpmn:conditionExpression>
-    </bpmn:sequenceFlow>
-    <bpmn:endEvent id="EndEvent_00cohim" name="throw MSOException">
-      <bpmn:incoming>SequenceFlow_1rgd8dg</bpmn:incoming>
-      <bpmn:errorEventDefinition errorRef="Error_0fa7ks7" />
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_1rgd8dg" sourceRef="ExclusiveGateway_0o3lxtf" targetRef="EndEvent_00cohim" />
     <bpmn:scriptTask id="Task_018w43g" name="Post Process" scriptFormat="groovy">
       <bpmn:incoming>SequenceFlow_13c3cv2</bpmn:incoming>
       <bpmn:outgoing>SequenceFlow_1sgtwr2</bpmn:outgoing>
@@ -84,6 +69,7 @@ deleteVfMod.executeMethod('postProcess', execution, isDebugLogEnabled)]]></bpmn:
     </bpmn:scriptTask>
     <bpmn:sequenceFlow id="SequenceFlow_13c3cv2" sourceRef="Task_17q1roq" targetRef="Task_018w43g" />
     <bpmn:sequenceFlow id="SequenceFlow_1sgtwr2" sourceRef="Task_018w43g" targetRef="EndEvent_0fw1gkf" />
+    <bpmn:sequenceFlow id="SequenceFlow_04zsr0f" sourceRef="Task_14fsstq" targetRef="Task_17q1roq" />
   </bpmn:process>
   <bpmn:error id="Error_0fa7ks7" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
@@ -153,39 +139,6 @@ deleteVfMod.executeMethod('postProcess', execution, isDebugLogEnabled)]]></bpmn:
           <dc:Bounds x="377" y="95" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ExclusiveGateway_0o3lxtf_di" bpmnElement="ExclusiveGateway_0o3lxtf" isMarkerVisible="true">
-        <dc:Bounds x="1028" y="95" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1020" y="145" width="66" height="36" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1x3luyj_di" bpmnElement="SequenceFlow_1x3luyj">
-        <di:waypoint xsi:type="dc:Point" x="965" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="1028" y="120" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="997" y="95" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0cy0y9t_di" bpmnElement="SequenceFlow_0cy0y9t">
-        <di:waypoint xsi:type="dc:Point" x="1078" y="120" />
-        <di:waypoint xsi:type="dc:Point" x="1151" y="120" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1106" y="95" width="18" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="EndEvent_0zln0ww_di" bpmnElement="EndEvent_00cohim">
-        <dc:Bounds x="1035" y="274" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1016" y="310" width="73" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_1rgd8dg_di" bpmnElement="SequenceFlow_1rgd8dg">
-        <di:waypoint xsi:type="dc:Point" x="1053" y="145" />
-        <di:waypoint xsi:type="dc:Point" x="1053" y="274" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="1068" y="199.5" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ScriptTask_1ilduoy_di" bpmnElement="Task_018w43g">
         <dc:Bounds x="1298" y="80" width="100" height="80" />
       </bpmndi:BPMNShape>
@@ -203,6 +156,13 @@ deleteVfMod.executeMethod('postProcess', execution, isDebugLogEnabled)]]></bpmn:
           <dc:Bounds x="1431" y="95" width="0" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_04zsr0f_di" bpmnElement="SequenceFlow_04zsr0f">
+        <di:waypoint xsi:type="dc:Point" x="965" y="120" />
+        <di:waypoint xsi:type="dc:Point" x="1151" y="120" />
+        <bpmndi:BPMNLabel>
+          <dc:Bounds x="1058" y="99" width="0" height="12" />
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn:definitions>
index 46e7ddc..cfda2ad 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.4.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_Wblj8GyfEeWUWLTvug7ZOg" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.10.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="DoUpdateVfModule" name="DoUpdateVfModule" isExecutable="true">
     <bpmn2:documentation><![CDATA[This flow expects its incoming request to be in the variable 'DoUpdateVfModuleRequest'.  This flow produces no output.]]></bpmn2:documentation>
     <bpmn2:scriptTask id="PrepareUpdateAAIVfModule_prep" name="Prepare Update AAI Vf Module (prep)" scriptFormat="groovy">
@@ -121,8 +121,7 @@ duvm.prepUpdateAAIGenericVnf(execution)]]></bpmn2:script>
       <bpmn2:outgoing>SequenceFlow_9</bpmn2:outgoing>
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_9" name="" sourceRef="CallActivity_1" targetRef="ScriptTask_10" />
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Skip Update
-&#10;Generic Vnf?" default="SequenceFlow_14">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_1" name="Skip Update\r&#10;&#10;Generic Vnf?" default="SequenceFlow_14">
       <bpmn2:incoming>SequenceFlow_13</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_14</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_18</bpmn2:outgoing>
@@ -157,14 +156,13 @@ duvm.prepSDNCTopologyChg(execution)]]></bpmn2:script>
       <bpmn2:incoming>SequenceFlow_12</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
     </bpmn2:callActivity>
-    <bpmn2:callActivity id="ScriptTask_9" name="VnfAdapterRest" calledElement="vnfAdapterRestV1">
+    <bpmn2:callActivity id="ScriptTask_9" name="VnfAdapterRest" calledElement="vnfAdapterTask">
       <bpmn2:extensionElements>
-        <camunda:in source="DOUPVfMod_vnfAdapterRestRequest" target="vnfAdapterRestV1Request" />
+        <camunda:in source="DOUPVfMod_vnfAdapterRestRequest" target="vnfAdapterTaskRequest" />
         <camunda:in source="mso-request-id" target="mso-request-id" />
         <camunda:in source="mso-service-instance-id" target="mso-service-instance-id" />
-        <camunda:in source="isDebugLogEnabled" target="isDebugLogEnabled" />
         <camunda:out source="WorkflowException" target="WorkflowException" />
-        <camunda:out source="vnfAdapterRestV1Response" target="DOUPVfMod_vnfAdapterRestResponse" />
+        <camunda:out source="WorkflowResponse" target="DOUPVfMod_vnfAdapterRestResponse" />
       </bpmn2:extensionElements>
       <bpmn2:incoming>SequenceFlow_21</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_24</bpmn2:outgoing>
@@ -248,8 +246,7 @@ def duvm = new DoUpdateVfModule()
 duvm.prepConfirmVolumeGroupTenant(execution)]]></bpmn2:script>
     </bpmn2:scriptTask>
     <bpmn2:sequenceFlow id="SequenceFlow_11" name="" sourceRef="ScriptTask_2" targetRef="ScriptTask_3" />
-    <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="VolumeGroupId 
-&#10;present?" default="SequenceFlow_16">
+    <bpmn2:exclusiveGateway id="ExclusiveGateway_2" name="VolumeGroupId \r&#10;&#10;present?" default="SequenceFlow_16">
       <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing>
index 8b78560..97d78b5 100644 (file)
@@ -9,9 +9,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -91,7 +91,7 @@ public class VnfAdapterImpl {
 
     public void postProcessVnfAdapter(BuildingBlockExecution execution) {
         try {
-            String vnfAdapterResponse = execution.getVariable("vnfAdapterRestV1Response");
+            String vnfAdapterResponse = execution.getVariable("WorkflowResponse");
             if (!StringUtils.isEmpty(vnfAdapterResponse)) {
                 Object vnfRestResponse = unMarshal(vnfAdapterResponse);
                 if (vnfRestResponse instanceof CreateVfModuleResponse) {
index 97a9388..16e8c2d 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -103,7 +103,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
     @Test
     public void postProcessVnfAdapter_CreateResponseTest() {
-        execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
+        execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
         assertEquals(TEST_CONTRAIL_SERVICE_INSTANCE_FQDN, vfModule.getContrailServiceInstanceFqdn());
@@ -119,20 +119,20 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_CreateResponseTest_EmptyCreateVfModuleResponseTag() {
         expectedException.expect(BpmnError.class);
-        execution.setVariable("vnfAdapterRestV1Response", "<vfModuleStackId></vfModuleStackId>");
+        execution.setVariable("WorkflowResponse", "<vfModuleStackId></vfModuleStackId>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
     }
 
     @Test
     public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleStackIdTag() {
-        execution.setVariable("vnfAdapterRestV1Response", "<createVfModuleResponse></createVfModuleResponse>");
+        execution.setVariable("WorkflowResponse", "<createVfModuleResponse></createVfModuleResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
     }
 
     @Test
     public void postProcessVnfAdapter_CreateResponseTest_EmptyHeatStackId() {
-        execution.setVariable("vnfAdapterRestV1Response",
+        execution.setVariable("WorkflowResponse",
                 "<createVfModuleResponse><vfModuleStackId></vfModuleStackId></createVfModuleResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
@@ -140,7 +140,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
     @Test
     public void postProcessVnfAdapter_CreateResponseTest_EmptyVfModuleOutputs() {
-        execution.setVariable("vnfAdapterRestV1Response",
+        execution.setVariable("WorkflowResponse",
                 "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
@@ -156,7 +156,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest() {
         vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
-        execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_DELETE_RESPONSE);
+        execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_DELETE_RESPONSE);
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
         assertEquals(vfModule.getContrailServiceInstanceFqdn(), "");
@@ -170,7 +170,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleOutputs() {
-        execution.setVariable("vnfAdapterRestV1Response",
+        execution.setVariable("WorkflowResponse",
                 "<createVfModuleResponse><vfModuleOutputs></vfModuleOutputs></createVfModuleResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
@@ -183,14 +183,14 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
     @Test
     public void postProcessVnfAdapter_ResponseNullTest() {
-        execution.setVariable("vnfAdapterRestV1Response", null);
+        execution.setVariable("WorkflowResponse", null);
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
     }
 
     @Test
     public void postProcessVnfAdapter_ResponseEmptyTest() {
-        execution.setVariable("vnfAdapterRestV1Response", "");
+        execution.setVariable("WorkflowResponse", "");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(vfModule.getHeatStackId());
     }
@@ -198,7 +198,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_VfModuleDeletedFalse() {
         vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
-        execution.setVariable("vnfAdapterRestV1Response",
+        execution.setVariable("WorkflowResponse",
                 "<deleteVfModuleResponse><vfModuleDeleted>false</vfModuleDeleted></deleteVfModuleResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
@@ -207,14 +207,14 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVfModuleResponseTag() {
         expectedException.expect(BpmnError.class);
-        execution.setVariable("vnfAdapterRestV1Response", "<vfModuleDeleted></vfModuleDeleted>");
+        execution.setVariable("WorkflowResponse", "<vfModuleDeleted></vfModuleDeleted>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
     }
 
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_EmptyVfModuleDeletedTag() {
         vfModule.setHeatStackId(TEST_VFMODULE_HEATSTACK_ID);
-        execution.setVariable("vnfAdapterRestV1Response", "<deleteVfModuleResponse></deleteVfModuleResponse>");
+        execution.setVariable("WorkflowResponse", "<deleteVfModuleResponse></deleteVfModuleResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertEquals(TEST_VFMODULE_HEATSTACK_ID, vfModule.getHeatStackId());
     }
@@ -230,7 +230,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
 
     @Test
     public void postProcessVnfAdapter_CreateVolumeResponseTest() {
-        execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_CREATE_RESPONSE);
+        execution.setVariable("WorkflowResponse", VNF_ADAPTER_VOLUME_CREATE_RESPONSE);
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
     }
@@ -238,7 +238,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_CreateVolumeEmptyResponseTest() {
         expectedException.expect(BpmnError.class);
-        execution.setVariable("vnfAdapterRestV1Response", "<createVolumeGroupResponse></createVolumeGroupResponse>");
+        execution.setVariable("WorkflowResponse", "<createVolumeGroupResponse></createVolumeGroupResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(volumeGroup.getHeatStackId());
     }
@@ -246,7 +246,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_DeleteVolumeGroup() {
         volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
-        execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
+        execution.setVariable("WorkflowResponse", VNF_ADAPTER_VOLUME_DELETE_RESPONSE);
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertNull(volumeGroup.getHeatStackId());
     }
@@ -255,7 +255,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_VolumeGroupDeletedFalse() {
         volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
-        execution.setVariable("vnfAdapterRestV1Response",
+        execution.setVariable("WorkflowResponse",
                 "<deleteVolumeGroupResponse><volumeGroupDeleted>false</volumeGroupDeleted></deleteVolumeGroupResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
@@ -264,14 +264,14 @@ public class VnfAdapterImplTest extends BaseTaskTest {
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_EmptyDeleteVolumeGroupResponseTag() {
         expectedException.expect(BpmnError.class);
-        execution.setVariable("vnfAdapterRestV1Response", "<volumeGroupDeleted></volumeGroupDeleted>");
+        execution.setVariable("WorkflowResponse", "<volumeGroupDeleted></volumeGroupDeleted>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
     }
 
     @Test
     public void postProcessVnfAdapter_DeleteResponseTest_EmptyVolumeGroupDeletedTag() {
         volumeGroup.setHeatStackId(TEST_VOLUME_HEATSTACK_ID);
-        execution.setVariable("vnfAdapterRestV1Response", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
+        execution.setVariable("WorkflowResponse", "<deleteVolumeGroupResponse></deleteVolumeGroupResponse>");
         vnfAdapterImpl.postProcessVnfAdapter(execution);
         assertEquals(TEST_VOLUME_HEATSTACK_ID, volumeGroup.getHeatStackId());
     }
@@ -281,7 +281,7 @@ public class VnfAdapterImplTest extends BaseTaskTest {
         doThrow(RuntimeException.class).when(extractPojosForBB).extractByKey(any(),
                 ArgumentMatchers.eq(ResourceKey.VF_MODULE_ID));
 
-        execution.setVariable("vnfAdapterRestV1Response", VNF_ADAPTER_REST_CREATE_RESPONSE);
+        execution.setVariable("WorkflowResponse", VNF_ADAPTER_REST_CREATE_RESPONSE);
         expectedException.expect(BpmnError.class);
 
         vnfAdapterImpl.postProcessVnfAdapter(execution);
index 109dc55..ccd4376 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
index a482da5..9dfc245 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
index 19d42dd..4c97dbc 100644 (file)
@@ -19,7 +19,7 @@
       "allocationPools": [{
                "start": "107.244.64.2",
                "end": "107.244.64.16"
-               }]      
+               }]
     }
   ],
   "providerVlanNetwork": {
index b57c834..3ba5627 100644 (file)
        "backout": false,
        "failIfExists": false,
        "enableBridge": true,
-       "msoRequest": 
+       "msoRequest":
        {
                "requestId": "requestId",
                "serviceInstanceId": "serviceInstanceId"
        },
 
-       "vfModuleParams": 
+       "vfModuleParams":
        {
                "vnf_id": "vnfId",
                "vnf_name": "vnfName",
index da826b8..3fbf026 100644 (file)
        "backout": false,
        "failIfExists": false,
        "enableBridge": true,
-       "msoRequest": 
+       "msoRequest":
        {
                "requestId": "requestId",
                "serviceInstanceId": "serviceInstanceId"
        },
 
-       "vfModuleParams": 
+       "vfModuleParams":
        {
                "environment_context": "environmentContext",
                "key1": "value1",
index 54f6e40..9f55449 100644 (file)
        "backout": false,
        "failIfExists": false,
     "enableBridge": true,
-       "msoRequest": 
+       "msoRequest":
        {
                "requestId": "requestId",
                "serviceInstanceId": "serviceInstanceId"
        },
 
-       "vfModuleParams": 
+       "vfModuleParams":
        {
                "vnf_id": "vnfId",
                "vnf_name": "vnfName",
@@ -1,4 +1,4 @@
-package org.onap.so.externaltasks.logging;
+package org.onap.so.logging.tasks;
 
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
@@ -53,4 +53,5 @@ public class AuditMDCSetup {
         MDC.remove(ONAPLogConstants.MDCs.ELAPSED_TIME);
         MDC.remove(ONAPLogConstants.MDCs.PARTNER_NAME);
     }
+
 }
index 035ad1d..840a978 100644 (file)
@@ -51,7 +51,12 @@ public class ExternalTaskServiceUtils {
     }
 
     public int getMaxClients() {
-        return Integer.parseInt(env.getProperty("workflow.topics.maxClients", "3"));
+        return Integer.parseInt(env.getProperty("workflow.topics.maxClients", "10"));
+    }
+
+    public Long getLockDuration() {
+        Long lockDuration = Long.parseLong(env.getProperty("mso.audit.lock-time", "60000"));
+        return lockDuration;
     }
 
     @ScheduledLogging
index 9488187..d414135 100644 (file)
@@ -9,11 +9,11 @@ import org.springframework.stereotype.Component;
 @Component
 public abstract class ExternalTaskUtils {
 
+    private static final Logger logger = LoggerFactory.getLogger(ExternalTaskUtils.class);
+
     @Autowired
     Environment env;
 
-    private static final Logger logger = LoggerFactory.getLogger(ExternalTaskUtils.class);
-
     private final RetrySequenceLevel retrySequenceLevel;
 
     public ExternalTaskUtils() {
@@ -49,7 +49,7 @@ public abstract class ExternalTaskUtils {
                 return seqInter;
             case LONG:
                 String[] seqLong = {"1", "1", "2", "3", "5", "8", "13", "20"};
-                if (env.getProperty("mso.workflow.topics.retrySequence") != null) {
+                if (env.getProperty("mso.workflow.topics.retrySequence.long") != null) {
                     seqLong = env.getProperty("mso.workflow.topics.retrySequence", String[].class);
                 }
                 return seqLong;
@@ -1,4 +1,4 @@
-package org.onap.so.externaltasks.logging;
+package org.onap.so.logging.tasks;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -11,28 +11,27 @@ import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.mockito.junit.MockitoJUnitRunner;
-import org.onap.logging.filter.base.MDCSetup;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
 import org.onap.so.logger.MdcConstants;
 import org.slf4j.MDC;
+import org.mockito.junit.MockitoJUnitRunner;
 
 @RunWith(MockitoJUnitRunner.class)
-public class AuditMDCSetupTest {
+public class MDCSetupTest {
 
     @Mock
-    private ExternalTask externalTask;
+    private org.onap.logging.filter.base.MDCSetup mdcSet;
 
     @Mock
-    private MDCSetup mdcSet;
-
-    @Spy
-    @InjectMocks
-    private AuditMDCSetup mdcSetup;
+    private ExternalTask externalTask;
 
     private String requestId = "9bb86b8d-a02f-4a0b-81a9-2eb963850009";
     private String serviceName = "testServiceName";
 
+    @Spy
+    @InjectMocks
+    AuditMDCSetup setup = new AuditMDCSetup();
+
     @After
     public void tearDown() {
         MDC.clear();
@@ -43,7 +42,7 @@ public class AuditMDCSetupTest {
         doReturn(requestId).when(externalTask).getVariable("mso-request-id");
         doReturn(serviceName).when(externalTask).getTopicName();
 
-        mdcSetup.setupMDC(externalTask);
+        setup.setupMDC(externalTask);
 
         assertNotNull(MDC.get(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP));
         assertEquals(requestId, MDC.get(ONAPLogConstants.MDCs.REQUEST_ID));
@@ -57,14 +56,14 @@ public class AuditMDCSetupTest {
     public void setElapsedTimeTest() {
         MDC.put(ONAPLogConstants.MDCs.ENTRY_TIMESTAMP, "2019-06-18T02:09:06.024Z");
 
-        mdcSetup.setElapsedTime();
+        setup.setElapsedTime();
 
         assertNotNull(MDC.get(ONAPLogConstants.MDCs.ELAPSED_TIME));
     }
 
     @Test
     public void setResponseCodeTest() {
-        mdcSetup.setResponseCode(ONAPLogConstants.ResponseStatus.INPROGRESS.toString());
+        setup.setResponseCode(ONAPLogConstants.ResponseStatus.INPROGRESS.toString());
 
         assertEquals(ONAPLogConstants.ResponseStatus.INPROGRESS.toString(),
                 MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
@@ -80,7 +79,7 @@ public class AuditMDCSetupTest {
         MDC.put(ONAPLogConstants.MDCs.ELAPSED_TIME, "318");
         MDC.put(ONAPLogConstants.MDCs.PARTNER_NAME, "SO.OPENSTACK_ADAPTER");
 
-        mdcSetup.clearClientMDCs();
+        setup.clearClientMDCs();
 
         assertNull(MDC.get(ONAPLogConstants.MDCs.RESPONSE_STATUS_CODE));
         assertNull(MDC.get(MdcConstants.OPENSTACK_STATUS_CODE));
index e27caa6..6c2dbb6 100644 (file)
@@ -1,17 +1,22 @@
 package org.onap.so.utils;
 
 import static org.junit.Assert.assertEquals;
+import org.camunda.bpm.client.task.ExternalTask;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.Spy;
 import org.mockito.junit.MockitoJUnitRunner;
 import org.springframework.core.env.Environment;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ExternalTaskUtilsTest {
 
+    @Mock
+    private ExternalTask externalTask;
+
     @Mock
     private Environment mockenv;
 
index 2311c4c..2fa8725 100644 (file)
@@ -17,10 +17,11 @@ public class QueryStackByIdDoubleFailure extends AbstractSimulatorScenario {
 
     @Override
     public void run(ScenarioDesigner scenario) {
-        // Get to see if stack exists
+        // Create Poll Service
+        scenario.scenarioEndpoint().getEndpointConfiguration().setTimeout(300000L);
         scenario.http().receive().get().extractFromHeader(DynamicEndpointUriResolver.REQUEST_PATH_HEADER_NAME,
                 "correlationId");
-        scenario.echo("${correlationId}");
+        scenario.echo("${correlationId}"); // step 2
         scenario.correlation().start().onHeader(DynamicEndpointUriResolver.REQUEST_PATH_HEADER_NAME,
                 "${correlationId}");
 
@@ -30,20 +31,63 @@ public class QueryStackByIdDoubleFailure extends AbstractSimulatorScenario {
         scenario.variable("tenantId", "872f331350c54e59991a8de2cbffb40c");
         scenario.variable("vServerId", "d29f3151-592d-4011-9356-ad047794e236");
         scenario.variable("stack_failure_message", "The Flavor ID (nd.c6r16d20) could not be found.");
+        scenario.http().send().response(HttpStatus.OK) // step 4
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
+
+        // Create Poll Retry
+        scenario.http().receive().get(); // step 5
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
+
+        // Rollback Delete of the stack
+        scenario.http().receive().delete(); // step 7
+        scenario.action(new DeleteVServers());
+        scenario.http().send().response(HttpStatus.NO_CONTENT);
+
+        // Rollback Poll
+        scenario.http().receive().get(); // step 10
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
 
+        // Rollback Poll Retry
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
+
+        // Create Poll
+        scenario.http().receive().get(); // step 14
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
 
-        // Delete of the stack
+        // Create Poll Retry
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
+
+        // Rollback Delete
         scenario.http().receive().delete();
         scenario.action(new DeleteVServers());
         scenario.http().send().response(HttpStatus.NO_CONTENT);
 
-        // Poll Deletion of stack for status
+        // Rollback Poll
+        scenario.http().receive().get(); // step 18
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
+
+        // Rollback Poll Retry
         scenario.http().receive().get();
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
 
+        // Delete
+        scenario.http().receive().delete();
+        scenario.http().send().response(HttpStatus.NO_CONTENT);
+
+        // Delete Poll
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
+
     }
 
 }
index 4d0d578..7f995f2 100644 (file)
@@ -3,8 +3,6 @@ package org.onap.so.simulator.scenarios.openstack;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.onap.so.simulator.actions.aai.DeleteVServers;
 import com.consol.citrus.endpoint.resolver.DynamicEndpointUriResolver;
 import com.consol.citrus.simulator.scenario.AbstractSimulatorScenario;
 import com.consol.citrus.simulator.scenario.Scenario;
@@ -17,7 +15,9 @@ public class QueryStackByIdFailure extends AbstractSimulatorScenario {
 
     @Override
     public void run(ScenarioDesigner scenario) {
-        // Get to see if stack exists
+        scenario.scenarioEndpoint().getEndpointConfiguration().setTimeout(300000L);
+
+        // Create Poll
         scenario.http().receive().get().extractFromHeader(DynamicEndpointUriResolver.REQUEST_PATH_HEADER_NAME,
                 "correlationId");
         scenario.echo("${correlationId}");
@@ -33,13 +33,13 @@ public class QueryStackByIdFailure extends AbstractSimulatorScenario {
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
 
+        // Create Poll Retry
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Failure.json"));
 
-        // Delete of the stack
-        scenario.http().receive().delete();
-        scenario.action(new DeleteVServers());
-        scenario.http().send().response(HttpStatus.NO_CONTENT);
 
-        // Poll Deletion of stack for status
+        // Rollback Poll
         scenario.http().receive().get();
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
index ba6a1a1..c8c81eb 100644 (file)
@@ -9,6 +9,10 @@ import com.consol.citrus.simulator.scenario.AbstractSimulatorScenario;
 import com.consol.citrus.simulator.scenario.Scenario;
 import com.consol.citrus.simulator.scenario.ScenarioDesigner;
 
+/**
+ * This scenario is used by the following test cases: Resume Service Instance Macro 3 Modules 1 To Complete
+ *
+ */
 @Scenario("Openstack-QueryStackByID-Macro1")
 @RequestMapping(value = "/sim/mockPublicUrl/stacks/macro_module_1/*", method = RequestMethod.GET)
 public class QueryStackByIdMacro1 extends AbstractSimulatorScenario {
@@ -16,6 +20,9 @@ public class QueryStackByIdMacro1 extends AbstractSimulatorScenario {
 
     @Override
     public void run(ScenarioDesigner scenario) {
+        scenario.scenarioEndpoint().getEndpointConfiguration().setTimeout(300000L);
+
+        // Poll
         scenario.http().receive().get().extractFromHeader(DynamicEndpointUriResolver.REQUEST_PATH_HEADER_NAME,
                 "correlationId");
         scenario.echo("${correlationId}");
@@ -27,8 +34,33 @@ public class QueryStackByIdMacro1 extends AbstractSimulatorScenario {
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
 
+        // Create (module_2)
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
+
+        // Create (module_3)
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
+
+        // Create (module_2 recreate)
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
+
+        // Delete
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
+
+        // Delete
         scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
 
+        // Poll
+        scenario.http().receive().get();
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
     }
index efd4204..aca5fe8 100644 (file)
@@ -9,6 +9,10 @@ import com.consol.citrus.simulator.scenario.AbstractSimulatorScenario;
 import com.consol.citrus.simulator.scenario.Scenario;
 import com.consol.citrus.simulator.scenario.ScenarioDesigner;
 
+/**
+ * This scenario is used by the following test cases: Resume Service Instance Macro 3 Modules 1 To Complete
+ *
+ */
 @Scenario("Openstack-QueryStackByID-Macro2")
 @RequestMapping(value = "/sim/mockPublicUrl/stacks/macro_module_2/*", method = RequestMethod.GET)
 public class QueryStackByIdMacro2 extends AbstractSimulatorScenario {
@@ -16,6 +20,9 @@ public class QueryStackByIdMacro2 extends AbstractSimulatorScenario {
 
     @Override
     public void run(ScenarioDesigner scenario) {
+        scenario.scenarioEndpoint().getEndpointConfiguration().setTimeout(300000L);
+
+        // Poll
         scenario.http().receive().get().extractFromHeader(DynamicEndpointUriResolver.REQUEST_PATH_HEADER_NAME,
                 "correlationId");
         scenario.echo("${correlationId}");
@@ -27,11 +34,19 @@ public class QueryStackByIdMacro2 extends AbstractSimulatorScenario {
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
 
+        // Delete
         scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
 
+        scenario.http().receive().get();
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
 
+        // Poll
+        scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
     }
 
 }
index 4d3ba86..9fc6faf 100644 (file)
@@ -9,6 +9,10 @@ import com.consol.citrus.simulator.scenario.AbstractSimulatorScenario;
 import com.consol.citrus.simulator.scenario.Scenario;
 import com.consol.citrus.simulator.scenario.ScenarioDesigner;
 
+/**
+ * This scenario is used by the following test cases: Resume Service Instance Macro 3 Modules 1 To Complete
+ *
+ */
 @Scenario("Openstack-QueryStackByID-Macro3")
 @RequestMapping(value = "/sim/mockPublicUrl/stacks/macro_module_3/*", method = RequestMethod.GET)
 public class QueryStackByIdMacro3 extends AbstractSimulatorScenario {
@@ -16,6 +20,8 @@ public class QueryStackByIdMacro3 extends AbstractSimulatorScenario {
 
     @Override
     public void run(ScenarioDesigner scenario) {
+        scenario.scenarioEndpoint().getEndpointConfiguration().setTimeout(300000L);
+
         scenario.http().receive().get().extractFromHeader(DynamicEndpointUriResolver.REQUEST_PATH_HEADER_NAME,
                 "correlationId");
         scenario.echo("${correlationId}");
@@ -24,11 +30,21 @@ public class QueryStackByIdMacro3 extends AbstractSimulatorScenario {
 
         scenario.variable("stackName", "macro_module_3");
 
+        // Poll
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
+
+        // Delete
+        scenario.http().receive().get();
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Created.json"));
 
         scenario.http().receive().get();
+        scenario.http().send().response(HttpStatus.OK)
+                .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));
 
+        // Poll
+        scenario.http().receive().get();
         scenario.http().send().response(HttpStatus.OK)
                 .payload(new ClassPathResource("openstack/gr_api/Stack_Deleted.json"));