Merge "Updated to include all VFModule members"
authorSteve Smokowski <ss835w@att.com>
Mon, 1 Apr 2019 13:18:13 +0000 (13:18 +0000)
committerGerrit Code Review <gerrit@onap.org>
Mon, 1 Apr 2019 13:18:13 +0000 (13:18 +0000)
57 files changed:
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtils.groovy
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/DelegateExecutionImpl.java
bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtilsTest.groovy
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/DelegateExecutionImplTest.java
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVfModuleInfra.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/CreateVnfInfra.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateE2EServiceInstanceRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateNetworkInstanceRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateServiceInstanceRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVfModule.groovy
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/DoCreateVnf.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoCreateVnfAndModulesRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteNetworkInstanceRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteServiceInstance.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-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnfAndModules.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstance.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateNetworkInstanceRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRG.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceBRGRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXC.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoCreateAllottedResourceTXCRollback.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceBRG.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/vcpe/scripts/DoDeleteAllottedResourceTXC.groovy
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/AttributeNameValue.java [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/VnfAdapterVfModuleObjectMapper.java
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleAddonRequest.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequest.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestDhcpDisabled.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestMultipleDhcp.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestNoUserParams.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestTrueBackout.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestWithCloudResources.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleRequestWithSingleAvailabilityZone.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleWithNoEnvironmentAndWorkloadContextRequest.json
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/VnfAndVfModuleMapper/vnfAdapterCreateVfModuleWithVolumeGroupRequest.json
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/InstanceManagement.java [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/JerseyConfiguration.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/MsoRequest.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/ServiceInstances.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/WorkflowSpecificationsHandler.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidation.java [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/InstanceManagementTest.java [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/MsoRequestTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/RequestHandlerUtilsTest.java [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/ServiceInstancesTest.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidationTest.java [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/v1ExecuteCustomWorkflow.json [new file with mode: 0644]
mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ExecuteCustomWorkflow.json [new file with mode: 0644]

index 1ceafb6..4670b11 100644 (file)
@@ -416,7 +416,7 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess
        *@param name
        *@return
        **/
-       public String getVariable(DelegateExecution execution, String name) {
+       public static String getVariable(DelegateExecution execution, String name) {
                def myObj = execution.getVariable(name)
                if(myObj instanceof VariableMap){
                        VariableMap serializedObjectMap = (VariableMap) myObj
index e6d54b8..eb83222 100644 (file)
@@ -47,22 +47,19 @@ class SDNCAdapterUtils {
 
        ExceptionUtil exceptionUtil = new ExceptionUtil()
        JsonUtils jsonUtil = new JsonUtils()
+       MsoUtils  msoUtils = new MsoUtils()
 
-       private AbstractServiceTaskProcessor taskProcessor
-
-       public SDNCAdapterUtils(AbstractServiceTaskProcessor taskProcessor) {
-               this.taskProcessor = taskProcessor
+       public SDNCAdapterUtils() {
        }
 
        String SDNCAdapterFeatureRequest(DelegateExecution execution, String requestName, String action, String callbackURL, String serviceOperation, String timeoutValueInMinutes) {
-               def utils=new MsoUtils()
 
                def prefix = execution.getVariable('prefix')
-               def request = taskProcessor.getVariable(execution, requestName)
-               def requestInformation = utils.getNodeXml(request, 'request-information', false)
-               def serviceInformation = utils.getNodeXml(request, 'service-information', false)
-               def featureInformation = utils.getNodeXml(request, 'feature-information', false)
-               def featureParameters = utils.getNodeXml(request, 'feature-parameters', false)
+               def request = AbstractServiceTaskProcessor.getVariable(execution, requestName)
+               def requestInformation = msoUtils.getNodeXml(request, 'request-information', false)
+               def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false)
+               def featureInformation = msoUtils.getNodeXml(request, 'feature-information', false)
+               def featureParameters = msoUtils.getNodeXml(request, 'feature-parameters', false)
 
                def requestId = execution.getVariable('testReqId') // for junits
                if(requestId==null){
@@ -71,10 +68,10 @@ class SDNCAdapterUtils {
 
                def svcInstanceId = execution.getVariable("mso-service-instance-id")
 
-               def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation)
-               def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation)
-               def nnsFeatureInformation = utils.removeXmlNamespaces(featureInformation)
-               def nnsFeatureParameters = utils.removeXmlNamespaces(featureParameters)
+               def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation)
+               def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation)
+               def nnsFeatureInformation = msoUtils.removeXmlNamespaces(featureInformation)
+               def nnsFeatureParameters = msoUtils.removeXmlNamespaces(featureParameters)
 
                String sdncAdapterFeatureRequest = """
                                <sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:sdncadapterworkflow="http://openecomp.com/mso/workflow/schema/v1"
@@ -95,18 +92,17 @@ class SDNCAdapterUtils {
                                        <sdncadapterworkflow:SDNCTimeOutValueInMinutes>${MsoUtils.xmlEscape(timeoutValueInMinutes)}</sdncadapterworkflow:SDNCTimeOutValueInMinutes>
                                </sdncadapterworkflow:SDNCAdapterWorkflowRequest>
                        """
-               sdncAdapterFeatureRequest = utils.removeXmlPreamble(utils.formatXML(sdncAdapterFeatureRequest))
+               sdncAdapterFeatureRequest = msoUtils.removeXmlPreamble(msoUtils.formatXml(sdncAdapterFeatureRequest))
                return sdncAdapterFeatureRequest
        }
 
        String SDNCAdapterActivateVnfRequest(DelegateExecution execution, String action, String callbackURL, String serviceOperation, String msoAction, String timeoutValueInMinutes) {
-               def utils=new MsoUtils()
 
                def prefix = execution.getVariable('prefix')
-               def request = taskProcessor.getVariable(execution, prefix+'Request')
-               def requestInformation = utils.getNodeXml(request, 'request-information', false)
-               def serviceInformation = utils.getNodeXml(request, 'service-information', false)
-               def vnfInformationList = utils.getNodeXml(request, 'vnf-information-list', false)
+               def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request')
+               def requestInformation = msoUtils.getNodeXml(request, 'request-information', false)
+               def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false)
+               def vnfInformationList = msoUtils.getNodeXml(request, 'vnf-information-list', false)
 
                def requestId = execution.getVariable('testReqId') // for junits
                if(requestId==null){
@@ -115,9 +111,9 @@ class SDNCAdapterUtils {
 
                def svcInstanceId = execution.getVariable("mso-service-instance-id")
 
-               def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation)
-               def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation)
-               def nnsVnfInformationList = utils.removeXmlNamespaces(vnfInformationList)
+               def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation)
+               def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation)
+               def nnsVnfInformationList = msoUtils.removeXmlNamespaces(vnfInformationList)
 
                String sdncAdapterActivateVnfRequest = """
                                <sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:sdncadapterworkflow="http://openecomp.com/mso/workflow/schema/v1"
@@ -138,15 +134,14 @@ class SDNCAdapterUtils {
                                        <sdncadapterworkflow:SDNCTimeOutValueInMinutes>${MsoUtils.xmlEscape(timeoutValueInMinutes)}</sdncadapterworkflow:SDNCTimeOutValueInMinutes>
                                </sdncadapterworkflow:SDNCAdapterWorkflowRequest>
                        """
-               sdncAdapterActivateVnfRequest = utils.removeXmlPreamble(utils.formatXML(sdncAdapterActivateVnfRequest))
+               sdncAdapterActivateVnfRequest = msoUtils.removeXmlPreamble(msoUtils.formatXml(sdncAdapterActivateVnfRequest))
                return sdncAdapterActivateVnfRequest
        }
 
        String SDNCAdapterL3ToHigherLayerRequest(DelegateExecution execution, String action, String callbackURL, String serviceOperation, String timeoutValueInMinutes) {
-               def utils=new MsoUtils()
 
                def prefix = execution.getVariable('prefix')
-               def request = taskProcessor.getVariable(execution, prefix+'Request')
+               def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request')
 
                String requestInformation = """<request-information>
                                                                                <request-id>${MsoUtils.xmlEscape(execution.getVariable("mso-request-id"))}</request-id>
@@ -164,8 +159,8 @@ class SDNCAdapterUtils {
                }else if("delete".equalsIgnoreCase(action)){
                        xml.'request-action'.replaceBody('deleteTrinityBonding')
                }
-               requestInformation = utils.removeXmlPreamble(groovy.xml.XmlUtil.serialize(xml))
-               def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation)
+               requestInformation = msoUtils.removeXmlPreamble(groovy.xml.XmlUtil.serialize(xml))
+               def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation)
 
                def requestId = execution.getVariable('testReqId') // for junits
                if(requestId==null){
@@ -234,7 +229,7 @@ class SDNCAdapterUtils {
                                        <sdncadapterworkflow:SDNCTimeOutValueInMinutes>${MsoUtils.xmlEscape(timeoutValueInMinutes)}</sdncadapterworkflow:SDNCTimeOutValueInMinutes>
                                </sdncadapterworkflow:SDNCAdapterWorkflowRequest>
                        """
-               sdncAdapterL3ToHLRequest = utils.removeXmlPreamble(utils.formatXML(sdncAdapterL3ToHLRequest))
+               sdncAdapterL3ToHLRequest = msoUtils.removeXmlPreamble(msoUtils.formatXml(sdncAdapterL3ToHLRequest))
 
                return sdncAdapterL3ToHLRequest
        }
@@ -243,13 +238,12 @@ class SDNCAdapterUtils {
 
        private void SDNCAdapterActivateRequest(DelegateExecution execution, String resultVar, String svcAction,
                        String svcOperation, String additionalData) {
-                       def utils=new MsoUtils()
 
                        def prefix = execution.getVariable('prefix')
-                       def request = taskProcessor.getVariable(execution, prefix+'Request')
-                       def requestInformation = utils.getNodeXml(request, 'request-information', false)
-                       def serviceInformation = utils.getNodeXml(request, 'service-information', false)
-                       def serviceParameters = utils.getNodeXml(request, 'service-parameters', false)
+                       def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request')
+                       def requestInformation = msoUtils.getNodeXml(request, 'request-information', false)
+                       def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false)
+                       def serviceParameters = msoUtils.getNodeXml(request, 'service-parameters', false)
 
                        def requestId = execution.getVariable('testReqId') // for junits
                        if(requestId==null){
@@ -269,18 +263,18 @@ class SDNCAdapterUtils {
                                workflowException(execution, 'Internal Error', 9999) // TODO: what message and error code?
                        }
 
-                       def l2HomingInformation = utils.getNodeXml(serviceParameters, 'l2-homing-information', false)
-                       def internetEvcAccessInformation = utils.getNodeXml(serviceParameters, 'internet-evc-access-information', false)
-                       def vrLan = utils.getNodeXml(serviceParameters, 'vr-lan', false)
-                       def upceVmsServiceInformation = utils.getNodeXml(serviceParameters, 'ucpe-vms-service-information', false)
+                       def l2HomingInformation = msoUtils.getNodeXml(serviceParameters, 'l2-homing-information', false)
+                       def internetEvcAccessInformation = msoUtils.getNodeXml(serviceParameters, 'internet-evc-access-information', false)
+                       def vrLan = msoUtils.getNodeXml(serviceParameters, 'vr-lan', false)
+                       def upceVmsServiceInformation = msoUtils.getNodeXml(serviceParameters, 'ucpe-vms-service-information', false)
 
 
-                       def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation)
-                       def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation)
-                       def nnsl2HomingInformation = utils.removeXmlNamespaces(l2HomingInformation)
-                       def nnsInternetEvcAccessInformation = utils.removeXmlNamespaces(internetEvcAccessInformation)
-                       def nnsVrLan = utils.removeXmlNamespaces(vrLan)
-                       def nnsUpceVmsServiceInformation = utils.removeXmlNamespaces(upceVmsServiceInformation)
+                       def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation)
+                       def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation)
+                       def nnsl2HomingInformation = msoUtils.removeXmlNamespaces(l2HomingInformation)
+                       def nnsInternetEvcAccessInformation = msoUtils.removeXmlNamespaces(internetEvcAccessInformation)
+                       def nnsVrLan = msoUtils.removeXmlNamespaces(vrLan)
+                       def nnsUpceVmsServiceInformation = msoUtils.removeXmlNamespaces(upceVmsServiceInformation)
 
                        if (additionalData == null) {
                                additionalData = ""
@@ -319,7 +313,7 @@ class SDNCAdapterUtils {
                                </sdncadapterworkflow:SDNCAdapterWorkflowRequest>
                        """
 
-                       content = utils.removeXmlPreamble(utils.formatXML(content))
+                       content = msoUtils.removeXmlPreamble(msoUtils.formatXml(content))
                        execution.setVariable(resultVar, content)
        }
 
@@ -343,7 +337,7 @@ class SDNCAdapterUtils {
         * @param isAic3 boolean to indicate whether request is for AIC3.0
         */
        public void sdncReservePrep(DelegateExecution execution, String action, String resultVar, boolean isAic3) {
-               sdncPrep(execution, resultVar, action , 'service-configuration-operation', null, isAic3, this.taskProcessor)
+               sdncPrep(execution, resultVar, action , 'service-configuration-operation', null, isAic3)
        }
 
        /**
@@ -356,8 +350,8 @@ class SDNCAdapterUtils {
         *        RequestData element (may be null)
         */
        public void sdncPrep(DelegateExecution execution, String resultVar, String svcAction,
-               String svcOperation, String additionalData, AbstractServiceTaskProcessor taskProcessor) {
-               sdncPrep(execution, resultVar, svcAction, svcOperation, additionalData, false, taskProcessor)
+               String svcOperation, String additionalData) {
+               sdncPrep(execution, resultVar, svcAction, svcOperation, additionalData, false)
        }
 
        /**
@@ -370,7 +364,7 @@ class SDNCAdapterUtils {
         * @param isAic3 boolean to indicate whether request is for AIC3.0
         */
        public void sdncPrep(DelegateExecution execution, String resultVar, String svcAction,
-                       String svcOperation, String additionalData, boolean isAic3, AbstractServiceTaskProcessor taskProcessor) {
+                       String svcOperation, String additionalData, boolean isAic3) {
                def method = getClass().getSimpleName() + '.sdncPrep(' +
                        'execution=' + execution.getId() +
                        ', resultVar=' + resultVar +
@@ -380,14 +374,14 @@ class SDNCAdapterUtils {
                        ')'
 
                logger.trace('Entered ' + method)
-               MsoUtils utils = taskProcessor.utils
+
                try {
                        def prefix = execution.getVariable('prefix')
-                       def request = taskProcessor.getVariable(execution, prefix+'Request')
-                       def requestInformation = utils.getNodeXml(request, 'request-information', false)
-                       def serviceInformation = utils.getNodeXml(request, 'service-information', false)
-                       def serviceParameters = utils.getChildNodes(request, 'service-parameters')
-                       def requestAction = utils.getNodeText(request, 'request-action')
+                       def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request')
+                       def requestInformation = msoUtils.getNodeXml(request, 'request-information', false)
+                       def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false)
+                       def serviceParameters = msoUtils.getChildNodes(request, 'service-parameters')
+                       def requestAction = msoUtils.getNodeText(request, 'request-action')
 
                        def timeoutInMinutes = UrnPropertiesReader.getVariable('mso.sdnc.timeout.firewall.minutes',execution)
 
@@ -407,23 +401,23 @@ class SDNCAdapterUtils {
                                exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Internal Error - During PreProcess Request")
                        }
 
-                       def l2HomingInformation = utils.getNodeXml(request, 'l2-homing-information', false)
-                       def internetEvcAccessInformation = utils.getNodeXml(request, 'internet-evc-access-information', false)
-                       def vrLan = utils.getNodeXml(request, 'vr-lan', false)
-                       def upceVmsServiceInfo = utils.getNodeXml(request, 'ucpe-vms-service-information', false)
-                       def vnfInformationList = utils.getNodeXml(request, 'vnf-information-list', false)
-
-                       def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation)
-                       def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation)
-                       def nnsl2HomingInformation = utils.removeXmlNamespaces(l2HomingInformation)
-                       def nnsInternetEvcAccessInformation = utils.removeXmlNamespaces(internetEvcAccessInformation)
-                       def nnsVrLan = utils.removeXmlNamespaces(vrLan)
-                       def nnsUpceVmsServiceInfo = utils.removeXmlNamespaces(upceVmsServiceInfo)
-                       def nnsVnfInformationList = utils.removeXmlNamespaces(vrLan)
+                       def l2HomingInformation = msoUtils.getNodeXml(request, 'l2-homing-information', false)
+                       def internetEvcAccessInformation = msoUtils.getNodeXml(request, 'internet-evc-access-information', false)
+                       def vrLan = msoUtils.getNodeXml(request, 'vr-lan', false)
+                       def upceVmsServiceInfo = msoUtils.getNodeXml(request, 'ucpe-vms-service-information', false)
+                       def vnfInformationList = msoUtils.getNodeXml(request, 'vnf-information-list', false)
+
+                       def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation)
+                       def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation)
+                       def nnsl2HomingInformation = msoUtils.removeXmlNamespaces(l2HomingInformation)
+                       def nnsInternetEvcAccessInformation = msoUtils.removeXmlNamespaces(internetEvcAccessInformation)
+                       def nnsVrLan = msoUtils.removeXmlNamespaces(vrLan)
+                       def nnsUpceVmsServiceInfo = msoUtils.removeXmlNamespaces(upceVmsServiceInfo)
+                       def nnsVnfInformationList = msoUtils.removeXmlNamespaces(vrLan)
                        def nnsinternetSvcChangeDetails = ""
 
                        if(requestAction!=null && requestAction.equals("ChangeLayer3ServiceProvRequest")){
-                               def internetSvcChangeDetails = utils.removeXmlNamespaces(serviceParameters)
+                               def internetSvcChangeDetails = msoUtils.removeXmlNamespaces(serviceParameters)
                                nnsinternetSvcChangeDetails = """<internet-service-change-details>
                                                        ${internetSvcChangeDetails}
                                                </internet-service-change-details>"""
@@ -466,7 +460,7 @@ class SDNCAdapterUtils {
                                </sdncadapterworkflow:SDNCAdapterWorkflowRequest>
                        """
 
-                       content = utils.removeXmlPreamble(utils.formatXML(content))
+                       content = msoUtils.removeXmlPreamble(msoUtils.formatXml(content))
                        execution.setVariable(resultVar, content)
                        logger.debug(resultVar + ' = ' + System.lineSeparator() + content)
 
@@ -506,7 +500,6 @@ class SDNCAdapterUtils {
         *   RequestData element (may be null)
         */
         public String sdncTopologyRequestV2 (DelegateExecution execution, String requestXML, String serviceInstanceId, String callbackUrl, String action, String requestAction, String cloudRegionId, networkId, L3Network queryAAIResponse, String additionalData) {
-                def utils=new MsoUtils()
 
                 // SNDC is expecting request Id for header as unique each call.
                 String hdrRequestId = ""
@@ -521,17 +514,17 @@ class SDNCAdapterUtils {
                 try {
                         requestId = execution.getVariable("mso-request-id")
                 } catch (Exception ex) {
-                        requestId = utils.getNodeText(requestXML, "request-id")
+                        requestId = msoUtils.getNodeText(requestXML, "request-id")
                 }
 
                 String aicCloudRegion = cloudRegionId
                 String tenantId = ""
-                if (utils.nodeExists(requestXML, "tenant-id")) {
-                        tenantId = utils.getNodeText(requestXML, "tenant-id")
+                if (msoUtils.nodeExists(requestXML, "tenant-id")) {
+                        tenantId = msoUtils.getNodeText(requestXML, "tenant-id")
                 }
                 String networkType = ""
-                if (utils.nodeExists(requestXML, "network-type")) {
-                        networkType = utils.getNodeText(requestXML, "network-type")
+                if (msoUtils.nodeExists(requestXML, "network-type")) {
+                        networkType = msoUtils.getNodeText(requestXML, "network-type")
                 }
 
                 // Replace/Use the value of network-type from aai query (vs input) during Delete Network flows.
@@ -540,20 +533,20 @@ class SDNCAdapterUtils {
                 }
 
                 String serviceId = ""
-                if (utils.nodeExists(requestXML, "service-id")) {
-                        serviceId = utils.getNodeText(requestXML, "service-id")
+                if (msoUtils.nodeExists(requestXML, "service-id")) {
+                        serviceId = msoUtils.getNodeText(requestXML, "service-id")
                 }
                 String networkName = ""
                 // Replace/Use the value of network-name from aai query (vs input) if it was already set in AAI
                 if (queryAAIResponse != null) {
                         networkName = queryAAIResponse.getNetworkName()
                 }
-                if (networkName.isEmpty() && utils.nodeExists(requestXML, "network-name")) {
-                        networkName = utils.getNodeText(requestXML, "network-name")
+                if (networkName.isEmpty() && msoUtils.nodeExists(requestXML, "network-name")) {
+                        networkName = msoUtils.getNodeText(requestXML, "network-name")
                 }
                 String source = ""
-                if (utils.nodeExists(requestXML, "source")) {
-                        source = utils.getNodeText(requestXML, "source")
+                if (msoUtils.nodeExists(requestXML, "source")) {
+                        source = msoUtils.getNodeText(requestXML, "source")
                 }
 
                 // get resourceLink from subflow execution variable
@@ -631,7 +624,6 @@ class SDNCAdapterUtils {
          *   RequestData element (may be null)
          */
          public String sdncTopologyRequestRsrc (DelegateExecution execution, String requestXML, String serviceInstanceId, String callbackUrl, String action, String requestAction, String cloudRegionId, networkId, String additionalData) {
-                 def utils=new MsoUtils()
 
                  // SNDC is expecting request Id for header as unique each call.
                  String hdrRequestId = ""
@@ -655,35 +647,35 @@ class SDNCAdapterUtils {
 
                  String aicCloudRegion = cloudRegionId
                  String tenantId = ""
-                 if (utils.nodeExists(requestXML, "tenant-id")) {
-                         tenantId = utils.getNodeText(requestXML, "tenant-id")
+                 if (msoUtils.nodeExists(requestXML, "tenant-id")) {
+                         tenantId = msoUtils.getNodeText(requestXML, "tenant-id")
                  }
                  String networkType = ""
-                 if (utils.nodeExists(requestXML, "network-type")) {
-                         networkType = utils.getNodeText(requestXML, "network-type")
+                 if (msoUtils.nodeExists(requestXML, "network-type")) {
+                         networkType = msoUtils.getNodeText(requestXML, "network-type")
                  }
 
                  String subscriptionServiceType = ""
-                 if (utils.nodeExists(requestXML, "subscription-service-type")) {
-                         subscriptionServiceType = utils.getNodeText(requestXML, "subscription-service-type")
+                 if (msoUtils.nodeExists(requestXML, "subscription-service-type")) {
+                         subscriptionServiceType = msoUtils.getNodeText(requestXML, "subscription-service-type")
                  }
 
                  String globalCustomerId = ""
-                 if (utils.nodeExists(requestXML, "global-customer-id")) {
-                         globalCustomerId = utils.getNodeText(requestXML, "global-customer-id")
+                 if (msoUtils.nodeExists(requestXML, "global-customer-id")) {
+                         globalCustomerId = msoUtils.getNodeText(requestXML, "global-customer-id")
                  }
 
                  String serviceId = ""
-                 if (utils.nodeExists(requestXML, "service-id")) {
-                         serviceId = utils.getNodeText(requestXML, "service-id")
+                 if (msoUtils.nodeExists(requestXML, "service-id")) {
+                         serviceId = msoUtils.getNodeText(requestXML, "service-id")
                  }
                  String networkName = ""
-                 if (utils.nodeExists(requestXML, "network-name")) {
-                         networkName = utils.getNodeText(requestXML, "network-name")
+                 if (msoUtils.nodeExists(requestXML, "network-name")) {
+                         networkName = msoUtils.getNodeText(requestXML, "network-name")
                  }
                  String source = ""
-                 if (utils.nodeExists(requestXML, "source")) {
-                         source = utils.getNodeText(requestXML, "source")
+                 if (msoUtils.nodeExists(requestXML, "source")) {
+                         source = msoUtils.getNodeText(requestXML, "source")
                  }
 
                  // get resourceLink from subflow execution variable
@@ -704,28 +696,28 @@ class SDNCAdapterUtils {
                  }
 
                  // network-information from 'networkModelInfo' // verify the DB Catalog response
-                 String networkModelInfo = utils.getNodeXml(requestXML, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
-                 String modelInvariantUuid = utils.getNodeText(networkModelInfo, "modelInvariantUuid") !=null ?
-                                             utils.getNodeText(networkModelInfo, "modelInvariantUuid") : ""
-                 String modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid")  !=null ?
-                                                 utils.getNodeText(networkModelInfo, "modelCustomizationUuid")  : ""
-                 String modelUuid = utils.getNodeText(networkModelInfo, "modelUuid") !=null ?
-                                    utils.getNodeText(networkModelInfo, "modelUuid") : ""
-                 String modelVersion = utils.getNodeText(networkModelInfo, "modelVersion") !=null ?
-                                           utils.getNodeText(networkModelInfo, "modelVersion") : ""
-                 String modelName = utils.getNodeText(networkModelInfo, "modelName") !=null ?
-                                    utils.getNodeText(networkModelInfo, "modelName") : ""
+                 String networkModelInfo = msoUtils.getNodeXml(requestXML, "networkModelInfo", false).replace("tag0:","").replace(":tag0","")
+                 String modelInvariantUuid = msoUtils.getNodeText(networkModelInfo, "modelInvariantUuid") !=null ?
+                                 msoUtils.getNodeText(networkModelInfo, "modelInvariantUuid") : ""
+                 String modelCustomizationUuid = msoUtils.getNodeText(networkModelInfo, "modelCustomizationUuid")  !=null ?
+                                 msoUtils.getNodeText(networkModelInfo, "modelCustomizationUuid")  : ""
+                 String modelUuid = msoUtils.getNodeText(networkModelInfo, "modelUuid") !=null ?
+                                 msoUtils.getNodeText(networkModelInfo, "modelUuid") : ""
+                 String modelVersion = msoUtils.getNodeText(networkModelInfo, "modelVersion") !=null ?
+                                 msoUtils.getNodeText(networkModelInfo, "modelVersion") : ""
+                 String modelName = msoUtils.getNodeText(networkModelInfo, "modelName") !=null ?
+                                 msoUtils.getNodeText(networkModelInfo, "modelName") : ""
 
                 // service-information from 'networkModelInfo' // verify the DB Catalog response
-                String serviceModelInfo = utils.getNodeXml(requestXML, "serviceModelInfo", false).replace("tag0:","").replace(":tag0","")
-                String serviceModelInvariantUuid = utils.getNodeText(serviceModelInfo, "modelInvariantUuid")  !=null ?
-                                                                                   utils.getNodeText(serviceModelInfo, "modelInvariantUuid")  : ""
-                String serviceModelUuid = utils.getNodeText(serviceModelInfo, "modelUuid") !=null ?
-                                                              utils.getNodeText(serviceModelInfo, "modelUuid") : ""
-                String serviceModelVersion = utils.getNodeText(serviceModelInfo, "modelVersion") !=null ?
-                                                                 utils.getNodeText(serviceModelInfo, "modelVersion") : ""
-                String serviceModelName = utils.getNodeText(serviceModelInfo, "modelName") !=null ?
-                                                          utils.getNodeText(serviceModelInfo, "modelName") : ""
+                String serviceModelInfo = msoUtils.getNodeXml(requestXML, "serviceModelInfo", false).replace("tag0:","").replace(":tag0","")
+                String serviceModelInvariantUuid = msoUtils.getNodeText(serviceModelInfo, "modelInvariantUuid")  !=null ?
+                                msoUtils.getNodeText(serviceModelInfo, "modelInvariantUuid")  : ""
+                String serviceModelUuid = msoUtils.getNodeText(serviceModelInfo, "modelUuid") !=null ?
+                                msoUtils.getNodeText(serviceModelInfo, "modelUuid") : ""
+                String serviceModelVersion = msoUtils.getNodeText(serviceModelInfo, "modelVersion") !=null ?
+                                msoUtils.getNodeText(serviceModelInfo, "modelVersion") : ""
+                String serviceModelName = msoUtils.getNodeText(serviceModelInfo, "modelName") !=null ?
+                                msoUtils.getNodeText(serviceModelInfo, "modelName") : ""
 
 
                  String content =
@@ -808,27 +800,27 @@ class SDNCAdapterUtils {
                                }else{
 
                                        // we need to peer into the request data for error
-                                       def String sdncAdapterWorkflowResponse = taskProcessor.utils.getNodeXml(response, 'response-data', false)
+                                       def String sdncAdapterWorkflowResponse = msoUtils.getNodeXml(response, 'response-data', false)
                                        def String decodedXml = sdncAdapterWorkflowResponse.replace('<?xml version="1.0" encoding="UTF-8"?>', "")
-                                       decodedXml = taskProcessor.utils.getNodeXml(response, 'RequestData')
+                                       decodedXml = msoUtils.getNodeXml(response, 'RequestData')
                                        logger.debug("decodedXml:\n" + decodedXml)
 
                                        int requestDataResponseCode = 200
                                        def String requestDataResponseMessage = ''
 
                                        try{
-                                               if (taskProcessor.utils.nodeExists(decodedXml, "response-message")) {
-                                                       requestDataResponseMessage = taskProcessor.utils.getNodeText(decodedXml, "response-message")
-                                               } else if (taskProcessor.utils.nodeExists(sdncAdapterWorkflowResponse, "ResponseMessage")) {
-                                                       requestDataResponseMessage = taskProcessor.utils.getNodeText(sdncAdapterWorkflowResponse, "ResponseMessage")
+                                               if (msoUtils.nodeExists(decodedXml, "response-message")) {
+                                                       requestDataResponseMessage = msoUtils.getNodeText(decodedXml, "response-message")
+                                               } else if (msoUtils.nodeExists(sdncAdapterWorkflowResponse, "ResponseMessage")) {
+                                                       requestDataResponseMessage = msoUtils.getNodeText(sdncAdapterWorkflowResponse, "ResponseMessage")
                                                }
                                        }catch(Exception e){
                                                logger.debug('Error caught while decoding resposne ' + e.getMessage())
                                        }
 
-                                       if(taskProcessor.utils.nodeExists(decodedXml, "response-code")) {
+                                       if(msoUtils.nodeExists(decodedXml, "response-code")) {
                                                logger.debug("response-code node Exist ")
-                                               String code = taskProcessor.utils.getNodeText(decodedXml, "response-code")
+                                               String code = msoUtils.getNodeText(decodedXml, "response-code")
                                                if(code.isEmpty() || code.equals("")){
                                                        // if response-code is blank then Success
                                                        logger.debug("response-code node is empty")
@@ -837,9 +829,9 @@ class SDNCAdapterUtils {
                                                        requestDataResponseCode  = code.toInteger()
                                                        logger.debug("response-code is: " + requestDataResponseCode)
                                                }
-                                       }else if(taskProcessor.utils.nodeExists(sdncAdapterWorkflowResponse, "ResponseCode")){
+                                       }else if(msoUtils.nodeExists(sdncAdapterWorkflowResponse, "ResponseCode")){
                                                logger.debug("ResponseCode node Exist ")
-                                               String code = taskProcessor.utils.getNodeText(sdncAdapterWorkflowResponse, "ResponseCode")
+                                               String code = msoUtils.getNodeText(sdncAdapterWorkflowResponse, "ResponseCode")
                                                if(code.isEmpty() || code.equals("")){
                                                        // if ResponseCode blank then Success
                                                        logger.debug("ResponseCode node is empty")
@@ -918,7 +910,7 @@ class SDNCAdapterUtils {
                                        if (success) {
 
                                                // we need to look inside the request data for error
-                                               def String callbackRequestData = taskProcessor.utils.getNodeXml(response, 'RequestData', false)
+                                               def String callbackRequestData = msoUtils.getNodeXml(response, 'RequestData', false)
                                                def String decodedXml = callbackRequestData
                                                logger.debug("decodedXml:\n" + decodedXml)
 
@@ -926,17 +918,17 @@ class SDNCAdapterUtils {
                                                def requestDataResponseMessage = ''
                                                int intDataResponseCode = 200
 
-                                               if (taskProcessor.utils.nodeExists(decodedXml, "response-code")) {
+                                               if (msoUtils.nodeExists(decodedXml, "response-code")) {
 
-                                                       requestDataResponseCode  = ((String) taskProcessor.utils.getNodeText(decodedXml, "response-code"))
-                                                       if (taskProcessor.utils.nodeExists(decodedXml, "response-message")) {
-                                                               requestDataResponseMessage  = taskProcessor.utils.getNodeText(decodedXml, "response-message")
+                                                       requestDataResponseCode  = ((String) msoUtils.getNodeText(decodedXml, "response-code"))
+                                                       if (msoUtils.nodeExists(decodedXml, "response-message")) {
+                                                               requestDataResponseMessage  = msoUtils.getNodeText(decodedXml, "response-message")
                                                        }
-                                               }else if(taskProcessor.utils.nodeExists(decodedXml, "ResponseCode")){
-                                                       requestDataResponseCode  = ((String) taskProcessor.utils.getNodeText(decodedXml, "ResponseCode")).toInteger()
-                                               }else if(taskProcessor.utils.nodeExists(response, "ResponseCode")){
-                                                       requestDataResponseCode  = ((String) taskProcessor.utils.getNodeText(response, "ResponseCode")).toInteger()
-                                                       requestDataResponseMessage  = taskProcessor.utils.getNodeText(response, "ResponseMessage")
+                                               }else if(msoUtils.nodeExists(decodedXml, "ResponseCode")){
+                                                       requestDataResponseCode  = ((String) msoUtils.getNodeText(decodedXml, "ResponseCode")).toInteger()
+                                               }else if(msoUtils.nodeExists(response, "ResponseCode")){
+                                                       requestDataResponseCode  = ((String) msoUtils.getNodeText(response, "ResponseCode")).toInteger()
+                                                       requestDataResponseMessage  = msoUtils.getNodeText(response, "ResponseMessage")
                                                }
 
                                                logger.debug("SDNC callback response-code: " + requestDataResponseCode)
@@ -944,8 +936,8 @@ class SDNCAdapterUtils {
 
                                                // Get the AAI Status to determine if rollback is needed on ASSIGN
                                                def aai_status = ''
-                                               if (taskProcessor.utils.nodeExists(decodedXml, "aai-status")) {
-                                                       aai_status = ((String) taskProcessor.utils.getNodeText(decodedXml, "aai-status"))
+                                               if (msoUtils.nodeExists(decodedXml, "aai-status")) {
+                                                       aai_status = ((String) msoUtils.getNodeText(decodedXml, "aai-status"))
                                                        logger.debug("SDNC sent AAI STATUS code: " + aai_status)
                                                }
                                                if (aai_status != null && !aai_status.equals("")) {
@@ -955,8 +947,8 @@ class SDNCAdapterUtils {
 
                                                // Get the result string to determine if rollback is needed on ASSIGN in Add Bonding flow only
                                                def sdncResult = ''
-                                               if (taskProcessor.utils.nodeExists(decodedXml, "result")) {
-                                                       sdncResult = ((String) taskProcessor.utils.getNodeText(decodedXml, "result"))
+                                               if (msoUtils.nodeExists(decodedXml, "result")) {
+                                                       sdncResult = ((String) msoUtils.getNodeText(decodedXml, "result"))
                                                        logger.debug("SDNC sent result: " + sdncResult)
                                                }
                                                if (sdncResult != null && !sdncResult.equals("")) {
index 1c1d6b7..39a209e 100644 (file)
@@ -1,22 +1,22 @@
 /*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (C) 2017 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
- 
+* ============LICENSE_START=======================================================
+* ONAP - SO
+* ================================================================================
+* Copyright (C) 2017 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=========================================================
- */
+* 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.bpmn.common;
 
@@ -31,92 +31,107 @@ import org.onap.so.bpmn.common.exceptions.RequiredExecutionVariableExeception;
 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public class DelegateExecutionImpl implements BuildingBlockExecution, Serializable {
 
-       private final Map<String, Serializable> seedMap;
-       private transient DelegateExecution execution;
-       private static final String INVALID_INPUT_MISSING = "Expected variable of \"%s\" not found in execution";
-       private static final String INVALID_INPUT_CLASS_CAST = "Expected variable of \"%s\" was the wrong object type in the execution";
-
-       private static final String MISSING_MSG = "Execution variable \"gBBInput\" cannot be null when executing building blocks";
-       private static final String MALFORMED_MSG = "Execution variable \"gBBInput\" must contain an element of type GeneralBuildingBlock";
-       
-       public DelegateExecutionImpl(Map<String, Serializable> seedMap) {
-               this.seedMap = seedMap;
-       }
-       
-       public DelegateExecutionImpl(DelegateExecution execution) {
-               this.seedMap = new HashMap<>();
-               execution.getVariables().forEach((key, value) -> {
-                       if (value instanceof Serializable) {
-                               seedMap.put(key, (Serializable)value);
-                       }
-               });
-               /* must occur for junit tests to work */
-               this.execution = execution;
-       }
-       @Override
-       public GeneralBuildingBlock getGeneralBuildingBlock() {
-               try {
-                       GeneralBuildingBlock generalBuildingBlock =  (GeneralBuildingBlock) execution.getVariable("gBBInput");
-                       
-                       if (generalBuildingBlock == null) {
-                               throw new MissingBuildingBlockInputException(MISSING_MSG);
-                       }
-                       
-                       return generalBuildingBlock;
-               } catch (ClassCastException e) {
-                       throw new MalformedBuildingBlockInputException(MALFORMED_MSG, e);
-               }
-       }
-
-       @Override
-       public <T> T getVariable(String key) {
-               return this.get(key);
-       }
-
-       @Override
-       public <T> T getRequiredVariable(String key) throws RequiredExecutionVariableExeception {
-               final T result;
-       
-               result = this.get(key);
-               if (result == null) {
-                       throw new RequiredExecutionVariableExeception(String.format(INVALID_INPUT_MISSING, key));
-
-               }
-               return result;
-       }
-
-       @Override
-       public void setVariable(String key, Serializable value) {
-               this.execution.setVariable(key, value);
-       }
-       
-       @Override
-       public Map<ResourceKey, String> getLookupMap() {
-               return this.get("lookupKeyMap");
-       }
-       
-       @Override
-       public String getFlowToBeCalled() {
-               return this.get("flowToBeCalled");
-       }
-       public DelegateExecution getDelegateExecution() {
-               return this.execution;
-       }
-       
-       public void setDelegateExecution(DelegateExecution execution) {
-               this.execution = execution;
-               this.seedMap.forEach((key, value) -> {
-                       if (!execution.hasVariable(key)) {
-                               execution.setVariable(key, value);
-                       }
-               });
-       }
-       
-       protected <T> T get(String key) {
-               final Object value = this.execution.getVariable(key);
-       
-               return (T)value;
-       }
+    private static final long serialVersionUID = 5559067662634919395L;
+
+    @JsonProperty
+    private final Map<String, Serializable> seedMap;
+
+    private transient DelegateExecution execution;
+    private static final String INVALID_INPUT_MISSING = "Expected variable of \"%s\" not found in execution";
+
+    private static final String MISSING_MSG =
+            "Execution variable \"gBBInput\" cannot be null when executing building blocks";
+    private static final String MALFORMED_MSG =
+            "Execution variable \"gBBInput\" must contain an element of type GeneralBuildingBlock";
+
+    public DelegateExecutionImpl(final Map<String, Serializable> seedMap) {
+        this.seedMap = seedMap;
+    }
+
+    public DelegateExecutionImpl(final DelegateExecution execution) {
+        this.seedMap = new HashMap<>();
+        execution.getVariables().forEach((key, value) -> {
+            if (value instanceof Serializable) {
+                seedMap.put(key, (Serializable) value);
+            }
+        });
+        /* must occur for junit tests to work */
+        this.execution = execution;
+    }
+
+    @JsonIgnore
+    @Override
+    public GeneralBuildingBlock getGeneralBuildingBlock() {
+        try {
+            final GeneralBuildingBlock generalBuildingBlock = (GeneralBuildingBlock) execution.getVariable("gBBInput");
+
+            if (generalBuildingBlock == null) {
+                throw new MissingBuildingBlockInputException(MISSING_MSG);
+            }
+
+            return generalBuildingBlock;
+        } catch (final ClassCastException e) {
+            throw new MalformedBuildingBlockInputException(MALFORMED_MSG, e);
+        }
+    }
+
+    @Override
+    public <T> T getVariable(final String key) {
+        return this.get(key);
+    }
+
+    @Override
+    public <T> T getRequiredVariable(final String key) throws RequiredExecutionVariableExeception {
+        final T result;
+
+        result = this.get(key);
+        if (result == null) {
+            throw new RequiredExecutionVariableExeception(String.format(INVALID_INPUT_MISSING, key));
+
+        }
+        return result;
+    }
+
+    @Override
+    public void setVariable(final String key, final Serializable value) {
+        this.execution.setVariable(key, value);
+    }
+
+    @JsonIgnore
+    @Override
+    public Map<ResourceKey, String> getLookupMap() {
+        return this.get("lookupKeyMap");
+    }
+
+    @JsonIgnore
+    @Override
+    public String getFlowToBeCalled() {
+        return this.get("flowToBeCalled");
+    }
+
+    @JsonIgnore
+    public DelegateExecution getDelegateExecution() {
+        return this.execution;
+    }
+
+    public void setDelegateExecution(final DelegateExecution execution) {
+        this.execution = execution;
+        this.seedMap.forEach((key, value) -> {
+            if (!execution.hasVariable(key)) {
+                execution.setVariable(key, value);
+            }
+        });
+    }
+
+    @SuppressWarnings("unchecked")
+    protected <T> T get(final String key) {
+        final Object value = this.execution.getVariable(key);
+        return (T) value;
+    }
+
 }
index 51dd77d..570acf4 100644 (file)
@@ -53,12 +53,7 @@ public class SDNCAdapterUtilsTest {
                map = new HashMap<String,Object>()
                svcex = mock(ExecutionEntity.class)
                wfex = null
-               tp = new AbstractServiceTaskProcessor() {
-                       @Override
-                       public void preProcessRequest(DelegateExecution execution) {
-                       }
-               };
-               utils = new SDNCAdapterUtils(tp)
+               utils = new SDNCAdapterUtils()
                
                // svcex gets its variables from "map"
                when(svcex.getVariable(any())).thenAnswer(
index 32a18d5..a30aadc 100644 (file)
 
 package org.onap.so.bpmn.common;
 
-import static org.hamcrest.CoreMatchers.hasItems;
-import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
-import static org.mockito.ArgumentMatchers.contains;
+import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -46,101 +42,115 @@ import org.onap.so.bpmn.common.exceptions.MissingBuildingBlockInputException;
 import org.onap.so.bpmn.common.exceptions.RequiredExecutionVariableExeception;
 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 public class DelegateExecutionImplTest {
 
-       @Rule
-       public ExpectedException thrown= ExpectedException.none();
-
-       
-       @Test
-       public void getVariable() throws RequiredExecutionVariableExeception {
-               Map<String, Serializable> map = new HashMap<>();
-               map.put("var1", "value1");
-               map.put("var2", "value2");
-               map.put("list1", (Serializable)Arrays.asList("value1", "value2"));
-               DelegateExecutionImpl impl = create(map);
-               
-               assertEquals("value1", impl.getVariable("var1"));
-               assertEquals("value2", impl.getRequiredVariable("var2"));
-               assertThat(impl.getVariable("list1"), IsIterableContainingInOrder.contains("value1", "value2"));
-
-       }
-       
-       
-       @Test
-       public void getRequiredVariableNotFound() throws RequiredExecutionVariableExeception {
-               DelegateExecutionImpl impl = create();
-               
-               thrown.expect(RequiredExecutionVariableExeception.class);
-               impl.getRequiredVariable("var1");
-       }
-       
-       
-       @Test
-       public void setVariable() {
-               DelegateExecutionImpl impl = create();
-               impl.setVariable("var1", "value1");
-               
-               assertEquals("value1", impl.get("var1"));
-       }
-       
-       @Test
-       public void getGeneralBuildingBlock() {
-               GeneralBuildingBlock gBB = mock(GeneralBuildingBlock.class);
-               Map<String, Serializable> map = new HashMap<>();
-               map.put("gBBInput", gBB);
-               DelegateExecutionImpl impl = create(map);
-               
-               assertEquals(gBB, impl.getGeneralBuildingBlock());
-       }
-       
-       @Test
-       public void getGeneralBuildingBlockNotFound() {
-
-               DelegateExecutionImpl impl = create();
-               
-               thrown.expect(MissingBuildingBlockInputException.class);
-               impl.getGeneralBuildingBlock();
-       }
-       
-       @Test
-       public void getGeneralBuildingBlockCastException() {
-               Map<String, Serializable> map = new HashMap<>();
-               map.put("gBBInput", new DelegateExecutionFake());
-               DelegateExecutionImpl impl = create(map);
-               
-               thrown.expect(MalformedBuildingBlockInputException.class);
-               impl.getGeneralBuildingBlock();
-       }
-       
-       @Test
-       public void getDelegateExecution() {
-               DelegateExecutionImpl impl = create();
-
-               assertNotNull(impl.getDelegateExecution());
-       }
-       
-       @Test
-       public void getLookupMap() {
-               Map<String, Serializable> lookup = new HashMap<>();
-               Map<String, Serializable> map = new HashMap<>();
-               map.put("lookupKeyMap", (Serializable) lookup);
-               DelegateExecutionImpl impl = create(map);
-               
-               assertEquals(lookup, impl.getLookupMap());
-       }
-       
-       private DelegateExecutionImpl create() {
-               return create(new HashMap<String, Serializable>());
-       }
-       
-       private DelegateExecutionImpl create(Map<String, Serializable> map) {
-               DelegateExecutionFake fake = new DelegateExecutionFake();
-               
-               for (Entry<String, Serializable> entry : map.entrySet()) {
-                       fake.setVariable(entry.getKey(), entry.getValue());
-               }
-               return new DelegateExecutionImpl(fake);
-       }
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+
+    @Test
+    public void getVariable() throws RequiredExecutionVariableExeception {
+        final Map<String, Serializable> map = new HashMap<>();
+        map.put("var1", "value1");
+        map.put("var2", "value2");
+        map.put("list1", (Serializable) Arrays.asList("value1", "value2"));
+        final DelegateExecutionImpl impl = create(map);
+
+        assertEquals("value1", impl.getVariable("var1"));
+        assertEquals("value2", impl.getRequiredVariable("var2"));
+        assertThat(impl.getVariable("list1"), IsIterableContainingInOrder.contains("value1", "value2"));
+
+    }
+
+
+    @Test
+    public void getRequiredVariableNotFound() throws RequiredExecutionVariableExeception {
+        final DelegateExecutionImpl impl = create();
+
+        thrown.expect(RequiredExecutionVariableExeception.class);
+        impl.getRequiredVariable("var1");
+    }
+
+
+    @Test
+    public void setVariable() {
+        final DelegateExecutionImpl impl = create();
+        impl.setVariable("var1", "value1");
+
+        assertEquals("value1", impl.get("var1"));
+    }
+
+    @Test
+    public void getGeneralBuildingBlock() {
+        final GeneralBuildingBlock gBB = mock(GeneralBuildingBlock.class);
+        final Map<String, Serializable> map = new HashMap<>();
+        map.put("gBBInput", gBB);
+        final DelegateExecutionImpl impl = create(map);
+
+        assertEquals(gBB, impl.getGeneralBuildingBlock());
+    }
+
+    @Test
+    public void getGeneralBuildingBlockNotFound() {
+        final DelegateExecutionImpl impl = create();
+        thrown.expect(MissingBuildingBlockInputException.class);
+        impl.getGeneralBuildingBlock();
+    }
+
+    @Test
+    public void getGeneralBuildingBlockCastException() {
+        final Map<String, Serializable> map = new HashMap<>();
+        map.put("gBBInput", new DelegateExecutionFake());
+        final DelegateExecutionImpl impl = create(map);
+
+        thrown.expect(MalformedBuildingBlockInputException.class);
+        impl.getGeneralBuildingBlock();
+    }
+
+    @Test
+    public void getDelegateExecution() {
+        final DelegateExecutionImpl impl = create();
+
+        assertNotNull(impl.getDelegateExecution());
+    }
+
+    @Test
+    public void getLookupMap() {
+        final Map<String, Serializable> lookup = new HashMap<>();
+        final Map<String, Serializable> map = new HashMap<>();
+        map.put("lookupKeyMap", (Serializable) lookup);
+        final DelegateExecutionImpl impl = create(map);
+
+        assertEquals(lookup, impl.getLookupMap());
+    }
+
+    @Test
+    public void testDelegateExecutionImpl_serializeDelegateExecutionImplObject_shouldNotThrowAnyExceptionWhenSerializing() {
+        final DelegateExecutionImpl objectUnderTest = create();
+
+        try {
+            final ObjectMapper objectMapper = new ObjectMapper();
+            objectMapper.writeValueAsString(objectUnderTest);
+        } catch (final JsonProcessingException e) {
+            fail("Should be possible to serialize DelegateExecutionImpl object");
+        }
+
+    }
+
+    private DelegateExecutionImpl create() {
+        return create(new HashMap<String, Serializable>());
+    }
+
+    private DelegateExecutionImpl create(final Map<String, Serializable> map) {
+        final DelegateExecutionFake fake = new DelegateExecutionFake();
+
+        for (final Entry<String, Serializable> entry : map.entrySet()) {
+            fake.setVariable(entry.getKey(), entry.getValue());
+        }
+        return new DelegateExecutionImpl(fake);
+    }
 
 }
index 712512f..fa9fe62 100644 (file)
@@ -268,7 +268,7 @@ public class CreateVfModuleInfra extends AbstractServiceTaskProcessor {
         */
        public void validateWorkflowResponse(DelegateExecution execution, String responseVar,
                        String responseCodeVar, String errorResponseVar) {
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar)
        }
 
index c0e8d5a..e941d50 100644 (file)
@@ -349,7 +349,7 @@ class CreateVnfInfra extends AbstractServiceTaskProcessor {
 
                logger.debug("workflowException: " + workflowException)
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                logger.debug("SDNCResponse: " + response)
index ce9df87..a12c2f4 100644 (file)
@@ -156,7 +156,7 @@ public class DoCreateE2EServiceInstanceRollback extends AbstractServiceTaskProce
                        logger.debug("SDNCResponse: " + response)
                        logger.debug("workflowException: " + workflowException)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index 41bae32..22c8a11 100644 (file)
@@ -1081,7 +1081,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor {
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                WorkflowException workflowException = execution.getVariable("WorkflowException")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
                // reset variable
                String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "assignSDNCResponse")
@@ -1109,7 +1109,7 @@ public class DoCreateNetworkInstance extends AbstractServiceTaskProcessor {
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                WorkflowException workflowException = execution.getVariable("WorkflowException")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
                // reset variable
                String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "activateSDNCResponse")
index c144dc0..41a302f 100644 (file)
@@ -244,7 +244,7 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode")
                                String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse")
                                String rollbackSDNCReturnInnerCode = ""
-                               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                                rollbackSDNCResponse = rollbackSDNCResponse
                                rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
                                if (rollbackSDNCReturnCode == "200") {
index 163bd0f..bf52b11 100644 (file)
@@ -491,7 +491,7 @@ public class DoCreateServiceInstance extends AbstractServiceTaskProcessor {
                        String response = execution.getVariable("sdncAdapterResponse")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index a337087..1eeba49 100644 (file)
@@ -149,7 +149,7 @@ public class DoCreateServiceInstanceRollback extends AbstractServiceTaskProcesso
                        logger.debug("SDNCResponse: " + response)
                        logger.debug("workflowException: " + workflowException)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index eface7b..6b4fc84 100644 (file)
@@ -84,7 +84,7 @@ public class DoCreateVfModule extends VfModuleBase {
        String Prefix="DCVFM_"
        ExceptionUtil exceptionUtil = new ExceptionUtil()
        JsonUtils jsonUtil = new JsonUtils()
-       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
        OofInfraUtils oofInfraUtils = new OofInfraUtils()
        CatalogDbUtils catalogDbUtils = new CatalogDbUtilsFactory().create()
        DecomposeJsonUtil decomposeJsonUtils = new DecomposeJsonUtil()
@@ -598,7 +598,7 @@ public class DoCreateVfModule extends VfModuleBase {
         */
        public void validateWorkflowResponse(DelegateExecution execution, String responseVar,
                        String responseCodeVar, String errorResponseVar) {
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, responseVar, responseCodeVar, errorResponseVar)
        }
 
@@ -1635,7 +1635,7 @@ public class DoCreateVfModule extends VfModuleBase {
 
                logger.debug("workflowException: " + workflowException)
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                String sdncResponse = response
index 07ffa38..65f6f76 100644 (file)
@@ -463,7 +463,7 @@ public class DoCreateVfModuleRollback extends AbstractServiceTaskProcessor{
                WorkflowException workflowException = execution.getVariable("WorkflowException")
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index e1b0776..fb5c0fa 100644 (file)
@@ -61,7 +61,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor {
        ExceptionUtil exceptionUtil = new ExceptionUtil()
        JsonUtils jsonUtil = new JsonUtils()
        VidUtils vidUtils = new VidUtils(this)
-       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
        OofInfraUtils oofInfraUtils = new OofInfraUtils()
 
        /**
@@ -530,7 +530,7 @@ class DoCreateVnf extends AbstractServiceTaskProcessor {
 
                logger.debug("workflowException: " + workflowException)
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                logger.debug("SDNCResponse: " + response)
index 3209f52..7ea32d2 100644 (file)
@@ -315,7 +315,7 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor {
 
                logger.debug("workflowException: " + workflowException)
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                String sdncResponse = response
index a54d90b..2558f7e 100644 (file)
@@ -691,7 +691,7 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                WorkflowException workflowException = execution.getVariable("WorkflowException")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
                // reset variable
                String deleteSDNCResponseDecodeXml = execution.getVariable(Prefix + "deleteSDNCResponse")
@@ -719,7 +719,7 @@ public class DoDeleteNetworkInstance extends AbstractServiceTaskProcessor {
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                WorkflowException workflowException = execution.getVariable("WorkflowException")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
                // reset variable
                String assignSDNCResponseDecodeXml = execution.getVariable(Prefix + "deactivateSDNCResponse")
index d09fb03..36c145b 100644 (file)
@@ -220,7 +220,7 @@ public class DoDeleteNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode")
                                String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse")
                                String rollbackSDNCReturnInnerCode = ""
-                               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                                rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
                                if (rollbackSDNCReturnCode == "200") {
                                        if (utils.nodeExists(rollbackSDNCResponse, "response-code")) {
index 2e1cca5..0c676b5 100644 (file)
@@ -258,7 +258,7 @@ public class DoDeleteServiceInstance extends AbstractServiceTaskProcessor {
                        logger.debug("SDNCResponse: " + response)
                        logger.debug("workflowException: " + workflowException)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index 2623381..b21dcf3 100644 (file)
@@ -375,7 +375,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                WorkflowException workflowException = execution.getVariable("WorkflowException")
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index f0182e5..e5306c4 100644 (file)
@@ -339,7 +339,7 @@ public class DoDeleteVfModuleFromVnf extends VfModuleBase {
        
                logger.debug("workflowException: " + workflowException)
        
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
        
                logger.debug("SDNCResponse: " + response)
index ca367d0..9bd3388 100644 (file)
@@ -60,7 +60,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor {
        ExceptionUtil exceptionUtil = new ExceptionUtil()
        JsonUtils jsonUtil = new JsonUtils()
        VidUtils vidUtils = new VidUtils(this)
-       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
        /**
         * This method gets and validates the incoming
@@ -500,7 +500,7 @@ class DoDeleteVnfAndModules extends AbstractServiceTaskProcessor {
 
                logger.debug("workflowException: " + workflowException)
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                logger.debug("SDNCResponse: " + response)
index ce61595..430c16b 100644 (file)
@@ -946,7 +946,7 @@ public class DoUpdateNetworkInstance extends AbstractServiceTaskProcessor {
 
                boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
                // reset variable
                String changeAssignSDNCResponseDecodeXml = execution.getVariable(Prefix + "changeAssignSDNCResponse")
index 1b98451..371e54c 100644 (file)
@@ -204,7 +204,7 @@ public class DoUpdateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                rollbackSDNCReturnCode = execution.getVariable(Prefix + "rollbackSDNCReturnCode")
                                String rollbackSDNCResponse = execution.getVariable(Prefix + "rollbackSDNCResponse")
                                String rollbackSDNCReturnInnerCode = ""
-                               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                                rollbackSDNCResponse = rollbackSDNCResponse.replace('$', '').replace('<?xml version="1.0" encoding="UTF-8"?>', "")
                                if (rollbackSDNCReturnCode == "200") {
                                        if (utils.nodeExists(rollbackSDNCResponse, "response-code")) {
index a05d252..abbcf66 100644 (file)
@@ -988,7 +988,7 @@ public class DoUpdateVfModule extends VfModuleBase {
 
                logger.debug("workflowException: " + workflowException)
 
-               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                logger.debug("SDNCResponse: " + response)
index 24589a0..2c5b643 100644 (file)
@@ -511,7 +511,7 @@ public class DoCreateAllottedResourceBRG extends AbstractServiceTaskProcessor{
                        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index f27b3d9..58c0ef2 100644 (file)
@@ -167,7 +167,7 @@ public class DoCreateAllottedResourceBRGRollback extends AbstractServiceTaskProc
                        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index b6e7470..61dd13b 100644 (file)
@@ -446,7 +446,7 @@ public class DoCreateAllottedResourceTXC extends AbstractServiceTaskProcessor{
                        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index ad2c9e1..44e27d9 100644 (file)
@@ -168,7 +168,7 @@ public class DoCreateAllottedResourceTXCRollback extends AbstractServiceTaskProc
                        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index ca1b2de..9dcee3d 100644 (file)
@@ -302,7 +302,7 @@ public class DoDeleteAllottedResourceBRG extends AbstractServiceTaskProcessor{
                        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
index 0da6fd2..43e0958 100644 (file)
@@ -306,7 +306,7 @@ public class DoDeleteAllottedResourceTXC extends AbstractServiceTaskProcessor{
                        boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")
                        logger.debug("SDNCResponse: " + response)
 
-                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)
+                       SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
                        sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)
 
                        if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/AttributeNameValue.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/vnf/mapper/AttributeNameValue.java
new file mode 100644 (file)
index 0000000..e93e216
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 Intel Corp.  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.client.adapter.vnf.mapper;
+
+import java.io.Serializable;
+
+public class AttributeNameValue implements Serializable {
+    private final static long serialVersionUID = -5215028275587848311L;
+
+    private String attributeName;
+    private Object attributeValue;
+
+    public AttributeNameValue(String attributeName, Object attributeValue) {
+        this.attributeName = attributeName;
+        this.attributeValue = attributeValue;
+    }
+
+    public String getAttributeName() {
+        return attributeName;
+    }
+
+    public void setAttributeName(String attributeName) {
+        this.attributeName = attributeName;
+    }
+
+    public Object getAttributeValue() {
+        return attributeValue;
+    }
+
+    public void setAttributeValue(Object attributeValue) {
+        this.attributeValue = attributeValue;
+    }
+
+    @Override
+    public String toString() {
+        return new StringBuilder().append("{\"attribute_name\": \"")
+                .append(attributeName.toString())
+                .append("\", \"attribute_value\": \"")
+                .append(attributeValue.toString())
+                .append("\"}").toString();
+    }
+}
index 258bea9..dc113e5 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.
@@ -36,6 +36,7 @@ import java.util.Optional;
 
 import javax.annotation.PostConstruct;
 
+import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang3.StringUtils;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParam;
 import org.onap.sdnc.northbound.client.model.GenericResourceApiParamParam;
@@ -78,6 +79,7 @@ import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext
 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
 import org.onap.so.entity.MsoRequest;
 import org.onap.so.jsonpath.JsonPathUtil;
+import org.onap.so.openstack.utils.MsoMulticloudUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -94,7 +96,7 @@ public class VnfAdapterVfModuleObjectMapper {
        @Autowired
        protected VnfAdapterObjectMapperUtils vnfAdapterObjectMapperUtils;
        private static List<String> sdncResponseParamsToSkip = asList("vnf_id", "vf_module_id", "vnf_name", "vf_module_name");
-       
+
        private ObjectMapper mapper = new ObjectMapper();
        private static final JsonPathUtil jsonPath = JsonPathUtil.getInstance();
        private static final String SUB_INT = "subint";
@@ -110,23 +112,23 @@ public class VnfAdapterVfModuleObjectMapper {
        private static final String FLOATING_IP = "_floating_ip";
        private static final String FLOATING_V6_IP = "_floating_v6_ip";
        private static final String UNDERSCORE = "_";
-       
+
        @PostConstruct
        public void init () {
                mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
        }
-       
-       public CreateVfModuleRequest createVfModuleRequestMapper(RequestContext requestContext, CloudRegion cloudRegion, OrchestrationContext orchestrationContext, ServiceInstance serviceInstance, GenericVnf genericVnf, 
+
+       public CreateVfModuleRequest createVfModuleRequestMapper(RequestContext requestContext, CloudRegion cloudRegion, OrchestrationContext orchestrationContext, ServiceInstance serviceInstance, GenericVnf genericVnf,
                                VfModule vfModule, VolumeGroup volumeGroup, String sdncVnfQueryResponse, String sdncVfModuleQueryResponse) throws JsonParseException, JsonMappingException, IOException {
                CreateVfModuleRequest createVfModuleRequest = new CreateVfModuleRequest();
-               
+
                createVfModuleRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
                createVfModuleRequest.setCloudOwner(cloudRegion.getCloudOwner());
                createVfModuleRequest.setTenantId(cloudRegion.getTenantId());
                createVfModuleRequest.setVfModuleId(vfModule.getVfModuleId());
                createVfModuleRequest.setVfModuleName(vfModule.getVfModuleName());
                createVfModuleRequest.setVnfId(genericVnf.getVnfId());
-               createVfModuleRequest.setVnfType(genericVnf.getVnfType());              
+               createVfModuleRequest.setVnfType(genericVnf.getVnfType());
                createVfModuleRequest.setVnfVersion(serviceInstance.getModelInfoServiceInstance().getModelVersion());
                createVfModuleRequest.setVfModuleType(vfModule.getModelInfoVfModule().getModelName());
                createVfModuleRequest.setModelCustomizationUuid(vfModule.getModelInfoVfModule().getModelCustomizationUUID());
@@ -134,38 +136,38 @@ public class VnfAdapterVfModuleObjectMapper {
                        createVfModuleRequest.setVolumeGroupId(volumeGroup.getVolumeGroupId());
                        createVfModuleRequest.setVolumeGroupStackId(volumeGroup.getHeatStackId());
                }
-               VfModule baseVfModule = getBaseVfModule(genericVnf);            
+               VfModule baseVfModule = getBaseVfModule(genericVnf);
                if (baseVfModule != null) {
                        createVfModuleRequest.setBaseVfModuleId(baseVfModule.getVfModuleId());
                        createVfModuleRequest.setBaseVfModuleStackId(baseVfModule.getHeatStackId());
                }
                createVfModuleRequest.setVfModuleParams(buildVfModuleParamsMap(requestContext, serviceInstance, genericVnf, vfModule, sdncVnfQueryResponse, sdncVfModuleQueryResponse));
-               
-               createVfModuleRequest.setSkipAAI(true);         
+
+               createVfModuleRequest.setSkipAAI(true);
                createVfModuleRequest.setBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
                createVfModuleRequest.setFailIfExists(true);
-               
-               MsoRequest msoRequest = buildMsoRequest(requestContext, serviceInstance);               
+
+               MsoRequest msoRequest = buildMsoRequest(requestContext, serviceInstance);
                createVfModuleRequest.setMsoRequest(msoRequest);
-               
+
                String messageId = vnfAdapterObjectMapperUtils.getRandomUuid();
                createVfModuleRequest.setMessageId(messageId);
                createVfModuleRequest.setNotificationUrl(vnfAdapterObjectMapperUtils.createCallbackUrl("VNFAResponse", messageId));
-               
+
                return createVfModuleRequest;
        }
-       
+
        private MsoRequest buildMsoRequest(RequestContext requestContext,ServiceInstance serviceInstance) {
                MsoRequest msoRequest = new MsoRequest();
                msoRequest.setRequestId(requestContext.getMsoRequestId());
                msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
-               return msoRequest;              
+               return msoRequest;
        }
-       
-       private Map<String,Object> buildVfModuleParamsMap(RequestContext requestContext, ServiceInstance serviceInstance, GenericVnf genericVnf, 
+
+       private Map<String,Object> buildVfModuleParamsMap(RequestContext requestContext, ServiceInstance serviceInstance, GenericVnf genericVnf,
                                VfModule vfModule, String sdncVnfQueryResponse, String sdncVfModuleQueryResponse) throws JsonParseException, JsonMappingException, IOException {
-               
-               
+
+
                GenericResourceApiVnfTopology vnfTop= mapper.readValue(sdncVnfQueryResponse, GenericResourceApiVnfTopology.class);
                GenericResourceApiVfModuleTopology vfModuleTop = mapper.readValue(sdncVfModuleQueryResponse, GenericResourceApiVfModuleTopology.class);
                GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfTop.getVnfTopology();
@@ -181,19 +183,41 @@ public class VnfAdapterVfModuleObjectMapper {
                        buildParamsMapFromVfModuleSdncResponse(paramsMap, vfModuleTopology, false);
                        buildParamsMapFromVnfSdncResponse(paramsMap, vnfTopology, networkRoleMap, false);
                }
-               
+
+               // build the sdnc_directives from paramsMap
+               buildDirectivesParamFromMap(paramsMap, MsoMulticloudUtils.SDNC_DIRECTIVES, paramsMap);
+               buildDirectivesParamFromMap(paramsMap, MsoMulticloudUtils.USER_DIRECTIVES, requestContext.getUserParams());
+
                buildMandatoryParamsMap(paramsMap, serviceInstance, genericVnf, vfModule);
-               
+
                // Parameters received from the request should overwrite any parameters received from SDNC
                paramsMap.putAll(requestContext.getUserParams());
-               
+
                if (vfModule.getCloudParams() != null) {
                        paramsMap.putAll(vfModule.getCloudParams());
                }
                return paramsMap;
        }
-       
-       private void  buildMandatoryParamsMap(Map<String,Object> paramsMap, ServiceInstance serviceInstance, GenericVnf genericVnf, VfModule vfModule) {                
+
+    private void buildDirectivesParamFromMap(Map<String, Object> paramsMap, String directive, Map<String, Object> srcMap) {
+        StringBuilder directives = new StringBuilder();
+        if (srcMap.size() > 0) {
+            directives.append("{ \"attributes\": [ ");
+            int i = 0;
+            for (String attributeName : srcMap.keySet()) {
+                directives.append(new AttributeNameValue(attributeName, srcMap.get(attributeName).toString()));
+                if (i < (srcMap.size()-1))
+                    directives.append(", ");
+                i++;
+            }
+            directives.append("] }");
+        } else {
+            directives.append("{}");
+        }
+        paramsMap.put(directive, directives.toString());
+    }
+
+    private void  buildMandatoryParamsMap(Map<String,Object> paramsMap, ServiceInstance serviceInstance, GenericVnf genericVnf, VfModule vfModule) {
                paramsMap.put("vnf_id", genericVnf.getVnfId());
                paramsMap.put("vnf_name", genericVnf.getVnfName());
                paramsMap.put("vf_module_id", vfModule.getVfModuleId());
@@ -205,26 +229,26 @@ public class VnfAdapterVfModuleObjectMapper {
                Integer vfModuleIndex = vfModule.getModuleIndex();
                if (vfModuleIndex != null) {
                        paramsMap.put("vf_module_index", vfModuleIndex.toString());
-               }               
+               }
        }
-       
-       private void buildParamsMapFromVnfSdncResponse(Map<String,Object> paramsMap, GenericResourceApiVnftopologyVnfTopology vnfTopology, Map<String,String> networkRoleMap, boolean skipVnfResourceAssignments) throws JsonParseException, JsonMappingException, IOException {                                
+
+       private void buildParamsMapFromVnfSdncResponse(Map<String,Object> paramsMap, GenericResourceApiVnftopologyVnfTopology vnfTopology, Map<String,String> networkRoleMap, boolean skipVnfResourceAssignments) throws JsonParseException, JsonMappingException, IOException {
                // Get VNF parameters from SDNC response
                GenericResourceApiParam vnfParametersData = vnfTopology.getVnfParametersData();
                buildParamsMapFromSdncParams(paramsMap, vnfParametersData);
-               
+
                if(!skipVnfResourceAssignments) {
-                       GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments = vnfTopology.getVnfResourceAssignments();                
+                       GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments = vnfTopology.getVnfResourceAssignments();
                        if (vnfResourceAssignments != null) {
                                // Availability Zones
                                buildAvailabilityZones(paramsMap, vnfResourceAssignments);
                                // VNF Networks
-                               buildVnfNetworks(paramsMap, vnfResourceAssignments, networkRoleMap);                    
+                               buildVnfNetworks(paramsMap, vnfResourceAssignments, networkRoleMap);
                        }
                }
        }
-       
-       private void buildAvailabilityZones (Map<String,Object> paramsMap, GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments) {             
+
+       private void buildAvailabilityZones (Map<String,Object> paramsMap, GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments) {
                GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsAvailabilityZones availabilityZones = vnfResourceAssignments.getAvailabilityZones();
                if (availabilityZones != null) {
                        List<String> availabilityZonesList = availabilityZones.getAvailabilityZone();
@@ -235,7 +259,7 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        private void buildVnfNetworks (Map<String,Object> paramsMap, GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments, Map<String,String> networkRoleMap) {
                GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks vnfNetworks = vnfResourceAssignments.getVnfNetworks();
                if (vnfNetworks != null) {
@@ -247,41 +271,41 @@ public class VnfAdapterVfModuleObjectMapper {
                                        String vnfNetworkKey = networkRoleMap.get(networkRole);
                                        if (vnfNetworkKey == null || vnfNetworkKey.isEmpty()) {
                                                vnfNetworkKey = networkRole;
-                                       }               
-                                       
+                                       }
+
                                        String vnfNetworkNeutronIdValue = vnfNetwork.getNeutronId();
                                        paramsMap.put(vnfNetworkKey + "_net_id", vnfNetworkNeutronIdValue);
                                        String vnfNetworkNetNameValue = vnfNetwork.getNetworkName();
                                        paramsMap.put(vnfNetworkKey + "_net_name", vnfNetworkNetNameValue);
                                        String vnfNetworkNetFqdnValue = vnfNetwork.getContrailNetworkFqdn();
                                        paramsMap.put(vnfNetworkKey + "_net_fqdn", vnfNetworkNetFqdnValue);
-                               
+
                                        buildVnfNetworkSubnets(paramsMap, vnfNetwork, vnfNetworkKey);
-                                       
+
                                }
                        }
                }
        }
-       
+
        private void buildVnfNetworkSubnets(Map<String,Object> paramsMap, GenericResourceApiVnfNetworkData vnfNetwork, String vnfNetworkKey) {
                String vnfNetworkString = convertToString(vnfNetwork);
                Optional<String> ipv4Ips = jsonPath.locateResult(vnfNetworkString, "$.subnets-data.subnet-data[*].[?(@.ip-version == 'ipv4' && @.dhcp-enabled == 'Y')].subnet-id");
                if(ipv4Ips.isPresent())
                        addPairToMap(paramsMap, vnfNetworkKey, SUBNET_ID, ipv4Ips.get());
-               
+
                Optional<String> ipv6Ips = jsonPath.locateResult(vnfNetworkString, "$.subnets-data.subnet-data[*].[?(@.ip-version == 'ipv6' && @.dhcp-enabled == 'Y')].subnet-id");
                if(ipv6Ips.isPresent())
                        addPairToMap(paramsMap, vnfNetworkKey, V6_SUBNET_ID, ipv6Ips.get());
-       }       
+       }
 
-       private void buildParamsMapFromVfModuleSdncResponse(Map<String,Object> paramsMap, GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology, boolean skipVfModuleAssignments) throws JsonParseException, JsonMappingException, IOException {          
+       private void buildParamsMapFromVfModuleSdncResponse(Map<String,Object> paramsMap, GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology, boolean skipVfModuleAssignments) throws JsonParseException, JsonMappingException, IOException {
                // Get VF Module parameters from SDNC response
                GenericResourceApiParam vfModuleParametersData = vfModuleTopology.getVfModuleParameters();
                buildParamsMapFromSdncParams(paramsMap, vfModuleParametersData);
-               
-               if(!skipVfModuleAssignments) {          
+
+               if(!skipVfModuleAssignments) {
                        GenericResourceApiVfmoduleassignmentsVfModuleAssignments vfModuleAssignments = vfModuleTopology.getVfModuleAssignments();
-                       if (vfModuleAssignments != null) {                      
+                       if (vfModuleAssignments != null) {
                                // VNF-VMS
                                GenericResourceApiVfmoduleassignmentsVfmoduleassignmentsVms vms = vfModuleAssignments.getVms();
                                if (vms != null) {
@@ -289,7 +313,7 @@ public class VnfAdapterVfModuleObjectMapper {
                                        if (vmsList != null) {
                                                for (GenericResourceApiVmTopologyData vm : vmsList){
                                                        String key = vm.getVmType();
-                                                       buildVfModuleVmNames(paramsMap, vm, key);                                                                               
+                                                       buildVfModuleVmNames(paramsMap, vm, key);
                                                        GenericResourceApiVmtopologydataVmNetworks vmNetworks = vm.getVmNetworks();
                                                        if (vmNetworks != null) {
                                                                List<GenericResourceApiVmNetworkData> vmNetworksList = vmNetworks.getVmNetwork();
@@ -297,49 +321,49 @@ public class VnfAdapterVfModuleObjectMapper {
                                                                                for(int n = 0; n < vmNetworksList.size(); n++){
                                                                                GenericResourceApiVmNetworkData network = vmNetworksList.get(n);
                                                                                network.getNetworkRoleTag();
-                                                                               String networkKey = network.getNetworkRole();   
+                                                                               String networkKey = network.getNetworkRole();
                                                                                // Floating IPs
-                                                                               buildVfModuleFloatingIps(paramsMap, network, key, networkKey);                                                                  
+                                                                               buildVfModuleFloatingIps(paramsMap, network, key, networkKey);
                                                                                // Interface Route Prefixes
-                                                                               buildVfModuleInterfaceRoutePrefixes(paramsMap, network, key, networkKey);                                                                       
+                                                                               buildVfModuleInterfaceRoutePrefixes(paramsMap, network, key, networkKey);
                                                                                // SRIOV Parameters
-                                                                               buildVfModuleSriovParameters(paramsMap, network, networkKey);                                                                   
+                                                                               buildVfModuleSriovParameters(paramsMap, network, networkKey);
                                                                                // IPV4 and IPV6 Addresses
                                                                                buildVfModuleNetworkInformation(paramsMap, network, key, networkKey);
-                                                                               
+
                                                                                buildVlanInformation(paramsMap, network, key, networkKey);
-                                                                               
+
                                                                        }
                                                                }
                                                        }
-                                                       
+
                                                        buildParamsMapFromVfModuleForHeatTemplate(paramsMap, vm);
                                                }
-                                       }                               
-                               }               
+                                       }
+                               }
                        }
                }
        }
-       
+
        protected void buildVlanInformation(Map<String, Object> paramsMap,
                        GenericResourceApiVmNetworkData network, String key, String networkKey) {
-               
+
                String networkString = convertToString(network);
                String vlanFilterKey = key + UNDERSCORE + networkKey + UNDERSCORE + "vlan_filter";
                String privateVlansKey = key + UNDERSCORE + networkKey + UNDERSCORE + "private_vlans";
                String publicVlansKey = key + UNDERSCORE + networkKey + UNDERSCORE + "public_vlans";
                String guestVlansKey = key + UNDERSCORE + networkKey + UNDERSCORE + "guest_vlans";
-               
+
                if (network.getSegmentationId() != null) {
                        paramsMap.put(vlanFilterKey, network.getSegmentationId());
                }
-               
+
                List<String> privateVlans = jsonPath.locateResultList(networkString, "$.related-networks.related-network[?(@.vlan-tags.is-private == true)].vlan-tags.upper-tag-id");
                List<String> publicVlans = jsonPath.locateResultList(networkString, "$.related-networks.related-network[?(@.vlan-tags.is-private == false)].vlan-tags.upper-tag-id");
                List<String> concat = new ArrayList<>(privateVlans);
                concat.addAll(publicVlans);
                Collection<String> guestVlans = new HashSet<>(concat);
-               
+
                if (!privateVlans.isEmpty()) {
                        paramsMap.put(privateVlansKey, Joiner.on(",").join(privateVlans));
                }
@@ -358,7 +382,7 @@ public class VnfAdapterVfModuleObjectMapper {
                        List<String> valueList = vmNames.getVmName();
                        if (valueList != null) {
                                for(int i = 0; i < valueList.size(); i++){
-                                       String value = valueList.get(i);                                        
+                                       String value = valueList.get(i);
                                        if (i != valueList.size() - 1) {
                                                values += value + ",";
                                        }
@@ -371,7 +395,7 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        private void buildVfModuleFloatingIps(Map<String,Object> paramsMap, GenericResourceApiVmNetworkData network, String key, String networkKey) {
                GenericResourceApiVmnetworkdataFloatingIps floatingIps = network.getFloatingIps();
                if (floatingIps != null) {
@@ -395,7 +419,7 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        private void buildVfModuleInterfaceRoutePrefixes(Map<String,Object> paramsMap, GenericResourceApiVmNetworkData network, String key, String networkKey) {
                GenericResourceApiVmnetworkdataInterfaceRoutePrefixes interfaceRoutePrefixes = network.getInterfaceRoutePrefixes();
                if (interfaceRoutePrefixes != null) {
@@ -404,14 +428,14 @@ public class VnfAdapterVfModuleObjectMapper {
                        sbInterfaceRoutePrefixes.append("[");
                        if (interfaceRoutePrefixesList != null) {
                                for(int a = 0; a < interfaceRoutePrefixesList.size(); a++){
-                                       String interfaceRoutePrefixValue = interfaceRoutePrefixesList.get(a);                                           
+                                       String interfaceRoutePrefixValue = interfaceRoutePrefixesList.get(a);
                                        if (a != interfaceRoutePrefixesList.size() - 1) {
                                                sbInterfaceRoutePrefixes.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}" + ",");
                                        }
                                        else {
-                                               sbInterfaceRoutePrefixes.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}");                                              
+                                               sbInterfaceRoutePrefixes.append("{\"interface_route_table_routes_route_prefix\": \"" + interfaceRoutePrefixValue + "\"}");
                                        }
-                               }                                                       
+                               }
                                sbInterfaceRoutePrefixes.append("]");
                                if (interfaceRoutePrefixesList.size() > 0) {
                                        paramsMap.put(key + UNDERSCORE + networkKey + "_route_prefixes", sbInterfaceRoutePrefixes.toString());
@@ -419,7 +443,7 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        private void buildVfModuleSriovParameters(Map<String,Object> paramsMap, GenericResourceApiVmNetworkData network, String networkKey) {
                // SRIOV Parameters
                GenericResourceApiVmnetworkdataSriovParameters sriovParameters = network.getSriovParameters();
@@ -430,14 +454,14 @@ public class VnfAdapterVfModuleObjectMapper {
                                StringBuilder sriovFilterBuf = new StringBuilder();
                                if (heatVlanFiltersList != null) {
                                        for(int a = 0; a < heatVlanFiltersList.size(); a++){
-                                               String heatVlanFilterValue = heatVlanFiltersList.get(a);                                                
+                                               String heatVlanFilterValue = heatVlanFiltersList.get(a);
                                                if (a != heatVlanFiltersList.size() - 1) {
                                                        sriovFilterBuf.append(heatVlanFilterValue).append(",");
                                                }
                                                else {
-                                                       sriovFilterBuf.append(heatVlanFilterValue);                                             
+                                                       sriovFilterBuf.append(heatVlanFilterValue);
                                                }
-                                       }                                                       
+                                       }
                                        if (heatVlanFiltersList.size() > 0) {
                                                paramsMap.put(networkKey + "_ATT_VF_VLAN_FILTER", sriovFilterBuf.toString());
                                        }
@@ -445,13 +469,13 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        private void buildVfModuleNetworkInformation(Map<String,Object> paramsMap, GenericResourceApiVmNetworkData network, String key, String networkKey) {
-               
+
                GenericResourceApiVmnetworkdataNetworkInformationItems networkInformationItems = network.getNetworkInformationItems();
                StringBuilder sbIpv4Ips = new StringBuilder();
                StringBuilder sbIpv6Ips = new StringBuilder();
-               
+
                if (networkInformationItems != null) {
                        List<GenericResourceApiVmnetworkdataNetworkinformationitemsNetworkInformationItem> networkInformationItemList = networkInformationItems.getNetworkInformationItem();
                        if (networkInformationItemList != null) {
@@ -461,7 +485,7 @@ public class VnfAdapterVfModuleObjectMapper {
                                                GenericResourceApiVmnetworkdataNetworkinformationitemsNetworkinformationitemNetworkIps ips = ipAddress.getNetworkIps();
                                                if (ips != null) {
                                                        List<String> ipsList = ips.getNetworkIp();
-                                                       if (ipsList != null) {                                                  
+                                                       if (ipsList != null) {
                                                                String ipVersion = ipAddress.getIpVersion();
                                                                for (int b = 0; b < ipsList.size(); b++) {
                                                                        String ipAddressValue = ipsList.get(b);
@@ -472,7 +496,7 @@ public class VnfAdapterVfModuleObjectMapper {
                                                                                else {
                                                                                        sbIpv4Ips.append(ipAddressValue);
                                                                                }
-                                                                               paramsMap.put(key + UNDERSCORE + networkKey + IP + UNDERSCORE + b, ipAddressValue);                                             
+                                                                               paramsMap.put(key + UNDERSCORE + networkKey + IP + UNDERSCORE + b, ipAddressValue);
                                                                        }
                                                                        else if (ipVersion.equals("ipv6")) {
                                                                                if (b != ipsList.size() - 1) {
@@ -481,11 +505,11 @@ public class VnfAdapterVfModuleObjectMapper {
                                                                                else {
                                                                                        sbIpv6Ips.append(ipAddressValue);
                                                                                }
-                                                                               paramsMap.put(key + UNDERSCORE + networkKey + V6_IP + UNDERSCORE + b, ipAddressValue);                                                          
-                                                                       }                                                       
+                                                                               paramsMap.put(key + UNDERSCORE + networkKey + V6_IP + UNDERSCORE + b, ipAddressValue);
+                                                                       }
                                                                }
                                                                paramsMap.put(key + UNDERSCORE + networkKey + "_ips", sbIpv4Ips.toString());
-                                                               paramsMap.put(key + UNDERSCORE + networkKey + "_v6_ips", sbIpv6Ips.toString());                                                         
+                                                               paramsMap.put(key + UNDERSCORE + networkKey + "_v6_ips", sbIpv6Ips.toString());
                                                        }
                                                }
                                        }
@@ -493,43 +517,43 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        /*
         * Build Mapping from GenericResourceApi SDNC for Heat Template so that AIC - PO gets accurate requests for vf module assignments.
         * Build Count of SubInterfaces, VLAN Tag, network_name, network_id,
         * ip_address (V4 and V6) and Floating IPs Addresses (V4 and V6) for Heat Template
-        */     
+        */
        private void buildParamsMapFromVfModuleForHeatTemplate(Map<String,Object> paramsMap, GenericResourceApiVmTopologyData vm) {
                GenericResourceApiVmtopologydataVmNames vmNames = vm.getVmNames();
-       
+
                if (vmNames != null) {
-               
+
                        List<GenericResourceApiVmtopologydataVmnamesVnfcNames> vnfcNamesList = vmNames.getVnfcNames();
                        if (vnfcNamesList != null) {
-                               
+
                                for(int i = 0; i < vnfcNamesList.size(); i++){
-                                       
+
                                        GenericResourceApiVmtopologydataVmnamesVnfcNames vnfcNames = vnfcNamesList.get(i);
                                        parseVnfcNamesData(paramsMap, vnfcNames);
                                }
                        }
                }
        }
-       
+
        /*
         * Parse vnfcNames data to build Mapping from GenericResourceApi SDNC for Heat Template.
-        */     
+        */
        private void parseVnfcNamesData(Map<String,Object> paramsMap, GenericResourceApiVmtopologydataVmnamesVnfcNames vnfcNames) {
-               
+
                if (vnfcNames != null) {
                        GenericResourceApiVnfcNetworkData vnfcNetworks = vnfcNames.getVnfcNetworks();
                        if (vnfcNetworks != null) {
                                List<GenericResourceApiVnfcnetworkdataVnfcNetworkData> vnfcNetworkdataList = vnfcNetworks.getVnfcNetworkData();
-                               
+
                                if (vnfcNetworkdataList != null) {
-                                       
+
                                        for(int networkDataIdx = 0; networkDataIdx < vnfcNetworkdataList.size(); networkDataIdx++){
-                                       
+
                                                GenericResourceApiVnfcnetworkdataVnfcNetworkData vnfcNetworkdata = vnfcNetworkdataList.get(networkDataIdx);
                                                parseVnfcNetworkData(paramsMap, vnfcNetworkdata, networkDataIdx);
                                        }
@@ -537,72 +561,72 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                }
        }
-       
+
        /*
         * Parse VnfcNetworkData to build Mapping from GenericResourceApi SDNC for Heat Template.
         * Build Count of SubInterfaces, VLAN Tag, network_name, network_id,
         * ip_address (V4 and V6) and Floating IPs Addresses (V4 and V6) for Heat Template
-        */     
+        */
        private void parseVnfcNetworkData(Map<String,Object> paramsMap, GenericResourceApiVnfcnetworkdataVnfcNetworkData vnfcNetworkdata, int networkDataIdx) {
-               
+
                String vmTypeKey = vnfcNetworkdata.getVnfcType();
                GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcPorts vnfcPorts = vnfcNetworkdata.getVnfcPorts();
                if (vnfcPorts != null) {
-                       List<GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort> vnfcPortList = vnfcPorts.getVnfcPort();         
-                       if (vnfcPortList != null) {                                                                     
+                       List<GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort> vnfcPortList = vnfcPorts.getVnfcPort();
+                       if (vnfcPortList != null) {
                                for(int portIdx = 0; portIdx < vnfcPortList.size(); portIdx++){
-                               
+
                                        GenericResourceApiVnfcnetworkdataVnfcnetworkdataVnfcportsVnfcPort vnfcPort = vnfcPortList.get(portIdx);
                                        GenericResourceApiSubInterfaceNetworkData vnicSubInterfaces = vnfcPort.getVnicSubInterfaces();
-                               
+
                                        String vnicSubInterfacesString = convertToString(vnicSubInterfaces);
-                                       String  networkRoleKey = vnfcPort.getCommonSubInterfaceRole();  
+                                       String  networkRoleKey = vnfcPort.getCommonSubInterfaceRole();
                                        String subInterfaceKey = createVnfcSubInterfaceKey(vmTypeKey, networkDataIdx, networkRoleKey, portIdx);
                                        String globalSubInterfaceKey = createGlobalVnfcSubInterfaceKey(vmTypeKey, networkRoleKey, portIdx);
-                                       
+
                                        buildVfModuleSubInterfacesCount(paramsMap, globalSubInterfaceKey, vnicSubInterfaces);
-                               
+
                                        buildVfModuleVlanTag(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                               
+
                                        buildVfModuleNetworkName(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                               
+
                                        buildVfModuleNetworkId(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-       
+
                                        buildVfModuleIpV4AddressHeatTemplate(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                               
+
                                        buildVfModuleIpV6AddressHeatTemplate(paramsMap, subInterfaceKey, vnicSubInterfacesString);
-                               
+
                                        buildVfModuleFloatingIpV4HeatTemplate(paramsMap, globalSubInterfaceKey, vnicSubInterfacesString);
-       
+
                                        buildVfModuleFloatingIpV6HeatTemplate(paramsMap, globalSubInterfaceKey, vnicSubInterfacesString);
                                }
                        }
                }
        }
-       
+
        /*
         * Build "count" (calculating the total number of sub-interfaces) for Heat Template
         * Building Criteria : {vm-type}_subint_{network-role}_port_{index}_subintcount
         * vmTypeKey = vm-type, networkRoleKey = common-sub-interface-role
         * Example: fw_subint_ctrl_port_0_subintcount
-        * 
+        *
         */
        private void buildVfModuleSubInterfacesCount(Map<String,Object> paramsMap, String keyPrefix, GenericResourceApiSubInterfaceNetworkData vnicSubInterfaces) {
 
                List<GenericResourceApiSubinterfacenetworkdataSubInterfaceNetworkData> subInterfaceNetworkDataList = vnicSubInterfaces.getSubInterfaceNetworkData();
-               
+
                if ( (subInterfaceNetworkDataList != null) && !subInterfaceNetworkDataList.isEmpty() ) {
                        addPairToMap(paramsMap, keyPrefix, SUB_INT_COUNT, String.valueOf(subInterfaceNetworkDataList.size()));
                }
     }
-       
+
        protected String createVnfcSubInterfaceKey(String vmTypeKey, int networkDataIdx, String networkRoleKey, int portIdx) {
-               
+
                return Joiner.on(UNDERSCORE).join(Arrays.asList(vmTypeKey, networkDataIdx, SUB_INT, networkRoleKey, PORT, portIdx));
        }
-       
+
        protected String createGlobalVnfcSubInterfaceKey(String vmTypeKey,String networkRoleKey, int portIdx) {
-               
+
                return Joiner.on(UNDERSCORE).join(Arrays.asList(vmTypeKey, SUB_INT, networkRoleKey, PORT, portIdx));
        }
 
@@ -611,10 +635,10 @@ public class VnfAdapterVfModuleObjectMapper {
         * Building Criteria : {vm-type}_{index}_subint_{network-role}_port_{index}_vlan_ids
         * vmTypeKey = vm-type, networkRoleKey = common-sub-interface-role
         * Example: fw_0_subint_ctrl_port_0_vlan_ids
-        * 
+        *
         */
        protected void buildVfModuleVlanTag(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-               
+
                List<String> vlanTagIds = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].vlan-tag-id");
 
                addPairToMap(paramsMap, keyPrefix, VLAN_IDS, vlanTagIds);
@@ -624,12 +648,12 @@ public class VnfAdapterVfModuleObjectMapper {
         * Building Criteria : {vm-type}_{index}_subint_{network-role}_port_{index}_net_names
         * vmTypeKey = vm-type, networkRoleKey = common-sub-interface-role
         * Example: fw_0_subint_ctrl_port_0_net_names
-        * 
+        *
         */
        protected void buildVfModuleNetworkName(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-               
+
                List<String> neworkNames = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].network-name");
-               
+
                addPairToMap(paramsMap, keyPrefix, NET_NAMES, neworkNames);
        }
 
@@ -638,25 +662,25 @@ public class VnfAdapterVfModuleObjectMapper {
         * Building Criteria : {vm-type}_{index}_subint_{network-role}_port_{index}_net_ids
         * vmTypeKey = vm-type, networkRoleKey = common-sub-interface-role
         * Example: fw_0_subint_ctrl_port_0_net_ids
-        * 
+        *
         */
        protected void buildVfModuleNetworkId(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-               
+
                List<String> neworkIds = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].network-id");
-               
+
                addPairToMap(paramsMap, keyPrefix, NET_IDS, neworkIds);
        }
-       
+
        /*
         * Build ip_address for V4 for Heat Template
-        * Building Criteria : 
+        * Building Criteria :
         * {vm-type}_{index}_subint_{network-role}_port_{index}_ip_{index}  -- for ipV4
         * key = vm-type, networkRoleKey = NetWork-Role
         */
        protected void buildVfModuleIpV4AddressHeatTemplate(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-               
+
                List<String> ipv4Ips = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].network-information-items.network-information-item[?(@.ip-version == 'ipv4')].network-ips.network-ip[*]");
-               
+
                addPairToMap(paramsMap, keyPrefix, IP, ipv4Ips);
 
                for (int i = 0; i < ipv4Ips.size(); i++) {
@@ -664,15 +688,15 @@ public class VnfAdapterVfModuleObjectMapper {
                }
 
        }
-       
+
        /*
         * Build ip_address for Heat Template
-        * Building Criteria : 
+        * Building Criteria :
         * {vm-type}_{index}_subint_{network-role}_port_{index}_v6_ip_{index} -- for ipV6
         * key = vm-type, networkRoleKey = NetWork-Role
         */
        protected void buildVfModuleIpV6AddressHeatTemplate(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-               
+
                List<String> ipv6Ips = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].network-information-items.network-information-item[?(@.ip-version == 'ipv6')].network-ips.network-ip[*]");
 
                addPairToMap(paramsMap, keyPrefix, V6_IP, ipv6Ips);
@@ -681,14 +705,14 @@ public class VnfAdapterVfModuleObjectMapper {
                        addPairToMap(paramsMap, keyPrefix, V6_IP + UNDERSCORE + i, ipv6Ips.get(i));
                }
     }
-       
+
        /*
         * Build floatingip_address for Heat Template
-        * Building Criteria : 
+        * Building Criteria :
         * {vm-type}_subint_{network-role}_port_{index}_floating_ip  -- for ipV4
         */
        protected void buildVfModuleFloatingIpV4HeatTemplate(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-               
+
                List<String> floatingV4 = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].floating-ips.floating-ip-v4[*]");
 
                if (!floatingV4.isEmpty()) {
@@ -697,35 +721,35 @@ public class VnfAdapterVfModuleObjectMapper {
                addPairToMap(paramsMap, keyPrefix, FLOATING_IP, floatingV4);
 
        }
-       
+
        /*
         * Build floatingip_address for Heat Template
-        * Building Criteria : 
+        * Building Criteria :
         * {vm-type}_subint_{network-role}_port_{index}_floating_v6_ip -- for ipV6
         */
        protected void buildVfModuleFloatingIpV6HeatTemplate(Map<String,Object> paramsMap, String keyPrefix, String vnicSubInterfaces) {
-                               
+
                List<String> floatingV6 = jsonPath.locateResultList(vnicSubInterfaces, "$.sub-interface-network-data[*].floating-ips.floating-ip-v6[*]");
-               
+
                if (!floatingV6.isEmpty()) {
                        floatingV6 = Collections.singletonList(floatingV6.get(0));
                }
                addPairToMap(paramsMap, keyPrefix, FLOATING_V6_IP, floatingV6);
        }
-       
+
        protected void addPairToMap(Map<String, Object> paramsMap, String keyPrefix, String key, String value) {
-               
+
                addPairToMap(paramsMap, keyPrefix, key, Collections.singletonList(value));
        }
 
        protected void addPairToMap(Map<String, Object> paramsMap, String keyPrefix, String key, List<String> value) {
-               
+
                if (!value.isEmpty()) {
                        paramsMap.put(keyPrefix + key, Joiner.on(",").join(value));
                }
        }
-       
-       private void buildParamsMapFromSdncParams(Map<String,Object> paramsMap, GenericResourceApiParam parametersData) {               
+
+       private void buildParamsMapFromSdncParams(Map<String,Object> paramsMap, GenericResourceApiParam parametersData) {
                if (parametersData != null) {
                        List<GenericResourceApiParamParam> paramsList = parametersData.getParam();
                        if (paramsList != null) {
@@ -736,20 +760,20 @@ public class VnfAdapterVfModuleObjectMapper {
                                                String parameterValue = param.getValue();
                                                paramsMap.put(parameterName, parameterValue);
                                        }
-                               }                               
+                               }
                        }
-               }                                               
+               }
        }
-       
+
        private Map<String,String> buildNetworkRoleMap(GenericResourceApiVfmoduletopologyVfModuleTopology vfModuleTopology) throws JsonParseException, JsonMappingException, IOException {
-               Map<String, String> networkRoleMap = new HashMap<>();           
+               Map<String, String> networkRoleMap = new HashMap<>();
                GenericResourceApiVfmoduleassignmentsVfModuleAssignments vfModuleAssignments = vfModuleTopology.getVfModuleAssignments();
-               if (vfModuleAssignments != null) {                      
+               if (vfModuleAssignments != null) {
                        GenericResourceApiVfmoduleassignmentsVfmoduleassignmentsVms vms = vfModuleAssignments.getVms();
                        if (vms != null) {
                        List<GenericResourceApiVmTopologyData> vmsList = vms.getVm();
                        if (vmsList != null) {
-                                       for (GenericResourceApiVmTopologyData vm : vmsList){                                                    
+                                       for (GenericResourceApiVmTopologyData vm : vmsList){
                                                GenericResourceApiVmtopologydataVmNetworks vmNetworks = vm.getVmNetworks();
                                                if (vmNetworks != null) {
                                                        List<GenericResourceApiVmNetworkData> vmNetworksList = vmNetworks.getVmNetwork();
@@ -771,8 +795,8 @@ public class VnfAdapterVfModuleObjectMapper {
                        }
                        return networkRoleMap;
                }
-       
-       public DeleteVfModuleRequest deleteVfModuleRequestMapper(RequestContext requestContext,CloudRegion cloudRegion, 
+
+       public DeleteVfModuleRequest deleteVfModuleRequestMapper(RequestContext requestContext,CloudRegion cloudRegion,
                        ServiceInstance serviceInstance, GenericVnf genericVnf,
                        VfModule vfModule) throws IOException {
                DeleteVfModuleRequest deleteVfModuleRequest = new DeleteVfModuleRequest();
@@ -787,20 +811,20 @@ public class VnfAdapterVfModuleObjectMapper {
                {
                        deleteVfModuleRequest.setVfModuleStackId(vfModule.getVfModuleName());
                }
-               
+
                deleteVfModuleRequest.setSkipAAI(true);
                setIdAndUrl(deleteVfModuleRequest);
-               MsoRequest msoRequest = buildMsoRequest(requestContext, serviceInstance);       
+               MsoRequest msoRequest = buildMsoRequest(requestContext, serviceInstance);
                deleteVfModuleRequest.setMsoRequest(msoRequest);
                return deleteVfModuleRequest;
        }
-       
+
        protected void setIdAndUrl(DeleteVfModuleRequest deleteVfModuleRequest) throws UnsupportedEncodingException{
                String messageId = vnfAdapterObjectMapperUtils.getRandomUuid();
-               deleteVfModuleRequest.setMessageId(messageId);          
+               deleteVfModuleRequest.setMessageId(messageId);
                deleteVfModuleRequest.setNotificationUrl(vnfAdapterObjectMapperUtils.createCallbackUrl("VNFAResponse", messageId));
        }
-       
+
        private String convertToString(Object obj) {
                String json;
                try {
@@ -808,10 +832,10 @@ public class VnfAdapterVfModuleObjectMapper {
                } catch (JsonProcessingException e) {
                        json = "{}";
                }
-               
+
                return json;
        }
-       
+
        private VfModule getBaseVfModule(GenericVnf genericVnf) {
                List<VfModule> vfModules = genericVnf.getVfModules();
                VfModule baseVfModule = null;
@@ -819,7 +843,7 @@ public class VnfAdapterVfModuleObjectMapper {
                        for(int i = 0; i < vfModules.size(); i++) {
                                if (vfModules.get(i).getModelInfoVfModule().getIsBaseBoolean()) {
                                        baseVfModule = vfModules.get(i);
-                                       break;                                  
+                                       break;
                                }
                        }
                }
index c4e7237..f655e9a 100644 (file)
@@ -64,6 +64,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value2\"}] }"
        }
-}
\ No newline at end of file
+}
index 0132068..3387b6d 100644 (file)
@@ -63,6 +63,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value2\"}] }"
        }
-}
\ No newline at end of file
+}
index 90326e3..8721bdc 100644 (file)
@@ -60,6 +60,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}] }"
        }
-}
\ No newline at end of file
+}
index 2f943a6..04f6479 100644 (file)
@@ -62,6 +62,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId4\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}] }"
        }
-}
\ No newline at end of file
+}
index 4c50ad1..1b57fcd 100644 (file)
@@ -62,6 +62,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{}"
        }
-}
\ No newline at end of file
+}
index bd06f5f..a13740c 100644 (file)
@@ -63,6 +63,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value2\"}] }"
        }
 }
index d80c739..5468e21 100644 (file)
@@ -29,6 +29,8 @@
                "vf_module_name": "vfModuleName",
                "vnf_id": "vnfId",
                "vnf_name": "vnfName",
-               "workload_context": "workloadContext"
+               "workload_context": "workloadContext",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}] }"
        }
-}
\ No newline at end of file
+}
index 293c6c2..dd8e62c 100644 (file)
@@ -60,6 +60,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+         "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value2\"}] }"
        }
-}
\ No newline at end of file
+}
index fd3b0a3..d44b192 100644 (file)
@@ -62,6 +62,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value2\"}] }"
        }
-}
\ No newline at end of file
+}
index dff1ccf..0d10392 100644 (file)
@@ -64,6 +64,8 @@
                "vmType0_vmNetworkRole0_v6_ips": "ip2,ip3",
                "paramOne": "paramOneValue",
                "paramTwo": "paramTwoValue",
-               "paramThree": "paramThreeValue"
+               "paramThree": "paramThreeValue",
+        "sdnc_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_subintcount\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}, {\"attribute_name\": \"paramOne\", \"attribute_value\": \"paramOneValue\"}, {\"attribute_name\": \"vmType0_name_0\", \"attribute_value\": \"vmName0\"}, {\"attribute_name\": \"vnfNetworkRole0_v6_subnet_id\", \"attribute_value\": \"subnetId1\"}, {\"attribute_name\": \"vmType0_name_1\", \"attribute_value\": \"vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_name\", \"attribute_value\": \"netName0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_vlan_ids\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"vnfNetworkRole0_net_id\", \"attribute_value\": \"neutronId0\"}, {\"attribute_name\": \"availability_zone_0\", \"attribute_value\": \"zone0\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_1\", \"attribute_value\": \"ip3\"}, {\"attribute_name\": \"availability_zone_1\", \"attribute_value\": \"zone1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"availability_zone_2\", \"attribute_value\": \"zone2\"}, {\"attribute_name\": \"vmType0_names\", \"attribute_value\": \"vmName0,vmName1\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_route_prefixes\", \"attribute_value\": \"[{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix0\"},{\"interface_route_table_routes_route_prefix\": \"interfaceRoutePrefix1\"}]\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ip_0\", \"attribute_value\": \"ip2\"}, {\"attribute_name\": \"vnfNetworkRole0_subnet_id\", \"attribute_value\": \"subnetId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_1\", \"attribute_value\": \"ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vnfNetworkRole0_net_fqdn\", \"attribute_value\": \"netFqdnValue0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip_0\", \"attribute_value\": \"ip0\"}, {\"attribute_name\": \"vmNetworkRole0_ATT_VF_VLAN_FILTER\", \"attribute_value\": \"heatVlanFilter0,heatVlanFilter1\"}, {\"attribute_name\": \"paramTwo\", \"attribute_value\": \"paramTwoValue\"}, {\"attribute_name\": \"paramThree\", \"attribute_value\": \"paramThreeValue\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_v6_ips\", \"attribute_value\": \"ip2,ip3\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_floating_v6_ip\", \"attribute_value\": \"floatingIpV60\"}, {\"attribute_name\": \"vmType0_vmNetworkRole0_ips\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_names\", \"attribute_value\": \"1\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_net_ids\", \"attribute_value\": \"networkId0\"}, {\"attribute_name\": \"fw_0_subint_ctrl_port_0_v6_ip\", \"attribute_value\": \"ip0,ip1\"}, {\"attribute_name\": \"fw_subint_ctrl_port_0_floating_ip\", \"attribute_value\": \"floatingIpV40\"}] }",
+        "user_directives": "{ \"attributes\": [ {\"attribute_name\": \"key1\", \"attribute_value\": \"value2\"}] }"
        }
-}
\ No newline at end of file
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/InstanceManagement.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/InstanceManagement.java
new file mode 100644 (file)
index 0000000..1580c9f
--- /dev/null
@@ -0,0 +1,206 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.apihandlerinfra;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.http.HttpStatus;
+import org.onap.so.apihandler.common.ErrorNumbers;
+import org.onap.so.apihandler.common.RequestClientParameter;
+import org.onap.so.apihandlerinfra.exceptions.ApiException;
+import org.onap.so.apihandlerinfra.exceptions.RequestDbFailureException;
+import org.onap.so.apihandlerinfra.exceptions.ValidateException;
+import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo;
+import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.onap.so.db.request.client.RequestsDbClient;
+import org.onap.so.exceptions.ValidationException;
+import org.onap.so.logger.ErrorCode;
+import org.onap.so.logger.MessageEnum;
+import org.onap.so.serviceinstancebeans.ModelType;
+import org.onap.so.serviceinstancebeans.RequestReferences;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.transaction.Transactional;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.io.IOException;
+import java.util.HashMap;
+
+@Component
+@Path("/onap/so/infra/instanceManagement")
+@Api(value="/onap/so/infra/instanceManagement",description="Infrastructure API Requests for Instance Management")
+public class InstanceManagement {
+
+       private static Logger logger = LoggerFactory.getLogger(InstanceManagement.class);       
+       private static String uriPrefix = "/instanceManagement/";
+       private static final String SAVE_TO_DB = "save instance to db";
+
+       @Autowired
+       private RequestsDbClient infraActiveRequestsClient;
+       
+       @Autowired
+       private MsoRequest msoRequest;
+       
+       @Autowired
+       private RequestHandlerUtils requestHandlerUtils;
+       
+       @POST
+       @Path("/{version:[vV][1]}/serviceInstances/{serviceInstanceId}/vnfs/{vnfInstanceId}/workflows/{workflowUuid}")
+       @Consumes(MediaType.APPLICATION_JSON)
+       @Produces(MediaType.APPLICATION_JSON)
+       @ApiOperation(value="Execute custom workflow",response=Response.class)
+       @Transactional
+       public Response executeCustomWorkflow(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
+                                          @PathParam("vnfInstanceId") String vnfInstanceId, @PathParam("workflowUuid") String workflowUuid, @Context ContainerRequestContext requestContext) throws ApiException {
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
+               HashMap<String, String> instanceIdMap = new HashMap<>();
+               instanceIdMap.put("serviceInstanceId", serviceInstanceId);
+               instanceIdMap.put("vnfInstanceId", vnfInstanceId);
+               instanceIdMap.put("workflowUuid", workflowUuid);        
+               return processCustomWorkflowRequest(request, Action.inPlaceSoftwareUpdate, instanceIdMap, version, requestId, requestContext);
+       }       
+
+       private Response processCustomWorkflowRequest(String requestJSON, Actions action, HashMap<String, String> instanceIdMap, String version, String requestId, ContainerRequestContext requestContext) throws ApiException {
+               String serviceInstanceId = null;
+               if (instanceIdMap != null) {
+                       serviceInstanceId = instanceIdMap.get("serviceInstanceId");
+               }
+               Boolean aLaCarte = true;
+               long startTime = System.currentTimeMillis ();
+               ServiceInstancesRequest sir = null;
+               String apiVersion = version.substring(1);
+               
+               String requestUri = requestHandlerUtils.getRequestUri(requestContext, uriPrefix);
+               
+               sir = requestHandlerUtils.convertJsonToServiceInstanceRequest(requestJSON, action, startTime, sir, msoRequest, requestId, requestUri);
+               String requestScope = requestHandlerUtils.deriveRequestScope(action, sir, requestUri);
+               InfraActiveRequests currentActiveReq =  msoRequest.createRequestObject (sir,  action, requestId, Status.IN_PROGRESS, requestJSON, requestScope);
+                               
+               try {
+                       requestHandlerUtils.validateHeaders(requestContext);
+               } catch (ValidationException e) {
+                       logger.error("Exception occurred", e);
+            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_VALIDATION_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+            ValidateException validateException = new ValidateException.Builder(e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
+                        .errorInfo(errorLoggerInfo).build();
+            requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+            throw validateException;
+               }
+               
+               requestHandlerUtils.parseRequest(sir, instanceIdMap, action, version, requestJSON, aLaCarte, requestId, currentActiveReq);
+               requestHandlerUtils.setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
+                
+               int requestVersion = Integer.parseInt(version.substring(1));
+               String vnfType = msoRequest.getVnfType(sir,requestScope,action,requestVersion);
+                               
+               if(requestScope.equalsIgnoreCase(ModelType.vnf.name()) && vnfType != null){
+                       currentActiveReq.setVnfType(vnfType);
+               }
+               
+               InfraActiveRequests dup = null;
+               boolean inProgress = false;             
+
+               dup = requestHandlerUtils.duplicateCheck(action, instanceIdMap, startTime, msoRequest, null, requestScope, currentActiveReq);
+
+               if(dup != null){
+                       inProgress = requestHandlerUtils.camundaHistoryCheck(dup, currentActiveReq);
+               }
+               
+               if (dup != null && inProgress) {
+            requestHandlerUtils.buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, null, requestScope, dup);
+               }
+               ServiceInstancesResponse serviceResponse = new ServiceInstancesResponse();
+
+               RequestReferences referencesResponse = new RequestReferences();
+
+               referencesResponse.setRequestId(requestId);
+
+               serviceResponse.setRequestReferences(referencesResponse);
+               Boolean isBaseVfModule = false;
+               
+               String workflowUuid = null;
+               if (instanceIdMap !=null) {
+                       workflowUuid = instanceIdMap.get("workflowUuid");
+               }
+
+        RecipeLookupResult recipeLookupResult = getCustomWorkflowUri(workflowUuid);
+        String serviceInstanceType = requestHandlerUtils.getServiceType(requestScope, sir, true);                                              
+       
+               serviceInstanceId = requestHandlerUtils.setServiceInstanceId(requestScope, sir);
+               String vnfId = "";
+               
+               if(sir.getVnfInstanceId () != null){
+                       vnfId = sir.getVnfInstanceId ();
+               }
+               
+        try{
+            infraActiveRequestsClient.save(currentActiveReq);
+        }catch(Exception e){
+            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DB_ACCESS_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+            throw new RequestDbFailureException.Builder(SAVE_TO_DB, e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
+                    .errorInfo(errorLoggerInfo).build();
+        }              
+               
+               RequestClientParameter requestClientParameter = null;
+               try {
+                       requestClientParameter = new RequestClientParameter.Builder()
+                                               .setRequestId(requestId)
+                                               .setBaseVfModule(isBaseVfModule)
+                                               .setRecipeTimeout(recipeLookupResult.getRecipeTimeout())
+                                               .setRequestAction(action.toString())
+                                               .setServiceInstanceId(serviceInstanceId)                                                
+                                               .setVnfId(vnfId)                                                
+                                               .setServiceType(serviceInstanceType)
+                                               .setVnfType(vnfType)                                            
+                                               .setRequestDetails(requestHandlerUtils.mapJSONtoMSOStyle(requestJSON, sir, aLaCarte, action))
+                                               .setApiVersion(apiVersion)
+                                               .setALaCarte(aLaCarte)
+                                               .setRequestUri(requestUri)
+                                               .build();
+               } catch (IOException e) {
+                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                       throw new ValidateException.Builder("Unable to generate RequestClientParamter object" + e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER)
+                         .errorInfo(errorLoggerInfo).build();
+               }
+               return requestHandlerUtils.postBPELRequest(currentActiveReq, requestClientParameter, recipeLookupResult.getOrchestrationURI(), requestScope);
+       }       
+   
+    private RecipeLookupResult getCustomWorkflowUri(String workflowUuid) {
+       
+               RecipeLookupResult recipeLookupResult = new RecipeLookupResult("/mso/async/services/VnfInPlaceUpdate", 180);
+               return recipeLookupResult;              
+       }       
+}
index 5790f1a..434b9e9 100644 (file)
@@ -63,6 +63,7 @@ public class JerseyConfiguration extends ResourceConfig {
                register(RequestUriFilter.class);
                register(E2EServiceInstances.class);
                register(WorkflowSpecificationsHandler.class);
+               register(InstanceManagement.class);
                // this registration seems to be needed to get predictable
                // execution behavior for the above JSON Exception Mappers
                register(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class);
index de7d263..dc8e6b6 100644 (file)
@@ -50,6 +50,7 @@ import org.onap.so.apihandlerinfra.validation.MembersValidation;
 import org.onap.so.apihandlerinfra.validation.ApplyUpdatedConfigValidation;
 import org.onap.so.apihandlerinfra.validation.CloudConfigurationValidation;
 import org.onap.so.apihandlerinfra.validation.ConfigurationParametersValidation;
+import org.onap.so.apihandlerinfra.validation.CustomWorkflowValidation;
 import org.onap.so.apihandlerinfra.validation.InPlaceSoftwareUpdateValidation;
 import org.onap.so.apihandlerinfra.validation.InstanceIdMapValidation;
 import org.onap.so.apihandlerinfra.validation.ModelInfoValidation;
@@ -175,7 +176,14 @@ public class MsoRequest {
         
         rules.add(new InstanceIdMapValidation());
         
-        if(reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate){
+        String workflowUuid = null;
+        if (instanceIdMap != null) {
+               workflowUuid = instanceIdMap.get("workflowUuid");
+        }
+        
+        if (workflowUuid != null) {
+               rules.add(new CustomWorkflowValidation());
+        }else if(reqVersion >= 6 && action == Action.inPlaceSoftwareUpdate){
                rules.add(new InPlaceSoftwareUpdateValidation());
         }else if(reqVersion >= 6 && action == Action.applyUpdatedConfig){
                rules.add(new ApplyUpdatedConfigValidation());
@@ -361,7 +369,9 @@ public class MsoRequest {
                        aq.setInstanceGroupName(requestInfo.getInstanceName());
                    }
                    if(ModelType.vnf.name().equalsIgnoreCase(requestScope)){
-                       aq.setVnfName(requestInfo.getInstanceName());
+                       if (requestInfo != null) {
+                               aq.setVnfName(requestInfo.getInstanceName());
+                       }
                                        if (null != servInsReq.getRequestDetails()) {
                                                RelatedInstanceList[] instanceList = servInsReq.getRequestDetails().getRelatedInstanceList();
        
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/RequestHandlerUtils.java
new file mode 100644 (file)
index 0000000..c02b40a
--- /dev/null
@@ -0,0 +1,567 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.apihandlerinfra;
+
+
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.HttpStatus;
+import org.camunda.bpm.engine.history.HistoricProcessInstance;
+import org.camunda.bpm.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.so.apihandler.camundabeans.CamundaResponse;
+import org.onap.so.apihandler.common.CommonConstants;
+import org.onap.so.apihandler.common.ErrorNumbers;
+import org.onap.so.apihandler.common.RequestClient;
+import org.onap.so.apihandler.common.RequestClientFactory;
+import org.onap.so.apihandler.common.RequestClientParameter;
+import org.onap.so.apihandler.common.ResponseBuilder;
+import org.onap.so.apihandler.common.ResponseHandler;
+import org.onap.so.apihandlerinfra.exceptions.ApiException;
+import org.onap.so.apihandlerinfra.exceptions.BPMNFailureException;
+import org.onap.so.apihandlerinfra.exceptions.ClientConnectionException;
+import org.onap.so.apihandlerinfra.exceptions.ContactCamundaException;
+import org.onap.so.apihandlerinfra.exceptions.DuplicateRequestException;
+import org.onap.so.apihandlerinfra.exceptions.RequestDbFailureException;
+import org.onap.so.apihandlerinfra.exceptions.ValidateException;
+import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo;
+import org.onap.so.db.catalog.client.CatalogDbClient;
+import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.onap.so.db.request.client.RequestsDbClient;
+import org.onap.so.exceptions.ValidationException;
+import org.onap.so.logger.ErrorCode;
+import org.onap.so.logger.LogConstants;
+import org.onap.so.logger.MessageEnum;
+import org.onap.so.serviceinstancebeans.ModelType;
+import org.onap.so.serviceinstancebeans.RelatedInstance;
+import org.onap.so.serviceinstancebeans.RelatedInstanceList;
+import org.onap.so.serviceinstancebeans.RequestParameters;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.onap.so.utils.CryptoUtils;
+import org.onap.so.utils.UUIDChecker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.core.env.Environment;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestTemplate;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.xml.bind.DatatypeConverter;
+
+import static org.onap.so.logger.HttpHeadersConstants.REQUESTOR_ID;
+
+import java.io.IOException;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+@Component
+public class RequestHandlerUtils {
+
+       private static Logger logger = LoggerFactory.getLogger(RequestHandlerUtils.class);
+       
+       private static final String SAVE_TO_DB = "save instance to db";
+       
+       @Autowired
+       private Environment env;        
+
+       @Autowired
+       private RequestClientFactory reqClientFactory;
+       
+       @Autowired
+       private RequestsDbClient infraActiveRequestsClient;
+       
+       @Autowired
+       private ResponseBuilder builder;
+       
+       @Autowired
+       private MsoRequest msoRequest;
+       
+       @Autowired
+       private RestTemplate restTemplate;
+       
+       @Autowired
+       private CatalogDbClient catalogDbClient;
+               
+       public Response postBPELRequest(InfraActiveRequests currentActiveReq, RequestClientParameter requestClientParameter, String orchestrationUri, String requestScope)throws ApiException {
+               RequestClient requestClient = null;
+               HttpResponse response = null;
+               try {
+                       requestClient = reqClientFactory.getRequestClient (orchestrationUri);
+                       response = requestClient.post(requestClientParameter);
+               } catch (Exception e) {
+                       
+            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+            String url = requestClient != null ? requestClient.getUrl() : "";
+            ClientConnectionException clientException = new ClientConnectionException.Builder(url, HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).cause(e).errorInfo(errorLoggerInfo).build();
+            updateStatus(currentActiveReq, Status.FAILED, clientException.getMessage());
+
+            throw clientException;
+               }
+
+               if (response == null) {
+                       
+            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.BusinessProcesssError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+            ClientConnectionException clientException = new ClientConnectionException.Builder(requestClient.getUrl(), HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo).build();
+
+            updateStatus(currentActiveReq, Status.FAILED, clientException.getMessage());
+
+            throw clientException;
+               }
+
+               ResponseHandler respHandler = null;
+        int bpelStatus = 500;
+        try {
+            respHandler = new ResponseHandler (response, requestClient.getType ());
+            bpelStatus = respHandler.getStatus ();
+        } catch (ApiException e) {
+            logger.error("Exception occurred", e);
+            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+            ValidateException validateException = new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
+                        .errorInfo(errorLoggerInfo).build();
+            updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+            throw validateException;
+        }
+
+               // BPEL accepted the request, the request is in progress
+               if (bpelStatus == HttpStatus.SC_ACCEPTED) {
+                       ServiceInstancesResponse jsonResponse;
+                       CamundaResponse camundaResp = respHandler.getResponse();
+                       
+                       if("Success".equalsIgnoreCase(camundaResp.getMessage())) {
+                               try {
+                                       ObjectMapper mapper = new ObjectMapper();
+                                       jsonResponse = mapper.readValue(camundaResp.getResponse(), ServiceInstancesResponse.class);
+                                       jsonResponse.getRequestReferences().setRequestId(requestClientParameter.getRequestId());
+                                       Optional<URL> selfLinkUrl = msoRequest.buildSelfLinkUrl(currentActiveReq.getRequestUrl(), requestClientParameter.getRequestId());
+                                       if(selfLinkUrl.isPresent()){
+                                               jsonResponse.getRequestReferences().setRequestSelfLink(selfLinkUrl.get());
+                                       } else {
+                                           jsonResponse.getRequestReferences().setRequestSelfLink(null);
+                                       }    
+                               } catch (IOException e) {
+                                       logger.error("Exception occurred", e);
+                                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                                       ValidateException validateException = new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", HttpStatus.SC_NOT_ACCEPTABLE, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
+                                           .errorInfo(errorLoggerInfo).build();
+                                       updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+                                       throw validateException;
+                               }       
+                               return builder.buildResponse(HttpStatus.SC_ACCEPTED, requestClientParameter.getRequestId(), jsonResponse, requestClientParameter.getApiVersion());
+                       } 
+               }
+                       
+               List<String> variables = new ArrayList<>();
+               variables.add(bpelStatus + "");
+               String camundaJSONResponseBody = respHandler.getResponseBody ();
+               if (camundaJSONResponseBody != null && !camundaJSONResponseBody.isEmpty ()) {
+                       
+                   ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcesssError).errorSource(requestClient.getUrl()).build();
+                   BPMNFailureException bpmnException = new BPMNFailureException.Builder(String.valueOf(bpelStatus) + camundaJSONResponseBody, bpelStatus, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR)
+                           .errorInfo(errorLoggerInfo).build();
+
+                   updateStatus(currentActiveReq, Status.FAILED, bpmnException.getMessage());
+
+                   throw bpmnException;
+               } else {
+               
+                   ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcesssError).errorSource(requestClient.getUrl()).build();
+
+
+                   BPMNFailureException servException = new BPMNFailureException.Builder(String.valueOf(bpelStatus), bpelStatus, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR)
+                           .errorInfo(errorLoggerInfo).build();
+                   updateStatus(currentActiveReq, Status.FAILED, servException.getMessage());
+
+                   throw servException;
+               }
+       }
+       
+       public void updateStatus(InfraActiveRequests aq, Status status, String errorMessage) throws RequestDbFailureException{
+               if ((status == Status.FAILED) || (status == Status.COMPLETE)) {
+                       aq.setStatusMessage (errorMessage);
+                       aq.setProgress(new Long(100));
+                       aq.setRequestStatus(status.toString());
+                       Timestamp endTimeStamp = new Timestamp (System.currentTimeMillis());
+                       aq.setEndTime (endTimeStamp);
+                       try{
+                               infraActiveRequestsClient.save(aq);
+                       }catch(Exception e){
+                               ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DB_ACCESS_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                   throw new RequestDbFailureException.Builder(SAVE_TO_DB, e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
+                           .errorInfo(errorLoggerInfo).build();
+                       }
+               }
+       }
+       
+       public String deriveRequestScope(Actions action, ServiceInstancesRequest sir, String requestUri) {
+               if(action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig){
+                       return (ModelType.vnf.name());
+               }else if(action == Action.addMembers || action == Action.removeMembers){
+                       return(ModelType.instanceGroup.toString());
+               }else{
+                       String requestScope;
+                       if(sir.getRequestDetails().getModelInfo().getModelType() == null){
+                               requestScope = requestScopeFromUri(requestUri);
+                       }else{
+                               requestScope = sir.getRequestDetails().getModelInfo().getModelType().name(); 
+                       }
+                       return requestScope; 
+               }
+       }
+       
+       
+       public void validateHeaders(ContainerRequestContext context) throws ValidationException{
+               MultivaluedMap<String, String> headers = context.getHeaders();
+               if(!headers.containsKey(ONAPLogConstants.Headers.REQUEST_ID)){
+                        throw new ValidationException(ONAPLogConstants.Headers.REQUEST_ID + " header", true);
+               }
+               if(!headers.containsKey(ONAPLogConstants.Headers.PARTNER_NAME)){
+                       throw new ValidationException(ONAPLogConstants.Headers.PARTNER_NAME + " header", true);
+               }
+               if(!headers.containsKey(REQUESTOR_ID)){
+                       throw new ValidationException(REQUESTOR_ID + " header", true);
+               }
+       }
+       
+       public String getRequestUri(ContainerRequestContext context, String uriPrefix){
+               String requestUri = context.getUriInfo().getPath();
+               String httpUrl = MDC.get(LogConstants.URI_BASE).concat(requestUri);
+               MDC.put(LogConstants.HTTP_URL, httpUrl);
+               requestUri = requestUri.substring(requestUri.indexOf(uriPrefix) + uriPrefix.length());
+               return requestUri;
+       }
+       
+       public InfraActiveRequests duplicateCheck(Actions action, HashMap<String, String> instanceIdMap, long startTime,
+            MsoRequest msoRequest, String instanceName, String requestScope, InfraActiveRequests currentActiveReq) throws ApiException {
+               InfraActiveRequests dup = null;
+               try {
+                       if(!(instanceName==null && requestScope.equals("service") && (action == Action.createInstance || action == Action.activateInstance || action == Action.assignInstance))){
+                               dup = infraActiveRequestsClient.checkInstanceNameDuplicate (instanceIdMap, instanceName, requestScope);
+                       }
+               } catch (Exception e) {
+                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DUPLICATE_CHECK_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                       RequestDbFailureException requestDbFailureException = new RequestDbFailureException.Builder("check for duplicate instance", e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
+                                       .errorInfo(errorLoggerInfo).build();
+                       updateStatus(currentActiveReq, Status.FAILED, requestDbFailureException.getMessage());
+                       throw requestDbFailureException;
+               }
+               return dup;
+       }
+       
+       public boolean camundaHistoryCheck(InfraActiveRequests duplicateRecord, InfraActiveRequests currentActiveReq) throws RequestDbFailureException, ContactCamundaException{
+               String requestId = duplicateRecord.getRequestId();
+               String path = env.getProperty("mso.camunda.rest.history.uri") + requestId;
+               String targetUrl = env.getProperty("mso.camundaURL") + path;
+               HttpHeaders headers = setCamundaHeaders(env.getRequiredProperty("mso.camundaAuth"), env.getRequiredProperty("mso.msoKey")); 
+               HttpEntity<?> requestEntity = new HttpEntity<>(headers);
+               ResponseEntity<List<HistoricProcessInstanceEntity>> response = null;
+               try{
+                       response = restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, new ParameterizedTypeReference<List<HistoricProcessInstanceEntity>>(){});
+               }catch(HttpStatusCodeException e){
+                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DUPLICATE_CHECK_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                       ContactCamundaException contactCamundaException= new ContactCamundaException.Builder(requestId, e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
+                                       .errorInfo(errorLoggerInfo).build();
+                       updateStatus(currentActiveReq, Status.FAILED, contactCamundaException.getMessage());
+                       throw contactCamundaException;
+               }
+               if(response.getBody().isEmpty()){
+                       updateStatus(duplicateRecord, Status.COMPLETE, "Request Completed");
+               }
+               for(HistoricProcessInstance instance : response.getBody()){
+                       if(instance.getState().equals("ACTIVE")){
+                               return true;
+                       }else{
+                               updateStatus(duplicateRecord, Status.COMPLETE, "Request Completed");
+                       }
+               }       
+               return false;
+       }
+       
+       protected HttpHeaders setCamundaHeaders(String auth, String msoKey) {
+               HttpHeaders headers = new HttpHeaders();
+               List<org.springframework.http.MediaType> acceptableMediaTypes = new ArrayList<>();
+               acceptableMediaTypes.add(org.springframework.http.MediaType.APPLICATION_JSON);
+               headers.setAccept(acceptableMediaTypes);
+               try {
+                       String userCredentials = CryptoUtils.decrypt(auth, msoKey);
+                       if(userCredentials != null) {
+                               headers.add(HttpHeaders.AUTHORIZATION, "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes()));
+                       }
+               } catch(GeneralSecurityException e) {
+                       logger.error("Security exception", e);
+               }
+               return headers;
+       }
+
+       public ServiceInstancesRequest convertJsonToServiceInstanceRequest(String requestJSON, Actions action, long startTime,
+                                     ServiceInstancesRequest sir, MsoRequest msoRequest, String requestId, String requestUri) throws ApiException {
+               try{
+                       ObjectMapper mapper = new ObjectMapper();
+                       return mapper.readValue(requestJSON, ServiceInstancesRequest.class);
+
+               } catch (IOException e) {
+
+                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+
+                       ValidateException validateException = new ValidateException.Builder("Error mapping request: " + e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
+                                       .errorInfo(errorLoggerInfo).build();
+                       String requestScope = requestScopeFromUri(requestUri);
+
+                       msoRequest.createErrorRequestRecord(Status.FAILED, requestId, validateException.getMessage(), action, requestScope, requestJSON);
+
+                       throw validateException;
+               }
+       }
+
+       public void parseRequest(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMap, Actions action, String version, 
+                       String requestJSON, Boolean aLaCarte, String requestId, InfraActiveRequests currentActiveReq) throws ValidateException, RequestDbFailureException {
+               int reqVersion = Integer.parseInt(version.substring(1));
+               try {
+                       msoRequest.parse(sir, instanceIdMap, action, version, requestJSON, reqVersion, aLaCarte);
+               } catch (Exception e) {
+                       logger.error("failed to parse request", e);
+                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                       ValidateException validateException = new ValidateException.Builder("Error parsing request: " + e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
+                                       .errorInfo(errorLoggerInfo).build();
+
+                       updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+
+                       throw validateException;
+               }
+       }
+       
+       public void buildErrorOnDuplicateRecord(InfraActiveRequests currentActiveReq, Actions action, HashMap<String, String> instanceIdMap, long startTime, MsoRequest msoRequest,
+             String instanceName, String requestScope, InfraActiveRequests dup) throws ApiException {
+
+               String instance = null;
+               if(instanceName != null){
+                       instance = instanceName;
+               }else{
+                       instance = instanceIdMap.get(requestScope + "InstanceId");
+               }               
+               ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DUPLICATE_FOUND, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+
+               DuplicateRequestException dupException = new DuplicateRequestException.Builder(requestScope,instance,dup.getRequestStatus(),dup.getRequestId(), HttpStatus.SC_CONFLICT, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR)
+                               .errorInfo(errorLoggerInfo).build();
+
+               updateStatus(currentActiveReq, Status.FAILED, dupException.getMessage());
+
+               throw dupException;
+       }
+       
+        public String getRequestId(ContainerRequestContext requestContext) throws ValidateException {
+           String requestId = null;
+           if (requestContext.getProperty("requestId") != null) {
+               requestId = requestContext.getProperty("requestId").toString();
+           }
+           if (UUIDChecker.isValidUUID(requestId)) {
+               return requestId;
+           } else {
+               ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
+                       ValidateException validateException = new ValidateException.Builder("Request Id " + requestId + " is not a valid UUID", HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER)
+                                  .errorInfo(errorLoggerInfo).build();
+                       
+                       throw validateException;
+           }
+        }      
+       
+        public void setInstanceId(InfraActiveRequests currentActiveReq, String requestScope, String instanceId, Map<String, String> instanceIdMap) {
+               if(StringUtils.isNotBlank(instanceId)) {
+                       if(ModelType.service.name().equalsIgnoreCase(requestScope)) {
+                               currentActiveReq.setServiceInstanceId(instanceId);
+                       } else if(ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
+                               currentActiveReq.setVnfId(instanceId);
+                       } else if(ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
+                               currentActiveReq.setVfModuleId(instanceId);
+                       } else if(ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
+                               currentActiveReq.setVolumeGroupId(instanceId);
+                       } else if(ModelType.network.name().equalsIgnoreCase(requestScope)) {
+                               currentActiveReq.setNetworkId(instanceId);
+                       } else if(ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
+                               currentActiveReq.setConfigurationId(instanceId);
+                       }else if(ModelType.instanceGroup.toString().equalsIgnoreCase(requestScope)){
+                               currentActiveReq.setInstanceGroupId(instanceId);
+                       }
+               } else if(instanceIdMap != null && !instanceIdMap.isEmpty()) {
+                       if(instanceIdMap.get("serviceInstanceId") != null){
+                               currentActiveReq.setServiceInstanceId(instanceIdMap.get("serviceInstanceId"));
+               }
+               if(instanceIdMap.get("vnfInstanceId") != null){
+                       currentActiveReq.setVnfId(instanceIdMap.get("vnfInstanceId"));
+               }
+               if(instanceIdMap.get("vfModuleInstanceId") != null){
+                       currentActiveReq.setVfModuleId(instanceIdMap.get("vfModuleInstanceId"));
+               }
+               if(instanceIdMap.get("volumeGroupInstanceId") != null){
+                       currentActiveReq.setVolumeGroupId(instanceIdMap.get("volumeGroupInstanceId"));
+               }
+               if(instanceIdMap.get("networkInstanceId") != null){
+                       currentActiveReq.setNetworkId(instanceIdMap.get("networkInstanceId"));
+               }
+               if(instanceIdMap.get("configurationInstanceId") != null){
+                       currentActiveReq.setConfigurationId(instanceIdMap.get("configurationInstanceId"));
+               }
+               if(instanceIdMap.get(CommonConstants.INSTANCE_GROUP_INSTANCE_ID) != null){
+                       currentActiveReq.setInstanceGroupId(instanceIdMap.get(CommonConstants.INSTANCE_GROUP_INSTANCE_ID));
+               }
+               }
+        }
+        
+        public String mapJSONtoMSOStyle(String msoRawRequest, ServiceInstancesRequest serviceInstRequest, boolean isAlaCarte, Actions action) throws IOException {
+           ObjectMapper mapper = new ObjectMapper();           
+           mapper.setSerializationInclusion(Include.NON_NULL);         
+           if(msoRawRequest != null){
+                       ServiceInstancesRequest sir = mapper.readValue(msoRawRequest, ServiceInstancesRequest.class);           
+                       if(     serviceInstRequest != null && 
+                               serviceInstRequest.getRequestDetails() != null && 
+                               serviceInstRequest.getRequestDetails().getRequestParameters() != null) {
+                               if(     !isAlaCarte && Action.createInstance.equals(action)) {
+                                       sir.getRequestDetails().setCloudConfiguration(serviceInstRequest.getRequestDetails().getCloudConfiguration());
+                                       sir.getRequestDetails().getRequestParameters().setUserParams(serviceInstRequest.getRequestDetails().getRequestParameters().getUserParams());
+                               }
+                               sir.getRequestDetails().getRequestParameters().setUsePreload(serviceInstRequest.getRequestDetails().getRequestParameters().getUsePreload());
+                       }
+                       
+                       logger.debug("Value as string: {}", mapper.writeValueAsString(sir));
+                       return mapper.writeValueAsString(sir);
+           }
+           return null;
+       }
+        
+       public Optional<String> retrieveModelName(RequestParameters requestParams) {
+               String requestTestApi = null;
+               TestApi testApi = null;
+               
+               if (requestParams != null) {
+                       requestTestApi = requestParams.getTestApi();
+               }
+               
+               if (requestTestApi == null) {
+                       if(requestParams != null && requestParams.getALaCarte() != null && !requestParams.getALaCarte()) {
+                       requestTestApi = env.getProperty(CommonConstants.MACRO_TEST_API);
+                       } else {
+                               requestTestApi = env.getProperty(CommonConstants.ALACARTE_TEST_API);
+                       }
+               }
+               
+               try {
+                       testApi = TestApi.valueOf(requestTestApi);
+                       return Optional.of(testApi.getModelName());
+               } catch (Exception e) {
+                       logger.warn("Catching the exception on the valueOf enum call and continuing", e);
+                       throw new IllegalArgumentException("Invalid TestApi is provided", e);
+               }
+          }
+           
+       public String getDefaultModel(ServiceInstancesRequest sir) {
+               String defaultModel = sir.getRequestDetails().getRequestInfo().getSource() + "_DEFAULT";
+               Optional<String> oModelName = retrieveModelName(sir.getRequestDetails().getRequestParameters());
+               if (oModelName.isPresent()) {
+                       defaultModel = oModelName.get();
+               }
+               return defaultModel;
+       }
+               
+       public String getServiceType(String requestScope, ServiceInstancesRequest sir, Boolean aLaCarteFlag){
+               String serviceType = null;
+               if(requestScope.equalsIgnoreCase(ModelType.service.toString())){
+                       String defaultServiceModelName = getDefaultModel(sir);
+                       org.onap.so.db.catalog.beans.Service serviceRecord;
+                       if(aLaCarteFlag){
+                                serviceRecord = catalogDbClient.getFirstByModelNameOrderByModelVersionDesc(defaultServiceModelName);
+                                if(serviceRecord != null){
+                                        serviceType = serviceRecord.getServiceType();
+                                }
+                       }else{
+                               serviceRecord = catalogDbClient.getServiceByID(sir.getRequestDetails().getModelInfo().getModelVersionId());
+                               if(serviceRecord != null){
+                                        serviceType = serviceRecord.getServiceType();
+                                }else{
+                                        serviceRecord = catalogDbClient.getFirstByModelNameOrderByModelVersionDesc(defaultServiceModelName);
+                                        if(serviceRecord != null){
+                                                serviceType = serviceRecord.getServiceType();
+                                        }
+                                }
+                       }
+               }else{
+                       serviceType = msoRequest.getServiceInstanceType(sir, requestScope);
+                       }
+               return serviceType;
+       }
+       
+       protected String setServiceInstanceId(String requestScope, ServiceInstancesRequest sir){
+               if(sir.getServiceInstanceId () != null){
+                       return sir.getServiceInstanceId ();
+               }else if(requestScope.equalsIgnoreCase(ModelType.instanceGroup.toString())){
+                       RelatedInstanceList[] relatedInstances = sir.getRequestDetails().getRelatedInstanceList();
+                       if(relatedInstances != null){
+                               for(RelatedInstanceList relatedInstanceList : relatedInstances){
+                                       RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
+                                       if(relatedInstance.getModelInfo().getModelType() == ModelType.service){
+                                               return relatedInstance.getInstanceId();
+                                       }
+                               }
+                       }
+               }
+               return null;
+       }
+       
+       private String requestScopeFromUri(String requestUri){
+               String requestScope;
+               if(requestUri.contains(ModelType.network.name())){
+                       requestScope = ModelType.network.name();
+               }else if(requestUri.contains(ModelType.vfModule.name())){
+                       requestScope = ModelType.vfModule.name();
+               }else if(requestUri.contains(ModelType.volumeGroup.name())){
+                       requestScope = ModelType.volumeGroup.name();
+               }else if(requestUri.contains(ModelType.configuration.name())){
+                       requestScope = ModelType.configuration.name();
+               }else if(requestUri.contains(ModelType.vnf.name())){
+                       requestScope = ModelType.vnf.name();
+               }else{
+                       requestScope = ModelType.service.name();
+               }
+               return requestScope;
+       }
+       
+}
index 8c5904f..c6a45d5 100644 (file)
@@ -23,8 +23,6 @@
 
 package org.onap.so.apihandlerinfra;
 
-
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
@@ -32,22 +30,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang.StringUtils;
-import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
-import org.onap.logging.ref.slf4j.ONAPLogConstants;
-import org.onap.so.apihandler.camundabeans.CamundaResponse;
 import org.onap.so.apihandler.common.CommonConstants;
 import org.onap.so.apihandler.common.ErrorNumbers;
-import org.onap.so.apihandler.common.RequestClient;
-import org.onap.so.apihandler.common.RequestClientFactory;
 import org.onap.so.apihandler.common.RequestClientParameter;
-import org.onap.so.apihandler.common.ResponseBuilder;
-import org.onap.so.apihandler.common.ResponseHandler;
 import org.onap.so.apihandlerinfra.exceptions.ApiException;
-import org.onap.so.apihandlerinfra.exceptions.BPMNFailureException;
-import org.onap.so.apihandlerinfra.exceptions.ClientConnectionException;
-import org.onap.so.apihandlerinfra.exceptions.ContactCamundaException;
-import org.onap.so.apihandlerinfra.exceptions.DuplicateRequestException;
 import org.onap.so.apihandlerinfra.exceptions.RecipeNotFoundException;
 import org.onap.so.apihandlerinfra.exceptions.RequestDbFailureException;
 import org.onap.so.apihandlerinfra.exceptions.ValidateException;
@@ -67,7 +54,6 @@ import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.db.request.client.RequestsDbClient;
 import org.onap.so.exceptions.ValidationException;
 import org.onap.so.logger.ErrorCode;
-import org.onap.so.logger.LogConstants;
 import org.onap.so.logger.MessageEnum;
 import org.onap.so.serviceinstancebeans.CloudConfiguration;
 import org.onap.so.serviceinstancebeans.ModelInfo;
@@ -83,23 +69,11 @@ import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
 import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
 import org.onap.so.serviceinstancebeans.VfModules;
 import org.onap.so.serviceinstancebeans.Vnfs;
-import org.onap.so.utils.CryptoUtils;
-import org.onap.so.utils.UUIDChecker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.core.env.Environment;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.HttpStatusCodeException;
-import org.springframework.web.client.RestTemplate;
-import org.camunda.bpm.engine.history.HistoricProcessInstance;
-import org.camunda.bpm.engine.impl.persistence.entity.HistoricProcessInstanceEntity;
 
 import javax.transaction.Transactional;
 import javax.ws.rs.Consumes;
@@ -112,21 +86,14 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.container.ContainerRequestContext;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.Response;
-import javax.xml.bind.DatatypeConverter;
 import java.io.IOException;
-import java.net.URL;
-import java.security.GeneralSecurityException;
-import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import static org.onap.so.logger.HttpHeadersConstants.REQUESTOR_ID;
-
 @Component
 @Path("/onap/so/infra/serviceInstantiation")
 @Api(value="/onap/so/infra/serviceInstantiation",description="Infrastructure API Requests for Service Instances")
@@ -135,28 +102,23 @@ public class ServiceInstances {
        private static Logger logger = LoggerFactory.getLogger(MsoRequest.class);
        private static String NAME = "name";
        private static String VALUE = "value";
+       private static String uriPrefix = "/serviceInstantiation/";
        private static final String SAVE_TO_DB = "save instance to db";
 
        @Autowired
        private Environment env;
        
-       @Autowired
-       private RequestClientFactory reqClientFactory;
-       
        @Autowired
        private CatalogDbClient catalogDbClient;
 
        @Autowired
        private RequestsDbClient infraActiveRequestsClient;
        
-       @Autowired
-       private ResponseBuilder builder;
-       
        @Autowired
        private MsoRequest msoRequest;
        
        @Autowired
-       private RestTemplate restTemplate;
+       private RequestHandlerUtils requestHandlerUtils;
        
        @POST
     @Path("/{version:[vV][5-7]}/serviceInstances")
@@ -165,8 +127,8 @@ public class ServiceInstances {
        @ApiOperation(value="Create a Service Instance on a version provided",response=Response.class)
        @Transactional
     public Response createServiceInstance(String request, @PathParam("version") String version, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
-               return serviceInstances(request, Action.createInstance, null, version, requestId, getRequestUri(requestContext));
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
+               return serviceInstances(request, Action.createInstance, null, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -176,10 +138,10 @@ public class ServiceInstances {
        @ApiOperation(value="Activate provided Service Instance",response=Response.class)
        @Transactional
     public Response activateServiceInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return serviceInstances(request, Action.activateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.activateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -189,10 +151,10 @@ public class ServiceInstances {
        @ApiOperation(value="Deactivate provided Service Instance",response=Response.class)
        @Transactional
     public Response deactivateServiceInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return serviceInstances(request, Action.deactivateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.deactivateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @DELETE
@@ -202,10 +164,10 @@ public class ServiceInstances {
        @ApiOperation(value="Delete provided Service Instance",response=Response.class)
        @Transactional
     public Response deleteServiceInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -215,8 +177,8 @@ public class ServiceInstances {
        @ApiOperation(value="Assign Service Instance", response=Response.class)
        @Transactional
        public Response assignServiceInstance(String request, @PathParam("version") String version, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
-               return serviceInstances(request, Action.assignInstance, null, version, requestId, getRequestUri(requestContext));
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
+               return serviceInstances(request, Action.assignInstance, null, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @POST
@@ -226,10 +188,10 @@ public class ServiceInstances {
        @ApiOperation(value="Unassign Service Instance", response=Response.class)
        @Transactional
        public Response unassignServiceInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<String,String>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return serviceInstances(request, Action.unassignInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.unassignInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -239,10 +201,10 @@ public class ServiceInstances {
        @ApiOperation(value="Create Port Mirroring Configuration",response=Response.class)
        @Transactional
     public Response createPortConfiguration(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return configurationRecipeLookup(request, Action.createInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.createInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @DELETE
@@ -253,11 +215,11 @@ public class ServiceInstances {
        @Transactional
        public Response deletePortConfiguration(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                             @PathParam("configurationInstanceId") String configurationInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("configurationInstanceId", configurationInstanceId);
-               return configurationRecipeLookup(request, Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -268,11 +230,11 @@ public class ServiceInstances {
        @Transactional
        public Response enablePort(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                @PathParam("configurationInstanceId") String configurationInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("configurationInstanceId", configurationInstanceId);
-               return configurationRecipeLookup(request, Action.enablePort, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.enablePort, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -283,11 +245,11 @@ public class ServiceInstances {
        @Transactional
        public Response disablePort(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                 @PathParam("configurationInstanceId") String configurationInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("configurationInstanceId", configurationInstanceId);
-               return configurationRecipeLookup(request, Action.disablePort, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.disablePort, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -298,11 +260,11 @@ public class ServiceInstances {
        @Transactional
        public Response activatePort(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                  @PathParam("configurationInstanceId") String configurationInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("configurationInstanceId", configurationInstanceId);
-               return configurationRecipeLookup(request, Action.activateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.activateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -313,11 +275,11 @@ public class ServiceInstances {
        @Transactional
        public Response deactivatePort(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                    @PathParam("configurationInstanceId") String configurationInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("configurationInstanceId", configurationInstanceId);
-               return configurationRecipeLookup(request, Action.deactivateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.deactivateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @POST
@@ -327,10 +289,10 @@ public class ServiceInstances {
        @ApiOperation(value="Add Relationships to a Service Instance",response=Response.class)
        @Transactional
     public Response addRelationships(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return configurationRecipeLookup(request, Action.addRelationships, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.addRelationships, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -340,10 +302,10 @@ public class ServiceInstances {
        @ApiOperation(value="Remove Relationships from Service Instance",response=Response.class)
        @Transactional
     public Response removeRelationships(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return configurationRecipeLookup(request, Action.removeRelationships, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return configurationRecipeLookup(request, Action.removeRelationships, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -353,10 +315,10 @@ public class ServiceInstances {
        @ApiOperation(value="Create VNF on a specified version and serviceInstance",response=Response.class)
        @Transactional
     public Response createVnfInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -367,11 +329,11 @@ public class ServiceInstances {
        @Transactional
        public Response replaceVnfInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                        @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
-               return serviceInstances(request, Action.replaceInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.replaceInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @PUT
@@ -382,11 +344,11 @@ public class ServiceInstances {
        @Transactional
        public Response updateVnfInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                       @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
-               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -396,11 +358,11 @@ public class ServiceInstances {
        @ApiOperation(value="Apply updated configuration",response=Response.class)
        public Response applyUpdatedConfig(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                        @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
-               return serviceInstances(request, Action.applyUpdatedConfig, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.applyUpdatedConfig, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -410,11 +372,11 @@ public class ServiceInstances {
        @ApiOperation(value="Recreate VNF Instance",response=Response.class)
        public Response recreateVnfInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                        @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
-               return serviceInstances(request, Action.recreateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.recreateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
 
@@ -426,11 +388,11 @@ public class ServiceInstances {
        @Transactional
        public Response deleteVnfInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                       @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
-               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @POST
@@ -441,11 +403,11 @@ public class ServiceInstances {
        @Transactional
        public Response createVfModuleInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                            @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
-               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -457,12 +419,12 @@ public class ServiceInstances {
        public Response replaceVfModuleInstance(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                        @PathParam("vnfInstanceId") String vnfInstanceId,
                                             @PathParam("vfmoduleInstanceId") String vfmoduleInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
                instanceIdMap.put("vfModuleInstanceId", vfmoduleInstanceId);
-               return serviceInstances(request, Action.replaceInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.replaceInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @PUT
@@ -474,12 +436,12 @@ public class ServiceInstances {
        public Response updateVfModuleInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                        @PathParam("vnfInstanceId") String vnfInstanceId,
                                            @PathParam("vfmoduleInstanceId") String vfmoduleInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
                instanceIdMap.put("vfModuleInstanceId", vfmoduleInstanceId);
-               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -490,11 +452,11 @@ public class ServiceInstances {
        @Transactional
        public Response inPlaceSoftwareUpdate(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                           @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);              
-               return serviceInstances(request, Action.inPlaceSoftwareUpdate, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.inPlaceSoftwareUpdate, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @DELETE
@@ -506,12 +468,12 @@ public class ServiceInstances {
        public Response deleteVfModuleInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                        @PathParam("vnfInstanceId") String vnfInstanceId,
                                            @PathParam("vfmoduleInstanceId") String vfmoduleInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
                instanceIdMap.put("vfModuleInstanceId", vfmoduleInstanceId);
-               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -522,12 +484,12 @@ public class ServiceInstances {
        @Transactional
        public Response deactivateAndCloudDeleteVfModuleInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                        @PathParam("vnfInstanceId") String vnfInstanceId, @PathParam("vfmoduleInstanceId") String vfmoduleInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
                instanceIdMap.put("vfModuleInstanceId", vfmoduleInstanceId);
-               Response response = serviceInstances(request, Action.deactivateAndCloudDelete, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               Response response = serviceInstances(request, Action.deactivateAndCloudDelete, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
                return response;
        }
        
@@ -539,11 +501,11 @@ public class ServiceInstances {
        @Transactional
        public Response scaleOutVfModule(String request,  @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                            @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
-               return serviceInstances(request, Action.scaleOut, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.scaleOut, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
 
@@ -555,11 +517,11 @@ public class ServiceInstances {
        @Transactional
        public Response createVolumeGroupInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                               @PathParam("vnfInstanceId") String vnfInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
-               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @PUT
@@ -571,12 +533,12 @@ public class ServiceInstances {
        public Response updateVolumeGroupInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                        @PathParam("vnfInstanceId") String vnfInstanceId,
                                               @PathParam("volumeGroupInstanceId") String volumeGroupInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
                instanceIdMap.put("volumeGroupInstanceId", volumeGroupInstanceId);
-               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @DELETE
@@ -588,12 +550,12 @@ public class ServiceInstances {
        public Response deleteVolumeGroupInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                        @PathParam("vnfInstanceId") String vnfInstanceId,
                                               @PathParam("volumeGroupInstanceId") String volumeGroupInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("vnfInstanceId", vnfInstanceId);
                instanceIdMap.put("volumeGroupInstanceId", volumeGroupInstanceId);
-               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @POST
@@ -603,10 +565,10 @@ public class ServiceInstances {
        @ApiOperation(value="Create NetworkInstance on a specified version and serviceInstance ",response=Response.class)
        @Transactional
     public Response createNetworkInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
-               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.createInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @PUT
@@ -617,11 +579,11 @@ public class ServiceInstances {
        @Transactional
        public Response updateNetworkInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                           @PathParam("networkInstanceId") String networkInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("networkInstanceId", networkInstanceId);
-               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.updateInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
 
        @DELETE
@@ -632,11 +594,11 @@ public class ServiceInstances {
        @Transactional
        public Response deleteNetworkInstance(String request, @PathParam("version") String version, @PathParam("serviceInstanceId") String serviceInstanceId,
                                           @PathParam("networkInstanceId") String networkInstanceId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put("serviceInstanceId", serviceInstanceId);
                instanceIdMap.put("networkInstanceId", networkInstanceId);
-               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -646,8 +608,8 @@ public class ServiceInstances {
        @ApiOperation(value="Create instanceGroups",response=Response.class)
        @Transactional
     public Response createInstanceGroups(String request, @PathParam("version") String version, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
-               return serviceInstances(request, Action.createInstance, null, version, requestId, getRequestUri(requestContext));
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
+               return serviceInstances(request, Action.createInstance, null, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @DELETE
@@ -657,10 +619,10 @@ public class ServiceInstances {
        @ApiOperation(value="Delete instanceGroup",response=Response.class)
        @Transactional
        public Response deleteInstanceGroups(@PathParam("version") String version, @PathParam("instanceGroupId") String instanceGroupId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put(CommonConstants.INSTANCE_GROUP_INSTANCE_ID, instanceGroupId);
-               return deleteInstanceGroups(Action.deleteInstance, instanceIdMap, version, requestId, getRequestUri(requestContext), requestContext);
+               return deleteInstanceGroups(Action.deleteInstance, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix), requestContext);
        }
        
        @POST
@@ -670,10 +632,10 @@ public class ServiceInstances {
        @ApiOperation(value="Add instanceGroup members",response=Response.class)
        @Transactional
     public Response addInstanceGroupMembers(String request, @PathParam("version") String version, @PathParam("instanceGroupId") String instanceGroupId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put(CommonConstants.INSTANCE_GROUP_INSTANCE_ID, instanceGroupId);
-               return serviceInstances(request, Action.addMembers, instanceIdMap, version, requestId, getRequestUri(requestContext));
+               return serviceInstances(request, Action.addMembers, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
        @POST
@@ -683,33 +645,12 @@ public class ServiceInstances {
        @ApiOperation(value="Remove instanceGroup members",response=Response.class)
        @Transactional
     public Response removeInstanceGroupMembers(String request, @PathParam("version") String version, @PathParam("instanceGroupId") String instanceGroupId, @Context ContainerRequestContext requestContext) throws ApiException {
-               String requestId = getRequestId(requestContext);
+               String requestId = requestHandlerUtils.getRequestId(requestContext);
                HashMap<String, String> instanceIdMap = new HashMap<>();
                instanceIdMap.put(CommonConstants.INSTANCE_GROUP_INSTANCE_ID, instanceGroupId);
-               return serviceInstances(request, Action.removeMembers, instanceIdMap, version, requestId, getRequestUri(requestContext));
-       }
-
-       public String getRequestUri(ContainerRequestContext context){
-               String requestUri = context.getUriInfo().getPath();
-               String httpUrl = MDC.get(LogConstants.URI_BASE).concat(requestUri);
-               MDC.put(LogConstants.HTTP_URL, httpUrl);
-               requestUri = requestUri.substring(requestUri.indexOf("/serviceInstantiation/") + 22);
-               return requestUri;
+               return serviceInstances(request, Action.removeMembers, instanceIdMap, version, requestId, requestHandlerUtils.getRequestUri(requestContext, uriPrefix));
        }
        
-       public void validateHeaders(ContainerRequestContext context) throws ValidationException{
-               MultivaluedMap<String, String> headers = context.getHeaders();
-               if(!headers.containsKey(ONAPLogConstants.Headers.REQUEST_ID)){
-                        throw new ValidationException(ONAPLogConstants.Headers.REQUEST_ID + " header", true);
-               }
-               if(!headers.containsKey(ONAPLogConstants.Headers.PARTNER_NAME)){
-                       throw new ValidationException(ONAPLogConstants.Headers.PARTNER_NAME + " header", true);
-               }
-               if(!headers.containsKey(REQUESTOR_ID)){
-                       throw new ValidationException(REQUESTOR_ID + " header", true);
-               }
-       }
-    
        public Response serviceInstances(String requestJSON, Actions action, HashMap<String, String> instanceIdMap, String version, String requestId, String requestUri) throws ApiException {
                String serviceInstanceId = (instanceIdMap ==null)? null:instanceIdMap.get("serviceInstanceId");
                Boolean aLaCarte = null;
@@ -717,17 +658,20 @@ public class ServiceInstances {
                ServiceInstancesRequest sir = null;
                String apiVersion = version.substring(1);
                
-               sir = convertJsonToServiceInstanceRequest(requestJSON, action, startTime, sir, msoRequest, requestId, requestUri);
-               String requestScope = deriveRequestScope(action, sir, requestUri);
+               sir = requestHandlerUtils.convertJsonToServiceInstanceRequest(requestJSON, action, startTime, sir, msoRequest, requestId, requestUri);
+               String requestScope = requestHandlerUtils.deriveRequestScope(action, sir, requestUri);
                InfraActiveRequests currentActiveReq =  msoRequest.createRequestObject (sir,  action, requestId, Status.IN_PROGRESS, requestJSON, requestScope);
                if(sir.getRequestDetails().getRequestParameters() != null){
                        aLaCarte = sir.getRequestDetails().getRequestParameters().getALaCarte();
                }
-               parseRequest(sir, instanceIdMap, action, version, requestJSON, aLaCarte, requestId, currentActiveReq);
-               setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
+               requestHandlerUtils.parseRequest(sir, instanceIdMap, action, version, requestJSON, aLaCarte, requestId, currentActiveReq);
+               requestHandlerUtils.setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
                 
                int requestVersion = Integer.parseInt(version.substring(1));
-               String instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
+               String instanceName = null;
+               if (sir.getRequestDetails().getRequestInfo() != null) {
+                       instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
+               }
                boolean alaCarteFlag = msoRequest.getAlacarteFlag(sir);
                String vnfType = msoRequest.getVnfType(sir,requestScope,action,requestVersion);
                String networkType = msoRequest.getNetworkType(sir,requestScope);
@@ -743,14 +687,14 @@ public class ServiceInstances {
                InfraActiveRequests dup = null;
                boolean inProgress = false;             
 
-               dup = duplicateCheck(action, instanceIdMap, startTime, msoRequest, instanceName,requestScope, currentActiveReq);
+               dup = requestHandlerUtils.duplicateCheck(action, instanceIdMap, startTime, msoRequest, instanceName,requestScope, currentActiveReq);
 
                if(dup != null){
-                       inProgress = camundaHistoryCheck(dup, currentActiveReq);
+                       inProgress = requestHandlerUtils.camundaHistoryCheck(dup, currentActiveReq);
                }
                
                if (dup != null && inProgress) {
-            buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, instanceName, requestScope, dup);
+            requestHandlerUtils.buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, instanceName, requestScope, dup);
                }
                ServiceInstancesResponse serviceResponse = new ServiceInstancesResponse();
 
@@ -760,9 +704,9 @@ public class ServiceInstances {
 
                serviceResponse.setRequestReferences(referencesResponse);
                Boolean isBaseVfModule = false;
-
+               
         RecipeLookupResult recipeLookupResult = getServiceInstanceOrchestrationURI(sir, action, alaCarteFlag, currentActiveReq);
-        String serviceInstanceType = getServiceType(requestScope, sir, alaCarteFlag);                                          
+        String serviceInstanceType = requestHandlerUtils.getServiceType(requestScope, sir, alaCarteFlag);                                              
                        ModelType modelType;
                        ModelInfo modelInfo =  sir.getRequestDetails().getModelInfo();
                        if (action == Action.applyUpdatedConfig || action == Action.inPlaceSoftwareUpdate) {
@@ -803,14 +747,14 @@ public class ServiceInstances {
                 String errorMessage = "VnfType " + vnfType + " and VF Module Model Name " + modelInfo.getModelName() + serviceVersionText + " not found in MSO Catalog DB";
                 ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
                 VfModuleNotFoundException vfModuleException = new VfModuleNotFoundException.Builder(errorMessage, HttpStatus.SC_NOT_FOUND, ErrorNumbers.SVC_BAD_PARAMETER).errorInfo(errorLoggerInfo).build();
-                updateStatus(currentActiveReq, Status.FAILED, vfModuleException.getMessage());
+                requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, vfModuleException.getMessage());
 
                 throw vfModuleException;
                }
                }
                
                
-               serviceInstanceId = setServiceInstanceId(requestScope, sir);
+               serviceInstanceId = requestHandlerUtils.setServiceInstanceId(requestScope, sir);
                String vnfId = "";
                String vfModuleId = "";
                String volumeGroupId = "";
@@ -870,7 +814,7 @@ public class ServiceInstances {
                                                .setVnfType(vnfType)
                                                .setVfModuleType(vfModuleType)
                                                .setNetworkType(networkType)
-                                               .setRequestDetails(mapJSONtoMSOStyle(requestJSON, sir, aLaCarte, action))
+                                               .setRequestDetails(requestHandlerUtils.mapJSONtoMSOStyle(requestJSON, sir, aLaCarte, action))
                                                .setApiVersion(apiVersion)
                                                .setALaCarte(aLaCarte)
                                                .setRequestUri(requestUri)
@@ -880,7 +824,7 @@ public class ServiceInstances {
                        throw new ValidateException.Builder("Unable to generate RequestClientParamter object" + e.getMessage(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER)
                          .errorInfo(errorLoggerInfo).build();
                }
-               return postBPELRequest(currentActiveReq, requestClientParameter, recipeLookupResult.getOrchestrationURI(), requestScope);
+               return requestHandlerUtils.postBPELRequest(currentActiveReq, requestClientParameter, recipeLookupResult.getOrchestrationURI(), requestScope);
        }
        public Response deleteInstanceGroups(Actions action, HashMap<String, String> instanceIdMap, String version, String requestId, String requestUri, ContainerRequestContext requestContext) throws ApiException {
                String instanceGroupId = instanceIdMap.get(CommonConstants.INSTANCE_GROUP_INSTANCE_ID);
@@ -892,27 +836,27 @@ public class ServiceInstances {
        
                String requestScope = ModelType.instanceGroup.toString();
                InfraActiveRequests currentActiveReq =  msoRequest.createRequestObject (sir,  action, requestId, Status.IN_PROGRESS, null, requestScope);
-               setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
+               requestHandlerUtils.setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
                try {
-                       validateHeaders(requestContext);
+                       requestHandlerUtils.validateHeaders(requestContext);
                } catch (ValidationException e) {
                        logger.error("Exception occurred", e);
             ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_VALIDATION_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
             ValidateException validateException = new ValidateException.Builder(e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
                         .errorInfo(errorLoggerInfo).build();
-            updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+            requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
             throw validateException;
                }
                
-               InfraActiveRequests dup = duplicateCheck(action, instanceIdMap, startTime, msoRequest, null, requestScope, currentActiveReq);
+               InfraActiveRequests dup = requestHandlerUtils.duplicateCheck(action, instanceIdMap, startTime, msoRequest, null, requestScope, currentActiveReq);
                boolean inProgress = false;
                
                if(dup != null){
-                       inProgress = camundaHistoryCheck(dup, currentActiveReq);
+                       inProgress = requestHandlerUtils.camundaHistoryCheck(dup, currentActiveReq);
                }
                
                if (dup != null && inProgress) {
-            buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, null, requestScope, dup);
+            requestHandlerUtils.buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, null, requestScope, dup);
                }
                
                ServiceInstancesResponse serviceResponse = new ServiceInstancesResponse();
@@ -944,7 +888,7 @@ public class ServiceInstances {
                                        .setRequestUri(requestUri)
                                        .setInstanceGroupId(instanceGroupId).build();
                
-               return postBPELRequest(currentActiveReq, requestClientParameter, recipeLookupResult.getOrchestrationURI(), requestScope);
+               return requestHandlerUtils.postBPELRequest(currentActiveReq, requestClientParameter, recipeLookupResult.getOrchestrationURI(), requestScope);
        }
 
        private String getPnfCorrelationId(ServiceInstancesRequest sir) {
@@ -953,315 +897,7 @@ public class ServiceInstances {
                                .map(RequestDetails::getRequestParameters)
                                .map(parameters -> parameters.getUserParamValue("pnfId"))
                                .orElse("");
-       }
-
-       private String deriveRequestScope(Actions action, ServiceInstancesRequest sir, String requestUri) {
-               if(action == Action.inPlaceSoftwareUpdate || action == Action.applyUpdatedConfig){
-                       return (ModelType.vnf.name());
-               }else if(action == Action.addMembers || action == Action.removeMembers){
-                       return(ModelType.instanceGroup.toString());
-               }else{
-                       String requestScope;
-                       if(sir.getRequestDetails().getModelInfo().getModelType() == null){
-                               requestScope = requestScopeFromUri(requestUri);
-                       }else{
-                               requestScope = sir.getRequestDetails().getModelInfo().getModelType().name(); 
-                       }
-                       return requestScope; 
-               }
-       }
-       private String requestScopeFromUri(String requestUri){
-               String requestScope;
-               if(requestUri.contains(ModelType.network.name())){
-                       requestScope = ModelType.network.name();
-               }else if(requestUri.contains(ModelType.vfModule.name())){
-                       requestScope = ModelType.vfModule.name();
-               }else if(requestUri.contains(ModelType.volumeGroup.name())){
-                       requestScope = ModelType.volumeGroup.name();
-               }else if(requestUri.contains(ModelType.configuration.name())){
-                       requestScope = ModelType.configuration.name();
-               }else if(requestUri.contains(ModelType.vnf.name())){
-                       requestScope = ModelType.vnf.name();
-               }else{
-                       requestScope = ModelType.service.name();
-               }
-               return requestScope;
-       }
-       private Response postBPELRequest(InfraActiveRequests currentActiveReq, RequestClientParameter requestClientParameter, String orchestrationUri, String requestScope)throws ApiException {
-               RequestClient requestClient = null;
-               HttpResponse response = null;
-               try {
-                       requestClient = reqClientFactory.getRequestClient (orchestrationUri);
-                       response = requestClient.post(requestClientParameter);
-               } catch (Exception e) {
-                       
-            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.AvailabilityError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-            String url = requestClient != null ? requestClient.getUrl() : "";
-            ClientConnectionException clientException = new ClientConnectionException.Builder(url, HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).cause(e).errorInfo(errorLoggerInfo).build();
-            updateStatus(currentActiveReq, Status.FAILED, clientException.getMessage());
-
-            throw clientException;
-               }
-
-               if (response == null) {
-                       
-            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, ErrorCode.BusinessProcesssError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-            ClientConnectionException clientException = new ClientConnectionException.Builder(requestClient.getUrl(), HttpStatus.SC_BAD_GATEWAY, ErrorNumbers.SVC_NO_SERVER_RESOURCES).errorInfo(errorLoggerInfo).build();
-
-            updateStatus(currentActiveReq, Status.FAILED, clientException.getMessage());
-
-            throw clientException;
-               }
-
-               ResponseHandler respHandler = null;
-        int bpelStatus = 500;
-        try {
-            respHandler = new ResponseHandler (response, requestClient.getType ());
-            bpelStatus = respHandler.getStatus ();
-        } catch (ApiException e) {
-            logger.error("Exception occurred", e);
-            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-            ValidateException validateException = new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
-                        .errorInfo(errorLoggerInfo).build();
-            updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
-            throw validateException;
-        }
-
-               // BPEL accepted the request, the request is in progress
-               if (bpelStatus == HttpStatus.SC_ACCEPTED) {
-                       ServiceInstancesResponse jsonResponse;
-                       CamundaResponse camundaResp = respHandler.getResponse();
-                       
-                       if("Success".equalsIgnoreCase(camundaResp.getMessage())) {
-                               try {
-                                       ObjectMapper mapper = new ObjectMapper();
-                                       jsonResponse = mapper.readValue(camundaResp.getResponse(), ServiceInstancesResponse.class);
-                                       jsonResponse.getRequestReferences().setRequestId(requestClientParameter.getRequestId());
-                                       Optional<URL> selfLinkUrl = msoRequest.buildSelfLinkUrl(currentActiveReq.getRequestUrl(), requestClientParameter.getRequestId());
-                                       if(selfLinkUrl.isPresent()){
-                                               jsonResponse.getRequestReferences().setRequestSelfLink(selfLinkUrl.get());
-                                       } else {
-                                           jsonResponse.getRequestReferences().setRequestSelfLink(null);
-                                       }    
-                               } catch (IOException e) {
-                                       logger.error("Exception occurred", e);
-                                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-                                       ValidateException validateException = new ValidateException.Builder("Exception caught mapping Camunda JSON response to object", HttpStatus.SC_NOT_ACCEPTABLE, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
-                                           .errorInfo(errorLoggerInfo).build();
-                                       updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
-                                       throw validateException;
-                               }       
-                               return builder.buildResponse(HttpStatus.SC_ACCEPTED, requestClientParameter.getRequestId(), jsonResponse, requestClientParameter.getApiVersion());
-                       } 
-               }
-                       
-               List<String> variables = new ArrayList<>();
-               variables.add(bpelStatus + "");
-               String camundaJSONResponseBody = respHandler.getResponseBody ();
-               if (camundaJSONResponseBody != null && !camundaJSONResponseBody.isEmpty ()) {
-                       
-                   ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcesssError).errorSource(requestClient.getUrl()).build();
-                   BPMNFailureException bpmnException = new BPMNFailureException.Builder(String.valueOf(bpelStatus) + camundaJSONResponseBody, bpelStatus, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR)
-                           .errorInfo(errorLoggerInfo).build();
-
-                   updateStatus(currentActiveReq, Status.FAILED, bpmnException.getMessage());
-
-                   throw bpmnException;
-               } else {
-               
-                   ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.BusinessProcesssError).errorSource(requestClient.getUrl()).build();
-
-
-                   BPMNFailureException servException = new BPMNFailureException.Builder(String.valueOf(bpelStatus), bpelStatus, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR)
-                           .errorInfo(errorLoggerInfo).build();
-                   updateStatus(currentActiveReq, Status.FAILED, servException.getMessage());
-
-                   throw servException;
-               }
-       }
-
-       private void setInstanceId(InfraActiveRequests currentActiveReq, String requestScope, String instanceId, Map<String, String> instanceIdMap) {
-               if(StringUtils.isNotBlank(instanceId)) {
-                       if(ModelType.service.name().equalsIgnoreCase(requestScope)) {
-                               currentActiveReq.setServiceInstanceId(instanceId);
-                       } else if(ModelType.vnf.name().equalsIgnoreCase(requestScope)) {
-                               currentActiveReq.setVnfId(instanceId);
-                       } else if(ModelType.vfModule.name().equalsIgnoreCase(requestScope)) {
-                               currentActiveReq.setVfModuleId(instanceId);
-                       } else if(ModelType.volumeGroup.name().equalsIgnoreCase(requestScope)) {
-                               currentActiveReq.setVolumeGroupId(instanceId);
-                       } else if(ModelType.network.name().equalsIgnoreCase(requestScope)) {
-                               currentActiveReq.setNetworkId(instanceId);
-                       } else if(ModelType.configuration.name().equalsIgnoreCase(requestScope)) {
-                               currentActiveReq.setConfigurationId(instanceId);
-                       }else if(ModelType.instanceGroup.toString().equalsIgnoreCase(requestScope)){
-                               currentActiveReq.setInstanceGroupId(instanceId);
-                       }
-               } else if(instanceIdMap != null && !instanceIdMap.isEmpty()) {
-                       if(instanceIdMap.get("serviceInstanceId") != null){
-                               currentActiveReq.setServiceInstanceId(instanceIdMap.get("serviceInstanceId"));
-               }
-               if(instanceIdMap.get("vnfInstanceId") != null){
-                       currentActiveReq.setVnfId(instanceIdMap.get("vnfInstanceId"));
-               }
-               if(instanceIdMap.get("vfModuleInstanceId") != null){
-                       currentActiveReq.setVfModuleId(instanceIdMap.get("vfModuleInstanceId"));
-               }
-               if(instanceIdMap.get("volumeGroupInstanceId") != null){
-                       currentActiveReq.setVolumeGroupId(instanceIdMap.get("volumeGroupInstanceId"));
-               }
-               if(instanceIdMap.get("networkInstanceId") != null){
-                       currentActiveReq.setNetworkId(instanceIdMap.get("networkInstanceId"));
-               }
-               if(instanceIdMap.get("configurationInstanceId") != null){
-                       currentActiveReq.setConfigurationId(instanceIdMap.get("configurationInstanceId"));
-               }
-               if(instanceIdMap.get(CommonConstants.INSTANCE_GROUP_INSTANCE_ID) != null){
-                       currentActiveReq.setInstanceGroupId(instanceIdMap.get(CommonConstants.INSTANCE_GROUP_INSTANCE_ID));
-               }
-               }
-       }
-
-    protected String mapJSONtoMSOStyle(String msoRawRequest, ServiceInstancesRequest serviceInstRequest, boolean isAlaCarte, Actions action) throws IOException {
-       ObjectMapper mapper = new ObjectMapper();       
-       mapper.setSerializationInclusion(Include.NON_NULL);     
-       if(msoRawRequest != null){
-               ServiceInstancesRequest sir = mapper.readValue(msoRawRequest, ServiceInstancesRequest.class);           
-               if(     serviceInstRequest != null && 
-                       serviceInstRequest.getRequestDetails() != null && 
-                       serviceInstRequest.getRequestDetails().getRequestParameters() != null) {
-                       if(     !isAlaCarte && Action.createInstance.equals(action)) {
-                               sir.getRequestDetails().setCloudConfiguration(serviceInstRequest.getRequestDetails().getCloudConfiguration());
-                               sir.getRequestDetails().getRequestParameters().setUserParams(serviceInstRequest.getRequestDetails().getRequestParameters().getUserParams());
-                       }
-                       sir.getRequestDetails().getRequestParameters().setUsePreload(serviceInstRequest.getRequestDetails().getRequestParameters().getUsePreload());
-               }
-               
-               logger.debug("Value as string: {}", mapper.writeValueAsString(sir));
-               return mapper.writeValueAsString(sir);
-       }
-       return null;
-       }
-
-    private void buildErrorOnDuplicateRecord(InfraActiveRequests currentActiveReq, Actions action, HashMap<String, String> instanceIdMap, long startTime, MsoRequest msoRequest,
-                                             String instanceName, String requestScope, InfraActiveRequests dup) throws ApiException {
-
-               // Found the duplicate record. Return the appropriate error.
-               String instance = null;
-               if(instanceName != null){
-                       instance = instanceName;
-               }else{
-                       instance = instanceIdMap.get(requestScope + "InstanceId");
-               }
-               //List<String> variables = new ArrayList<String>();
-               //variables.add(dup.getRequestStatus());
-        ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DUPLICATE_FOUND, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-
-
-        DuplicateRequestException dupException = new DuplicateRequestException.Builder(requestScope,instance,dup.getRequestStatus(),dup.getRequestId(), HttpStatus.SC_CONFLICT, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR)
-            .errorInfo(errorLoggerInfo).build();
-
-        updateStatus(currentActiveReq, Status.FAILED, dupException.getMessage());
-
-        throw dupException;
-       }
-
-       private InfraActiveRequests duplicateCheck(Actions action, HashMap<String, String> instanceIdMap, long startTime,
-                                               MsoRequest msoRequest, String instanceName, String requestScope, InfraActiveRequests currentActiveReq) throws ApiException {
-               InfraActiveRequests dup = null;
-               try {
-                       if(!(instanceName==null && requestScope.equals("service") && (action == Action.createInstance || action == Action.activateInstance || action == Action.assignInstance))){
-                               dup = infraActiveRequestsClient.checkInstanceNameDuplicate (instanceIdMap, instanceName, requestScope);
-                       }
-               } catch (Exception e) {
-            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DUPLICATE_CHECK_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-            RequestDbFailureException requestDbFailureException = new RequestDbFailureException.Builder("check for duplicate instance", e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
-                    .errorInfo(errorLoggerInfo).build();
-            updateStatus(currentActiveReq, Status.FAILED, requestDbFailureException.getMessage());
-            throw requestDbFailureException;
-               }
-               return dup;
-       }
-    protected boolean camundaHistoryCheck(InfraActiveRequests duplicateRecord, InfraActiveRequests currentActiveReq) throws RequestDbFailureException, ContactCamundaException{
-       String requestId = duplicateRecord.getRequestId();
-       String path = env.getProperty("mso.camunda.rest.history.uri") + requestId;
-       String targetUrl = env.getProperty("mso.camundaURL") + path;
-       HttpHeaders headers = setCamundaHeaders(env.getRequiredProperty("mso.camundaAuth"), env.getRequiredProperty("mso.msoKey")); 
-       HttpEntity<?> requestEntity = new HttpEntity<>(headers);
-       ResponseEntity<List<HistoricProcessInstanceEntity>> response = null;
-       try{
-               response = restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, new ParameterizedTypeReference<List<HistoricProcessInstanceEntity>>(){});
-       }catch(HttpStatusCodeException e){
-               ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DUPLICATE_CHECK_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-            ContactCamundaException contactCamundaException= new ContactCamundaException.Builder(requestId, e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
-                    .errorInfo(errorLoggerInfo).build();
-            updateStatus(currentActiveReq, Status.FAILED, contactCamundaException.getMessage());
-            throw contactCamundaException;
-               }
-       if(response.getBody().isEmpty()){
-               updateStatus(duplicateRecord, Status.COMPLETE, "Request Completed");
-       }
-               for(HistoricProcessInstance instance : response.getBody()){
-                       if(instance.getState().equals("ACTIVE")){
-                               return true;
-                       }else{
-                               updateStatus(duplicateRecord, Status.COMPLETE, "Request Completed");
-                       }
-       }       
-               return false;
-       }
-    protected HttpHeaders setCamundaHeaders(String auth, String msoKey) {
-               HttpHeaders headers = new HttpHeaders();
-               List<org.springframework.http.MediaType> acceptableMediaTypes = new ArrayList<>();
-               acceptableMediaTypes.add(org.springframework.http.MediaType.APPLICATION_JSON);
-               headers.setAccept(acceptableMediaTypes);
-               try {
-                       String userCredentials = CryptoUtils.decrypt(auth, msoKey);
-                       if(userCredentials != null) {
-                               headers.add(HttpHeaders.AUTHORIZATION, "Basic " + DatatypeConverter.printBase64Binary(userCredentials.getBytes()));
-                       }
-        } catch(GeneralSecurityException e) {
-                logger.error("Security exception", e);
-        }
-               return headers;
-       }
-
-       private ServiceInstancesRequest convertJsonToServiceInstanceRequest(String requestJSON, Actions action, long startTime,
-                                                                        ServiceInstancesRequest sir, MsoRequest msoRequest, String requestId, String requestUri) throws ApiException {
-               try{
-                       ObjectMapper mapper = new ObjectMapper();
-                       return mapper.readValue(requestJSON, ServiceInstancesRequest.class);
-
-        } catch (IOException e) {
-
-            ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-
-            ValidateException validateException = new ValidateException.Builder("Error mapping request: " + e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
-                    .errorInfo(errorLoggerInfo).build();
-            String requestScope = requestScopeFromUri(requestUri);
-
-            msoRequest.createErrorRequestRecord(Status.FAILED, requestId, validateException.getMessage(), action, requestScope, requestJSON);
-
-            throw validateException;
-               }
-       }
-       
-       private void parseRequest(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMap, Actions action, String version, 
-                                                               String requestJSON, Boolean aLaCarte, String requestId, InfraActiveRequests currentActiveReq) throws ValidateException, RequestDbFailureException {
-               int reqVersion = Integer.parseInt(version.substring(1));
-               try {
-                       msoRequest.parse(sir, instanceIdMap, action, version, requestJSON, reqVersion, aLaCarte);
-               } catch (Exception e) {
-                       logger.error("failed to parse request", e);
-                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-               ValidateException validateException = new ValidateException.Builder("Error parsing request: " + e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
-                 .errorInfo(errorLoggerInfo).build();
-
-               updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
-
-               throw validateException;
-               }
-       }
+       }       
 
     private RecipeLookupResult getServiceInstanceOrchestrationURI(ServiceInstancesRequest sir, Actions action, boolean alaCarteFlag, 
                                                                                                                                InfraActiveRequests currentActiveReq) throws ApiException {
@@ -1284,7 +920,7 @@ public class ServiceInstances {
                 ValidateException validateException = new ValidateException.Builder(e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
                         .errorInfo(errorLoggerInfo).build();
 
-                updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+                requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
 
                 throw validateException;
                        }
@@ -1299,7 +935,7 @@ public class ServiceInstances {
                 ValidateException validateException = new ValidateException.Builder(e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
                         .errorInfo(errorLoggerInfo).build();
 
-                updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+                requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
 
                 throw validateException;
             }
@@ -1313,7 +949,7 @@ public class ServiceInstances {
 
                 ValidateException validateException = new ValidateException.Builder(e.getMessage(), HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e)
                         .errorInfo(errorLoggerInfo).build();
-                updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+                requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
 
                 throw validateException;
             }
@@ -1328,7 +964,7 @@ public class ServiceInstances {
             RecipeNotFoundException recipeNotFoundExceptionException = new RecipeNotFoundException.Builder("Recipe could not be retrieved from catalog DB.", HttpStatus.SC_NOT_FOUND, ErrorNumbers.SVC_GENERAL_SERVICE_ERROR)
                     .errorInfo(errorLoggerInfo).build();
 
-            updateStatus(currentActiveReq, Status.FAILED, recipeNotFoundExceptionException.getMessage());
+            requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, recipeNotFoundExceptionException.getMessage());
             throw recipeNotFoundExceptionException;
                }
                return recipeLookupResult;
@@ -1338,7 +974,7 @@ public class ServiceInstances {
                // SERVICE REQUEST
                // Construct the default service name
                // TODO need to make this a configurable property
-               String defaultServiceModelName = getDefaultModel(servInstReq);
+               String defaultServiceModelName = requestHandlerUtils.getDefaultModel(servInstReq);
                RequestDetails requestDetails = servInstReq.getRequestDetails();
                ModelInfo modelInfo = requestDetails.getModelInfo();
                org.onap.so.db.catalog.beans.Service serviceRecord;
@@ -1525,7 +1161,7 @@ public class ServiceInstances {
                }
 
                Recipe recipe = null;
-               String defaultSource = getDefaultModel(servInstReq);
+               String defaultSource = requestHandlerUtils.getDefaultModel(servInstReq);
                String modelCustomizationId = modelInfo.getModelCustomizationId();
                String modelCustomizationName = modelInfo.getModelCustomizationName();
                String relatedInstanceModelVersionId = null;
@@ -1728,7 +1364,7 @@ public class ServiceInstances {
        
     private RecipeLookupResult getDefaultVnfUri(ServiceInstancesRequest sir, Actions action) {
        
-               String defaultSource = getDefaultModel(sir);
+               String defaultSource = requestHandlerUtils.getDefaultModel(sir);
 
                VnfRecipe vnfRecipe = catalogDbClient.getFirstVnfRecipeByNfRoleAndAction(defaultSource, action.toString());
 
@@ -1742,7 +1378,7 @@ public class ServiceInstances {
 
     private RecipeLookupResult getNetworkUri(ServiceInstancesRequest sir, Actions action) throws ValidationException {
 
-               String defaultNetworkType = getDefaultModel(sir);
+               String defaultNetworkType = requestHandlerUtils.getDefaultModel(sir);
 
                ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
                String modelName = modelInfo.getModelName();
@@ -1777,40 +1413,7 @@ public class ServiceInstances {
                return recipe !=null ? new RecipeLookupResult(recipe.getOrchestrationUri(), recipe.getRecipeTimeout()) : null;
        }
     
-    private Optional<String> retrieveModelName(RequestParameters requestParams) {
-       String requestTestApi = null;
-       TestApi testApi = null;
-       
-       if (requestParams != null) {
-               requestTestApi = requestParams.getTestApi();
-       }
-       
-       if (requestTestApi == null) {
-               if(requestParams != null && requestParams.getALaCarte() != null && !requestParams.getALaCarte()) {
-                       requestTestApi = env.getProperty(CommonConstants.MACRO_TEST_API);
-               } else {
-                       requestTestApi = env.getProperty(CommonConstants.ALACARTE_TEST_API);
-               }
-       }
-       
-               try {
-                       testApi = TestApi.valueOf(requestTestApi);
-                       return Optional.of(testApi.getModelName());
-               } catch (Exception e) {
-                       logger.warn("Catching the exception on the valueOf enum call and continuing", e);
-                       throw new IllegalArgumentException("Invalid TestApi is provided", e);
-               }
-    }
     
-    private String getDefaultModel(ServiceInstancesRequest sir) {
-       String defaultModel = sir.getRequestDetails().getRequestInfo().getSource() + "_DEFAULT";
-       Optional<String> oModelName = retrieveModelName(sir.getRequestDetails().getRequestParameters());
-               if (oModelName.isPresent()) {
-                       defaultModel = oModelName.get();
-               }
-               return defaultModel;
-    }
-       
     private Response configurationRecipeLookup(String requestJSON, Action action, HashMap<String, String> instanceIdMap, String version, String requestId, String requestUri) throws ApiException {
                String serviceInstanceId = (instanceIdMap ==null)? null:instanceIdMap.get("serviceInstanceId");
                Boolean aLaCarte = null;
@@ -1820,26 +1423,26 @@ public class ServiceInstances {
                long startTime = System.currentTimeMillis ();
                ServiceInstancesRequest sir = null;             
 
-               sir = convertJsonToServiceInstanceRequest(requestJSON, action, startTime, sir, msoRequest, requestId, requestUri);
-               String requestScope = deriveRequestScope(action,sir, requestUri);
+               sir = requestHandlerUtils.convertJsonToServiceInstanceRequest(requestJSON, action, startTime, sir, msoRequest, requestId, requestUri);
+               String requestScope = requestHandlerUtils.deriveRequestScope(action,sir, requestUri);
                InfraActiveRequests currentActiveReq =  msoRequest.createRequestObject ( sir,  action, requestId, Status.IN_PROGRESS, requestJSON, requestScope);
                if(sir.getRequestDetails().getRequestParameters() != null){
                        aLaCarte = sir.getRequestDetails().getRequestParameters().getALaCarte();
                }
-               parseRequest(sir, instanceIdMap, action, version, requestJSON, aLaCarte, requestId, currentActiveReq);
-               setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
+               requestHandlerUtils.parseRequest(sir, instanceIdMap, action, version, requestJSON, aLaCarte, requestId, currentActiveReq);
+               requestHandlerUtils.setInstanceId(currentActiveReq, requestScope, null, instanceIdMap);
                String instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
 
                InfraActiveRequests dup = null;
                
-               dup = duplicateCheck(action, instanceIdMap, startTime, msoRequest, instanceName,requestScope, currentActiveReq);
+               dup = requestHandlerUtils.duplicateCheck(action, instanceIdMap, startTime, msoRequest, instanceName,requestScope, currentActiveReq);
                
                if(dup != null){
-                       inProgress = camundaHistoryCheck(dup, currentActiveReq);
+                       inProgress = requestHandlerUtils.camundaHistoryCheck(dup, currentActiveReq);
                }
 
                if (instanceIdMap != null && dup != null && inProgress) {
-            buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, instanceName, requestScope, dup);
+            requestHandlerUtils.buildErrorOnDuplicateRecord(currentActiveReq, action, instanceIdMap, startTime, msoRequest, instanceName, requestScope, dup);
                }
                
                ServiceInstancesResponse serviceResponse = new ServiceInstancesResponse();
@@ -1860,7 +1463,7 @@ public class ServiceInstances {
             ValidateException validateException = new ValidateException.Builder(error, HttpStatus.SC_NOT_FOUND, ErrorNumbers.SVC_GENERAL_SERVICE_ERROR)
                     .errorInfo(errorLoggerInfo).build();
 
-            updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
+            requestHandlerUtils.updateStatus(currentActiveReq, Status.FAILED, validateException.getMessage());
 
             throw validateException;
                        
@@ -1903,7 +1506,7 @@ public class ServiceInstances {
                                .setServiceInstanceId(serviceInstanceId)
                                .setPnfCorrelationId(pnfCorrelationId)
                                .setConfigurationId(configurationId)
-                               .setRequestDetails(mapJSONtoMSOStyle(requestJSON, sir, aLaCarte, action))
+                               .setRequestDetails(requestHandlerUtils.mapJSONtoMSOStyle(requestJSON, sir, aLaCarte, action))
                                .setApiVersion(apiVersion)
                                .setALaCarte(aLaCarte)
                                .setRequestUri(requestUri).build();
@@ -1913,80 +1516,7 @@ public class ServiceInstances {
                            .errorInfo(errorLoggerInfo).build();
                }
                                
-                       return postBPELRequest(currentActiveReq, requestClientParameter, orchestrationUri, requestScope);
-       }
-
-       public String getRequestId(ContainerRequestContext requestContext) throws ValidateException {
-       String requestId = null;
-       if (requestContext.getProperty("requestId") != null) {
-               requestId = requestContext.getProperty("requestId").toString();
-       }
-       if (UUIDChecker.isValidUUID(requestId)) {
-               return requestId;
-       } else {
-               ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_BPEL_RESPONSE_ERROR, ErrorCode.SchemaError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-                       ValidateException validateException = new ValidateException.Builder("Request Id " + requestId + " is not a valid UUID", HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_BAD_PARAMETER)
-                           .errorInfo(errorLoggerInfo).build();
-                       
-                       throw validateException;
-       }
-    }
-       public void updateStatus(InfraActiveRequests aq, Status status, String errorMessage) throws RequestDbFailureException{
-               if ((status == Status.FAILED) || (status == Status.COMPLETE)) {
-                       aq.setStatusMessage (errorMessage);
-                       aq.setProgress(new Long(100));
-                       aq.setRequestStatus(status.toString());
-                       Timestamp endTimeStamp = new Timestamp (System.currentTimeMillis());
-                       aq.setEndTime (endTimeStamp);
-                       try{
-                               infraActiveRequestsClient.save(aq);
-                       }catch(Exception e){
-                               ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_DB_ACCESS_EXC, ErrorCode.DataError).errorSource(Constants.MSO_PROP_APIHANDLER_INFRA).build();
-                   throw new RequestDbFailureException.Builder(SAVE_TO_DB, e.toString(), HttpStatus.SC_INTERNAL_SERVER_ERROR, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR).cause(e)
-                           .errorInfo(errorLoggerInfo).build();
-                       }
-               }
-       }
-       protected String getServiceType(String requestScope, ServiceInstancesRequest sir, Boolean aLaCarteFlag){
-               String serviceType = null;
-               if(requestScope.equalsIgnoreCase(ModelType.service.toString())){
-                       String defaultServiceModelName = getDefaultModel(sir);
-                       org.onap.so.db.catalog.beans.Service serviceRecord;
-                       if(aLaCarteFlag){
-                                serviceRecord = catalogDbClient.getFirstByModelNameOrderByModelVersionDesc(defaultServiceModelName);
-                                if(serviceRecord != null){
-                                        serviceType = serviceRecord.getServiceType();
-                                }
-                       }else{
-                               serviceRecord = catalogDbClient.getServiceByID(sir.getRequestDetails().getModelInfo().getModelVersionId());
-                               if(serviceRecord != null){
-                                        serviceType = serviceRecord.getServiceType();
-                                }else{
-                                        serviceRecord = catalogDbClient.getFirstByModelNameOrderByModelVersionDesc(defaultServiceModelName);
-                                        if(serviceRecord != null){
-                                                serviceType = serviceRecord.getServiceType();
-                                        }
-                                }
-                       }
-               }else{
-                       serviceType = msoRequest.getServiceInstanceType(sir, requestScope);
-               }
-               return serviceType;
-       }
-       protected String setServiceInstanceId(String requestScope, ServiceInstancesRequest sir){
-               if(sir.getServiceInstanceId () != null){
-                       return sir.getServiceInstanceId ();
-               }else if(requestScope.equalsIgnoreCase(ModelType.instanceGroup.toString())){
-                       RelatedInstanceList[] relatedInstances = sir.getRequestDetails().getRelatedInstanceList();
-                       if(relatedInstances != null){
-                               for(RelatedInstanceList relatedInstanceList : relatedInstances){
-                                       RelatedInstance relatedInstance = relatedInstanceList.getRelatedInstance();
-                                       if(relatedInstance.getModelInfo().getModelType() == ModelType.service){
-                                               return relatedInstance.getInstanceId();
-                                       }
-                               }
-                       }
-               }
-               return null;
-       }
+                       return requestHandlerUtils.postBPELRequest(currentActiveReq, requestClientParameter, orchestrationUri, requestScope);
+       }    
+   
 }
index 50af294..b58a3cd 100644 (file)
@@ -37,9 +37,9 @@ import org.onap.so.apihandlerinfra.exceptions.ValidateException;
 
 import org.onap.so.apihandlerinfra.logging.ErrorLoggerInfo;
 import org.onap.so.apihandlerinfra.workflowspecificationbeans.WorkflowSpecifications;
+import org.onap.so.logger.ErrorCode;
 import org.onap.so.logger.MessageEnum;
 
-import org.onap.so.logger.MsoLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -79,7 +79,7 @@ public class WorkflowSpecificationsHandler {
                        jsonResponse = mapper.writeValueAsString(workflowSpecifications);
                }
                catch (JsonProcessingException e) {
-                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MsoLogger.ErrorCode.SchemaError).build();
+                       ErrorLoggerInfo errorLoggerInfo = new ErrorLoggerInfo.Builder(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, ErrorCode.SchemaError).build();
                        ValidateException validateException = new ValidateException.Builder("Mapping of request to JSON object failed : " + e.getMessage(),
                                        HttpStatus.SC_BAD_REQUEST, ErrorNumbers.SVC_BAD_PARAMETER).cause(e).errorInfo(errorLoggerInfo).build();
                        throw validateException;
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidation.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidation.java
new file mode 100644 (file)
index 0000000..695213b
--- /dev/null
@@ -0,0 +1,64 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.apihandlerinfra.validation;
+
+import java.util.List;
+import java.util.Map;
+
+import org.onap.so.exceptions.ValidationException;
+import org.onap.so.serviceinstancebeans.CloudConfiguration;
+import org.onap.so.serviceinstancebeans.RequestParameters;
+
+import com.google.common.base.Strings;
+
+public class CustomWorkflowValidation implements ValidationRule{
+    
+       @Override
+       public ValidationInformation validate(ValidationInformation info) throws ValidationException{
+       RequestParameters requestParameters = info.getSir().getRequestDetails().getRequestParameters();
+       CloudConfiguration cloudConfiguration = info.getSir().getRequestDetails ().getCloudConfiguration();
+       String workflowUuid = info.getInstanceIdMap().get("workflowUuid");
+       
+               if (cloudConfiguration == null) {
+                       throw new ValidationException ("cloudConfiguration");
+               }else if (Strings.isNullOrEmpty((cloudConfiguration.getCloudOwner ()))) {
+               throw new ValidationException ("cloudOwner");                   
+               }else if (Strings.isNullOrEmpty((cloudConfiguration.getLcpCloudRegionId ()))) {
+               throw new ValidationException ("lcpCloudRegionId");
+       }else if (Strings.isNullOrEmpty((cloudConfiguration.getTenantId ()))) {
+               throw new ValidationException ("tenantId");
+       }
+       if(requestParameters == null){
+               throw new ValidationException("requestParameters");
+       }
+       
+       List<Map<String, Object>> userParams = requestParameters.getUserParams();
+       if (!validateCustomUserParams(userParams, workflowUuid)) {
+               throw new ValidationException("userParams");
+       }
+        return info;
+       }
+       
+       private boolean validateCustomUserParams(List<Map<String, Object>> userParams, String workflowUuid) {
+               return true;
+       }
+}
\ No newline at end of file
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/InstanceManagementTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/InstanceManagementTest.java
new file mode 100644 (file)
index 0000000..1460625
--- /dev/null
@@ -0,0 +1,181 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.apihandlerinfra;
+
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.onap.so.logger.HttpHeadersConstants.ONAP_REQUEST_ID;
+import static org.onap.so.logger.HttpHeadersConstants.REQUESTOR_ID;
+import static org.onap.so.logger.MdcConstants.CLIENT_ID;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.apache.http.HttpStatus;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.so.logger.HttpHeadersConstants;
+import org.onap.so.serviceinstancebeans.RequestReferences;
+import org.onap.so.serviceinstancebeans.ServiceInstancesResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.ResourceUtils;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class InstanceManagementTest extends BaseTest{
+
+       private final ObjectMapper mapper = new ObjectMapper();
+       private ObjectMapper errorMapper = new ObjectMapper();
+       
+    @Autowired
+    private InstanceManagement instanceManagement;
+    
+    @Value("${wiremock.server.port}")
+       private String wiremockPort;
+
+    private final String instanceManagementUri = "/onap/so/infra/instanceManagement/";
+
+    private String uri;
+    private URL selfLink;
+    private URL initialUrl;
+    private int initialPort;
+    private HttpHeaders headers;
+
+       @Before
+       public  void beforeClass() {
+               mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+               errorMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+               errorMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+        // set headers
+               headers = new HttpHeaders();
+        headers.set(ONAPLogConstants.Headers.PARTNER_NAME, "test_name");        
+               headers.set(HttpHeadersConstants.TRANSACTION_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
+        headers.set(ONAP_REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
+        headers.set(ONAPLogConstants.MDCs.REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
+        headers.set(CLIENT_ID, "VID");
+        headers.set(REQUESTOR_ID, "xxxxxx");
+               try {  // generate one-time port number to avoid RANDOM port number later.
+                       initialUrl = new URL(createURLWithPort(Constants.ORCHESTRATION_REQUESTS_PATH));
+                       initialPort = initialUrl.getPort();
+               } catch (MalformedURLException e) {
+                       e.printStackTrace();
+               } 
+               stubFor(post(urlMatching(".*/infraActiveRequests.*"))
+                               .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                                               .withStatus(HttpStatus.SC_OK)));
+       }
+       
+    public String inputStream(String JsonInput)throws IOException{
+        JsonInput = "src/test/resources/ServiceInstanceTest" + JsonInput;
+        return new String(Files.readAllBytes(Paths.get(JsonInput)));
+    }
+
+    private URL createExpectedSelfLink(String version, String requestId) {
+       System.out.println("createdUrl: " + initialUrl.toString()); 
+               try {   
+                       selfLink = new URL(initialUrl.toString().concat("/").concat(version).concat("/").concat(requestId));
+               } catch (MalformedURLException e) {
+                       e.printStackTrace();
+               }       
+       return selfLink;
+    }
+    
+       private String getWiremockResponseForCatalogdb(String file) {
+               try {
+                       File resource= ResourceUtils.getFile("classpath:__files/catalogdb/"+file);
+                       return new String(Files.readAllBytes(resource.toPath())).replaceAll("localhost:8090","localhost:"+wiremockPort);
+               } catch (IOException e) {
+                       e.printStackTrace();
+                       return null;
+               }
+
+       }
+       
+       public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod, HttpHeaders headers){
+               
+               if (!headers.containsKey(HttpHeaders.ACCEPT)) {
+                       headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
+               }
+               if (!headers.containsKey(HttpHeaders.CONTENT_TYPE)) {
+                       headers.set(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON);
+               }
+
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath, initialPort));
+
+        HttpEntity<String> request = new HttpEntity<>(requestJson, headers);
+
+        return restTemplate.exchange(builder.toUriString(),
+                reqMethod, request, String.class);
+    }
+       
+    public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){
+       return sendRequest(requestJson, uriPath, reqMethod, new HttpHeaders());
+    }
+
+    @Test
+    public void executeCustomWorkflow() throws IOException {
+        stubFor(post(urlPathEqualTo("/mso/async/services/VnfInPlaceUpdate"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/TestResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+        
+        stubFor(get(urlMatching(".*/vnfRecipe/search/findFirstVnfRecipeByNfRoleAndAction[?]" +
+                "nfRole=GR-API-DEFAULT&action=inPlaceSoftwareUpdate"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(getWiremockResponseForCatalogdb("vnfRecipeInPlaceUpdate_Response.json"))
+                        .withStatus(org.apache.http.HttpStatus.SC_OK)));
+
+        //expected response
+        ServiceInstancesResponse expectedResponse = new ServiceInstancesResponse();
+        RequestReferences requestReferences = new RequestReferences();
+        requestReferences.setInstanceId("1882939");
+        requestReferences.setRequestSelfLink(createExpectedSelfLink("v1","32807a28-1a14-4b88-b7b3-2950918aa76d"));        
+        expectedResponse.setRequestReferences(requestReferences);
+        uri = instanceManagementUri + "v1" + "/serviceInstances/f7ce78bb-423b-11e7-93f8-0050569a7968/vnfs/ff305d54-75b4-431b-adb2-eb6b9e5ff000/workflows/71526781-e55c-4cb7-adb3-97e09d9c76be";
+        ResponseEntity<String> response = sendRequest(inputStream("/ExecuteCustomWorkflow.json"), uri, HttpMethod.POST, headers);
+
+        assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
+        ServiceInstancesResponse realResponse = mapper.readValue(response.getBody(), ServiceInstancesResponse.class);
+        assertThat(realResponse, sameBeanAs(expectedResponse).ignoring("requestReferences.requestId"));        
+    }
+}
index ee98acc..d6fff7b 100644 (file)
@@ -153,6 +153,27 @@ public class MsoRequestTest extends BaseTest {
                });
        }
        @Test
+       @Parameters(method = "customWorkflowSuccessParameters")
+       public void customWorkflowSuccessTest(ServiceInstancesRequest sir, HashMap<String, String> instanceIdMapTest, Action action, int reqVersion) throws ValidationException, IOException{
+               this.sir = sir;
+               this.instanceIdMapTest = instanceIdMapTest;
+               this.action = action;
+               this.reqVersion = reqVersion;
+               this.version = "v" + reqVersion;
+               this.instanceIdMapTest.put("serviceInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
+               this.instanceIdMapTest.put("vnfInstanceId", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");
+               this.instanceIdMapTest.put("workflowUuid", "ff305d54-75b4-431b-adb2-eb6b9e5ff000");             
+               this.msoRequest = new MsoRequest();
+               this.msoRequest.parse(sir, instanceIdMapTest, action, version, originalRequestJSON, reqVersion, false);
+       }
+       @Parameters
+       private Collection<Object[]> customWorkflowSuccessParameters() throws JsonParseException, JsonMappingException, IOException{
+               return Arrays.asList(new Object[][]{
+                       {mapper.readValue(inputStream("/SuccessfulValidation/v1ExecuteCustomWorkflow.json"), ServiceInstancesRequest.class), instanceIdMapTest, Action.inPlaceSoftwareUpdate, "1"}
+                       
+               });
+       }
+       @Test
        @Parameters(method = "aLaCarteParameters")
        public void aLaCarteFlagTest(boolean expected, ServiceInstancesRequest sir) throws JsonParseException, IOException, ValidationException{
                this.expected = expected;
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/RequestHandlerUtilsTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/RequestHandlerUtilsTest.java
new file mode 100644 (file)
index 0000000..b1a6e9f
--- /dev/null
@@ -0,0 +1,331 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.apihandlerinfra;
+
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.post;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.onap.so.logger.HttpHeadersConstants.ONAP_REQUEST_ID;
+import static org.onap.so.logger.HttpHeadersConstants.REQUESTOR_ID;
+import static org.onap.so.logger.MdcConstants.CLIENT_ID;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.List;
+
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.http.HttpStatus;
+import org.junit.Before;
+
+import org.junit.Test;
+import org.onap.logging.ref.slf4j.ONAPLogConstants;
+import org.onap.so.apihandlerinfra.exceptions.ContactCamundaException;
+import org.onap.so.apihandlerinfra.exceptions.RequestDbFailureException;
+import org.onap.so.db.catalog.beans.Service;
+import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.onap.so.logger.HttpHeadersConstants;
+import org.onap.so.serviceinstancebeans.ModelInfo;
+import org.onap.so.serviceinstancebeans.RequestDetails;
+import org.onap.so.serviceinstancebeans.RequestInfo;
+import org.onap.so.serviceinstancebeans.RequestParameters;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class RequestHandlerUtilsTest extends BaseTest{
+
+       private final ObjectMapper mapper = new ObjectMapper();
+       private ObjectMapper errorMapper = new ObjectMapper();
+       
+    @Autowired
+    private RequestHandlerUtils requestHandlerUtils;
+
+       @Value("${wiremock.server.port}")
+       private String wiremockPort;
+    
+    private URL initialUrl;
+    private int initialPort;
+    private HttpHeaders headers;
+
+       @Before
+       public  void beforeClass() {
+               mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+               errorMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+               errorMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
+        // set headers
+               headers = new HttpHeaders();
+        headers.set(ONAPLogConstants.Headers.PARTNER_NAME, "test_name");        
+               headers.set(HttpHeadersConstants.TRANSACTION_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
+        headers.set(ONAP_REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
+        headers.set(ONAPLogConstants.MDCs.REQUEST_ID, "32807a28-1a14-4b88-b7b3-2950918aa76d");
+        headers.set(CLIENT_ID, "VID");
+        headers.set(REQUESTOR_ID, "xxxxxx");
+               try {  // generate one-time port number to avoid RANDOM port number later.
+                       initialUrl = new URL(createURLWithPort(Constants.ORCHESTRATION_REQUESTS_PATH));
+                       initialPort = initialUrl.getPort();
+               } catch (MalformedURLException e) {
+                       e.printStackTrace();
+               } 
+               stubFor(post(urlMatching(".*/infraActiveRequests.*"))
+                               .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                                               .withStatus(HttpStatus.SC_OK)));
+       }
+       
+    public String inputStream(String JsonInput)throws IOException{
+        JsonInput = "src/test/resources/ServiceInstanceTest" + JsonInput;
+        return new String(Files.readAllBytes(Paths.get(JsonInput)));
+    }
+    
+       public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod, HttpHeaders headers){
+               
+               if (!headers.containsKey(HttpHeaders.ACCEPT)) {
+                       headers.set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON);
+               }
+               if (!headers.containsKey(HttpHeaders.CONTENT_TYPE)) {
+                       headers.set(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON);
+               }
+
+        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath, initialPort));
+
+        HttpEntity<String> request = new HttpEntity<>(requestJson, headers);
+
+        return restTemplate.exchange(builder.toUriString(),
+                reqMethod, request, String.class);
+    }
+       
+    public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){
+       return sendRequest(requestJson, uriPath, reqMethod, new HttpHeaders());
+    }
+
+    @Test
+    public void test_mapJSONtoMSOStyle() throws IOException{
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.setSerializationInclusion(Include.NON_NULL);
+        String testRequest= inputStream("/ServiceInstanceDefault.json");
+        String resultString = requestHandlerUtils.mapJSONtoMSOStyle(testRequest, null, false, null);
+        ServiceInstancesRequest sir = mapper.readValue(resultString, ServiceInstancesRequest.class);
+        ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
+        assertEquals("f7ce78bb-423b-11e7-93f8-0050569a796",modelInfo.getModelCustomizationUuid());
+        assertEquals("modelInstanceName",modelInfo.getModelInstanceName());
+        assertEquals("f7ce78bb-423b-11e7-93f8-0050569a7965",modelInfo.getModelInvariantUuid());
+        assertEquals("10",modelInfo.getModelUuid());
+
+    }
+    
+    
+    @Test
+    public void test_mapJSONtoMSOStyleUsePreload() throws IOException{
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.setSerializationInclusion(Include.NON_NULL);
+        String testRequest= inputStream("/ServiceInstanceDefault.json");
+        ServiceInstancesRequest sir = new ServiceInstancesRequest();
+        RequestDetails rd = new RequestDetails();
+        RequestParameters rp = new RequestParameters();
+        rp.setUsePreload(true);
+        rd.setRequestParameters(rp);
+        sir.setRequestDetails(rd);
+        String resultString = requestHandlerUtils.mapJSONtoMSOStyle(testRequest, sir, false, null);
+        ServiceInstancesRequest sir1 = mapper.readValue(resultString, ServiceInstancesRequest.class);
+        assertTrue(sir1.getRequestDetails().getRequestParameters().getUsePreload());
+    }   
+  
+    @Test
+    public void setServiceTypeTestALaCarte() throws JsonProcessingException{
+       String requestScope = ModelType.service.toString();
+       Boolean aLaCarteFlag = true;
+       ServiceInstancesRequest sir = new ServiceInstancesRequest();
+       RequestDetails requestDetails = new RequestDetails();
+       RequestInfo requestInfo = new RequestInfo();
+       requestInfo.setSource("VID");
+       requestDetails.setRequestInfo(requestInfo);
+       sir.setRequestDetails(requestDetails);
+               Service defaultService = new Service();
+               defaultService.setServiceType("testServiceTypeALaCarte");
+       
+       stubFor(get(urlMatching(".*/service/search/.*"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(mapper.writeValueAsString(defaultService))
+                        .withStatus(HttpStatus.SC_OK)));
+       
+       String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
+       assertEquals(serviceType, "testServiceTypeALaCarte");
+    }
+    @Test
+    public void setServiceTypeTest() throws JsonProcessingException{
+       String requestScope = ModelType.service.toString();
+       Boolean aLaCarteFlag = false;
+       ServiceInstancesRequest sir = new ServiceInstancesRequest();
+       RequestDetails requestDetails = new RequestDetails();
+       RequestInfo requestInfo = new RequestInfo();
+       ModelInfo modelInfo = new ModelInfo();
+       modelInfo.setModelVersionId("0dd91181-49da-446b-b839-cd959a96f04a");
+       requestInfo.setSource("VID");
+       requestDetails.setModelInfo(modelInfo);
+       requestDetails.setRequestInfo(requestInfo);
+       sir.setRequestDetails(requestDetails);
+               Service defaultService = new Service();
+               defaultService.setServiceType("testServiceType");
+       
+       stubFor(get(urlMatching(".*/service/0dd91181-49da-446b-b839-cd959a96f04a"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(mapper.writeValueAsString(defaultService))
+                        .withStatus(HttpStatus.SC_OK)));
+       
+       String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
+       assertEquals(serviceType, "testServiceType");
+    }
+    @Test
+    public void setServiceTypeTestDefault() throws JsonProcessingException{
+       String requestScope = ModelType.service.toString();
+       Boolean aLaCarteFlag = false;
+       ServiceInstancesRequest sir = new ServiceInstancesRequest();
+       RequestDetails requestDetails = new RequestDetails();
+       RequestInfo requestInfo = new RequestInfo();
+       ModelInfo modelInfo = new ModelInfo();
+       modelInfo.setModelVersionId("0dd91181-49da-446b-b839-cd959a96f04a");
+       requestInfo.setSource("VID");
+       requestDetails.setModelInfo(modelInfo);
+       requestDetails.setRequestInfo(requestInfo);
+       sir.setRequestDetails(requestDetails);
+               Service defaultService = new Service();
+               defaultService.setServiceType("testServiceType");
+       
+       stubFor(get(urlMatching(".*/service/0dd91181-49da-446b-b839-cd959a96f04a"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withStatus(HttpStatus.SC_NOT_FOUND)));
+       stubFor(get(urlMatching(".*/service/search/.*"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody(mapper.writeValueAsString(defaultService))
+                        .withStatus(HttpStatus.SC_OK)));
+       
+       String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
+       assertEquals(serviceType, "testServiceType");
+    }
+    @Test
+    public void setServiceTypeTestNetwork() throws JsonProcessingException{
+       String requestScope = ModelType.network.toString();
+       Boolean aLaCarteFlag = null;
+       ServiceInstancesRequest sir = new ServiceInstancesRequest();
+       RequestDetails requestDetails = new RequestDetails();
+       RequestInfo requestInfo = new RequestInfo();
+       ModelInfo modelInfo = new ModelInfo();
+       modelInfo.setModelName("networkModelName");
+       requestInfo.setSource("VID");
+       requestDetails.setModelInfo(modelInfo);
+       requestDetails.setRequestInfo(requestInfo);
+       sir.setRequestDetails(requestDetails);
+       
+       String serviceType = requestHandlerUtils.getServiceType(requestScope, sir, aLaCarteFlag);
+       assertEquals(serviceType, "networkModelName");
+    }
+    @Test
+    public void setServiceInstanceIdInstanceGroupTest() throws JsonParseException, JsonMappingException, IOException{
+       String requestScope = "instanceGroup";
+       ServiceInstancesRequest sir = mapper.readValue(inputStream("/CreateInstanceGroup.json"), ServiceInstancesRequest.class);
+       assertEquals("ddcbbf3d-f2c1-4ca0-8852-76a807285efc", requestHandlerUtils.setServiceInstanceId(requestScope, sir));
+    }
+    @Test
+    public void setServiceInstanceIdTest(){
+       String requestScope = "vnf";
+       ServiceInstancesRequest sir = new ServiceInstancesRequest();
+       sir.setServiceInstanceId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
+       assertEquals("f0a35706-efc4-4e27-80ea-a995d7a2a40f", requestHandlerUtils.setServiceInstanceId(requestScope, sir));
+    }
+    @Test
+    public void setServiceInstanceIdReturnNullTest(){
+       String requestScope = "vnf";
+       ServiceInstancesRequest sir = new ServiceInstancesRequest();
+       assertNull(requestHandlerUtils.setServiceInstanceId(requestScope, sir));
+    }
+    @Test
+    public void camundaHistoryCheckTest() throws ContactCamundaException, RequestDbFailureException{
+       stubFor(get(("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/HistoryCheckResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+       
+       InfraActiveRequests duplicateRecord = new InfraActiveRequests();
+       duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
+       boolean inProgress = false;
+       inProgress = requestHandlerUtils.camundaHistoryCheck(duplicateRecord, null);
+       assertTrue(inProgress);
+    }
+    @Test
+    public void camundaHistoryCheckNoneFoundTest() throws ContactCamundaException, RequestDbFailureException{
+       stubFor(get(("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBody("[]").withStatus(org.apache.http.HttpStatus.SC_OK)));
+       
+       InfraActiveRequests duplicateRecord = new InfraActiveRequests();
+       duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
+       boolean inProgress = false;
+       inProgress = requestHandlerUtils.camundaHistoryCheck(duplicateRecord, null);
+       assertFalse(inProgress);
+    }
+    @Test
+    public void camundaHistoryCheckNotInProgressTest()throws ContactCamundaException, RequestDbFailureException{
+       stubFor(get(("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
+                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
+                        .withBodyFile("Camunda/HistoryCheckResponseCompleted.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
+       
+       InfraActiveRequests duplicateRecord = new InfraActiveRequests();
+       duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
+       boolean inProgress = false;
+       inProgress = requestHandlerUtils.camundaHistoryCheck(duplicateRecord, null);
+       assertFalse(inProgress);
+    }
+    @Test
+    public void setCamundaHeadersTest()throws ContactCamundaException, RequestDbFailureException{
+       String encryptedAuth   = "015E7ACF706C6BBF85F2079378BDD2896E226E09D13DC2784BA309E27D59AB9FAD3A5E039DF0BB8408"; // user:password
+       String key = "07a7159d3bf51a0e53be7a8f89699be7";
+       HttpHeaders headers = requestHandlerUtils.setCamundaHeaders(encryptedAuth, key);
+       List<org.springframework.http.MediaType> acceptedType = headers.getAccept();
+       String expectedAcceptedType = "application/json";
+       assertEquals(expectedAcceptedType, acceptedType.get(0).toString());
+       String basicAuth = headers.getFirst(HttpHeaders.AUTHORIZATION);
+       String expectedBasicAuth = "Basic dXNlcjpwYXNzd29yZA==";        
+       assertEquals(expectedBasicAuth, basicAuth);
+    }    
+    
+}
index 17fa011..6393670 100644 (file)
@@ -29,9 +29,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.assertTrue;
 import static org.onap.so.logger.HttpHeadersConstants.ONAP_REQUEST_ID;
@@ -63,20 +61,14 @@ import javax.ws.rs.core.Response;
 
 import org.apache.http.HttpStatus;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.onap.logging.ref.slf4j.ONAPLogConstants;
-import org.onap.so.apihandlerinfra.exceptions.ContactCamundaException;
-import org.onap.so.apihandlerinfra.exceptions.RequestDbFailureException;
 import org.onap.so.db.catalog.beans.Service;
 import org.onap.so.db.catalog.beans.ServiceRecipe;
 import org.onap.so.db.request.beans.InfraActiveRequests;
 import org.onap.so.logger.HttpHeadersConstants;
 import org.onap.so.serviceinstancebeans.CloudConfiguration;
-import org.onap.so.serviceinstancebeans.ModelInfo;
-import org.onap.so.serviceinstancebeans.RequestDetails;
 import org.onap.so.serviceinstancebeans.RequestError;
-import org.onap.so.serviceinstancebeans.RequestInfo;
 import org.onap.so.serviceinstancebeans.RequestParameters;
 import org.onap.so.serviceinstancebeans.RequestReferences;
 import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
@@ -108,7 +100,7 @@ public class ServiceInstancesTest extends BaseTest{
        
     @Autowired
     private ServiceInstances servInstances;
-
+  
        @Value("${wiremock.server.port}")
        private String wiremockPort;
 
@@ -190,39 +182,7 @@ public class ServiceInstancesTest extends BaseTest{
     public ResponseEntity<String> sendRequest(String requestJson, String uriPath, HttpMethod reqMethod){
        return sendRequest(requestJson, uriPath, reqMethod, new HttpHeaders());
     }
-
-    @Test
-    public void test_mapJSONtoMSOStyle() throws IOException{
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.setSerializationInclusion(Include.NON_NULL);
-        String testRequest= inputStream("/ServiceInstanceDefault.json");
-        String resultString = servInstances.mapJSONtoMSOStyle(testRequest, null, false, null);
-        ServiceInstancesRequest sir = mapper.readValue(resultString, ServiceInstancesRequest.class);
-        ModelInfo modelInfo = sir.getRequestDetails().getModelInfo();
-        assertEquals("f7ce78bb-423b-11e7-93f8-0050569a796",modelInfo.getModelCustomizationUuid());
-        assertEquals("modelInstanceName",modelInfo.getModelInstanceName());
-        assertEquals("f7ce78bb-423b-11e7-93f8-0050569a7965",modelInfo.getModelInvariantUuid());
-        assertEquals("10",modelInfo.getModelUuid());
-
-    }
-    
-    
-    @Test
-    public void test_mapJSONtoMSOStyleUsePreload() throws IOException{
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.setSerializationInclusion(Include.NON_NULL);
-        String testRequest= inputStream("/ServiceInstanceDefault.json");
-        ServiceInstancesRequest sir = new ServiceInstancesRequest();
-        RequestDetails rd = new RequestDetails();
-        RequestParameters rp = new RequestParameters();
-        rp.setUsePreload(true);
-        rd.setRequestParameters(rp);
-        sir.setRequestDetails(rd);
-        String resultString = servInstances.mapJSONtoMSOStyle(testRequest, sir, false, null);
-        ServiceInstancesRequest sir1 = mapper.readValue(resultString, ServiceInstancesRequest.class);
-        assertTrue(sir1.getRequestDetails().getRequestParameters().getUsePreload());
-    }
-    
+   
     @Test
     public void createServiceInstanceVIDDefault() throws IOException{
         TestAppender.events.clear();
@@ -2569,160 +2529,5 @@ public class ServiceInstancesTest extends BaseTest{
         assertEquals(realResponse.getServiceException().getText(), "No valid modelCustomizationId for networkResourceCustomization lookup is specified");
     }
     
-    @Test
-    public void setServiceTypeTestALaCarte() throws JsonProcessingException{
-       String requestScope = ModelType.service.toString();
-       Boolean aLaCarteFlag = true;
-       ServiceInstancesRequest sir = new ServiceInstancesRequest();
-       RequestDetails requestDetails = new RequestDetails();
-       RequestInfo requestInfo = new RequestInfo();
-       requestInfo.setSource("VID");
-       requestDetails.setRequestInfo(requestInfo);
-       sir.setRequestDetails(requestDetails);
-               Service defaultService = new Service();
-               defaultService.setServiceType("testServiceTypeALaCarte");
-       
-       stubFor(get(urlMatching(".*/service/search/.*"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withBody(mapper.writeValueAsString(defaultService))
-                        .withStatus(HttpStatus.SC_OK)));
-       
-       String serviceType = servInstances.getServiceType(requestScope, sir, aLaCarteFlag);
-       assertEquals(serviceType, "testServiceTypeALaCarte");
-    }
-    @Test
-    public void setServiceTypeTest() throws JsonProcessingException{
-       String requestScope = ModelType.service.toString();
-       Boolean aLaCarteFlag = false;
-       ServiceInstancesRequest sir = new ServiceInstancesRequest();
-       RequestDetails requestDetails = new RequestDetails();
-       RequestInfo requestInfo = new RequestInfo();
-       ModelInfo modelInfo = new ModelInfo();
-       modelInfo.setModelVersionId("0dd91181-49da-446b-b839-cd959a96f04a");
-       requestInfo.setSource("VID");
-       requestDetails.setModelInfo(modelInfo);
-       requestDetails.setRequestInfo(requestInfo);
-       sir.setRequestDetails(requestDetails);
-               Service defaultService = new Service();
-               defaultService.setServiceType("testServiceType");
-       
-       stubFor(get(urlMatching(".*/service/0dd91181-49da-446b-b839-cd959a96f04a"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withBody(mapper.writeValueAsString(defaultService))
-                        .withStatus(HttpStatus.SC_OK)));
-       
-       String serviceType = servInstances.getServiceType(requestScope, sir, aLaCarteFlag);
-       assertEquals(serviceType, "testServiceType");
-    }
-    @Test
-    public void setServiceTypeTestDefault() throws JsonProcessingException{
-       String requestScope = ModelType.service.toString();
-       Boolean aLaCarteFlag = false;
-       ServiceInstancesRequest sir = new ServiceInstancesRequest();
-       RequestDetails requestDetails = new RequestDetails();
-       RequestInfo requestInfo = new RequestInfo();
-       ModelInfo modelInfo = new ModelInfo();
-       modelInfo.setModelVersionId("0dd91181-49da-446b-b839-cd959a96f04a");
-       requestInfo.setSource("VID");
-       requestDetails.setModelInfo(modelInfo);
-       requestDetails.setRequestInfo(requestInfo);
-       sir.setRequestDetails(requestDetails);
-               Service defaultService = new Service();
-               defaultService.setServiceType("testServiceType");
-       
-       stubFor(get(urlMatching(".*/service/0dd91181-49da-446b-b839-cd959a96f04a"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withStatus(HttpStatus.SC_NOT_FOUND)));
-       stubFor(get(urlMatching(".*/service/search/.*"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withBody(mapper.writeValueAsString(defaultService))
-                        .withStatus(HttpStatus.SC_OK)));
-       
-       String serviceType = servInstances.getServiceType(requestScope, sir, aLaCarteFlag);
-       assertEquals(serviceType, "testServiceType");
-    }
-    @Test
-    public void setServiceTypeTestNetwork() throws JsonProcessingException{
-       String requestScope = ModelType.network.toString();
-       Boolean aLaCarteFlag = null;
-       ServiceInstancesRequest sir = new ServiceInstancesRequest();
-       RequestDetails requestDetails = new RequestDetails();
-       RequestInfo requestInfo = new RequestInfo();
-       ModelInfo modelInfo = new ModelInfo();
-       modelInfo.setModelName("networkModelName");
-       requestInfo.setSource("VID");
-       requestDetails.setModelInfo(modelInfo);
-       requestDetails.setRequestInfo(requestInfo);
-       sir.setRequestDetails(requestDetails);
-       
-       String serviceType = servInstances.getServiceType(requestScope, sir, aLaCarteFlag);
-       assertEquals(serviceType, "networkModelName");
-    }
-    @Test
-    public void setServiceInstanceIdInstanceGroupTest() throws JsonParseException, JsonMappingException, IOException{
-       String requestScope = "instanceGroup";
-       ServiceInstancesRequest sir = mapper.readValue(inputStream("/CreateInstanceGroup.json"), ServiceInstancesRequest.class);
-       assertEquals("ddcbbf3d-f2c1-4ca0-8852-76a807285efc", servInstances.setServiceInstanceId(requestScope, sir));
-    }
-    @Test
-    public void setServiceInstanceIdTest(){
-       String requestScope = "vnf";
-       ServiceInstancesRequest sir = new ServiceInstancesRequest();
-       sir.setServiceInstanceId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
-       assertEquals("f0a35706-efc4-4e27-80ea-a995d7a2a40f", servInstances.setServiceInstanceId(requestScope, sir));
-    }
-    @Test
-    public void setServiceInstanceIdReturnNullTest(){
-       String requestScope = "vnf";
-       ServiceInstancesRequest sir = new ServiceInstancesRequest();
-       assertNull(servInstances.setServiceInstanceId(requestScope, sir));
-    }
-    @Test
-    public void camundaHistoryCheckTest() throws ContactCamundaException, RequestDbFailureException{
-       stubFor(get(("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withBodyFile("Camunda/HistoryCheckResponse.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
-       
-       InfraActiveRequests duplicateRecord = new InfraActiveRequests();
-       duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
-       boolean inProgress = false;
-       inProgress = servInstances.camundaHistoryCheck(duplicateRecord, null);
-       assertTrue(inProgress);
-    }
-    @Test
-    public void camundaHistoryCheckNoneFoundTest() throws ContactCamundaException, RequestDbFailureException{
-       stubFor(get(("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withBody("[]").withStatus(org.apache.http.HttpStatus.SC_OK)));
-       
-       InfraActiveRequests duplicateRecord = new InfraActiveRequests();
-       duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
-       boolean inProgress = false;
-       inProgress = servInstances.camundaHistoryCheck(duplicateRecord, null);
-       assertFalse(inProgress);
-    }
-    @Test
-    public void camundaHistoryCheckNotInProgressTest()throws ContactCamundaException, RequestDbFailureException{
-       stubFor(get(("/sobpmnengine/history/process-instance?variables=mso-request-id_eq_f0a35706-efc4-4e27-80ea-a995d7a2a40f"))
-                .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
-                        .withBodyFile("Camunda/HistoryCheckResponseCompleted.json").withStatus(org.apache.http.HttpStatus.SC_OK)));
-       
-       InfraActiveRequests duplicateRecord = new InfraActiveRequests();
-       duplicateRecord.setRequestId("f0a35706-efc4-4e27-80ea-a995d7a2a40f");
-       boolean inProgress = false;
-       inProgress = servInstances.camundaHistoryCheck(duplicateRecord, null);
-       assertFalse(inProgress);
-    }
-    @Test
-    public void setCamundaHeadersTest()throws ContactCamundaException, RequestDbFailureException{
-       String encryptedAuth   = "015E7ACF706C6BBF85F2079378BDD2896E226E09D13DC2784BA309E27D59AB9FAD3A5E039DF0BB8408"; // user:password
-       String key = "07a7159d3bf51a0e53be7a8f89699be7";
-       HttpHeaders headers = servInstances.setCamundaHeaders(encryptedAuth, key);
-       List<org.springframework.http.MediaType> acceptedType = headers.getAccept();
-       String expectedAcceptedType = "application/json";
-       assertEquals(expectedAcceptedType, acceptedType.get(0).toString());
-       String basicAuth = headers.getFirst(HttpHeaders.AUTHORIZATION);
-       String expectedBasicAuth = "Basic dXNlcjpwYXNzd29yZA==";        
-       assertEquals(expectedBasicAuth, basicAuth);
-    }  
+   
 }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidationTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/onap/so/apihandlerinfra/validation/CustomWorkflowValidationTest.java
new file mode 100644 (file)
index 0000000..90c994f
--- /dev/null
@@ -0,0 +1,54 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 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.apihandlerinfra.validation;
+
+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 org.junit.Test;
+import org.onap.so.apihandlerinfra.Action;
+import org.onap.so.apihandlerinfra.BaseTest;
+import org.onap.so.exceptions.ValidationException;
+import org.onap.so.serviceinstancebeans.ServiceInstancesRequest;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class CustomWorkflowValidationTest extends BaseTest{
+
+       @Test
+       public void testCustomWorkflowValidation() throws IOException, ValidationException {
+               String requestJson = new String(Files.readAllBytes(Paths.get("src/test/resources/MsoRequestTest/SuccessfulValidation/v1ExecuteCustomWorkflow.json")));
+               ObjectMapper mapper = new ObjectMapper();
+               ServiceInstancesRequest sir  = mapper.readValue(requestJson, ServiceInstancesRequest.class);
+               ValidationInformation info = new ValidationInformation(sir, new HashMap<String, String>(), Action.inPlaceSoftwareUpdate, 
+                                                                                                                               1, false, sir.getRequestDetails().getRequestParameters());
+               info.setRequestScope("vnf");
+               
+               CustomWorkflowValidation validation = new CustomWorkflowValidation();
+               validation.validate(info);
+               
+               assertEquals(info.getSir().getRequestDetails().getCloudConfiguration().getCloudOwner(), "att-aic");
+       }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/v1ExecuteCustomWorkflow.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/MsoRequestTest/SuccessfulValidation/v1ExecuteCustomWorkflow.json
new file mode 100644 (file)
index 0000000..611ccb3
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "requestDetails": {
+    "cloudConfiguration": {
+      "cloudOwner": "att-aic",
+      "lcpCloudRegionId": "mdt1",
+      "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+    },
+    "requestParameters": {
+      "userParams": [
+        {
+          "existing_software_version": "3.1",
+          "new_software_version": "3.2",
+          "operations_timeout": "3600"
+        }
+      ]
+    }
+  }
+}
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ExecuteCustomWorkflow.json b/mso-api-handlers/mso-api-handler-infra/src/test/resources/ServiceInstanceTest/ExecuteCustomWorkflow.json
new file mode 100644 (file)
index 0000000..611ccb3
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "requestDetails": {
+    "cloudConfiguration": {
+      "cloudOwner": "att-aic",
+      "lcpCloudRegionId": "mdt1",
+      "tenantId": "88a6ca3ee0394ade9403f075db23167e"
+    },
+    "requestParameters": {
+      "userParams": [
+        {
+          "existing_software_version": "3.1",
+          "new_software_version": "3.2",
+          "operations_timeout": "3600"
+        }
+      ]
+    }
+  }
+}