Refactored SDNCAdapterUtils (groovy)
[so.git] / bpmn / so-bpmn-infrastructure-common / src / main / groovy / org / onap / so / bpmn / infrastructure / scripts / DoDeleteVfModule.groovy
index b41b74e..b21dcf3 100644 (file)
@@ -4,12 +4,14 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
 package org.onap.so.bpmn.infrastructure.scripts
 
+import org.onap.aai.domain.yang.NetworkPolicies
+import org.onap.aai.domain.yang.NetworkPolicy
+import org.onap.so.logger.ErrorCode
+
 import javax.xml.parsers.DocumentBuilder
 import javax.xml.parsers.DocumentBuilderFactory
 
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.onap.so.bpmn.common.scripts.AaiUtil
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.common.scripts.MsoUtils
 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
-import org.onap.so.bpmn.common.scripts.VfModule
 import org.onap.so.bpmn.core.UrnPropertiesReader
 import org.onap.so.bpmn.core.WorkflowException
 import org.onap.so.bpmn.core.json.JsonUtils
+import org.onap.so.client.aai.AAIObjectPlurals
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
 import org.onap.so.logger.MessageEnum
-import org.onap.so.logger.MsoLogger
-import org.onap.so.rest.APIResponse
-import org.onap.so.rest.RESTClient
-import org.onap.so.rest.RESTConfig
-import org.springframework.web.util.UriUtils
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
 import org.w3c.dom.Document
 import org.w3c.dom.Element
 import org.w3c.dom.Node
@@ -59,7 +64,7 @@ import org.xml.sax.InputSource
 * @param - vfModuleModelInfo
 * @param - cloudConfiguration*
 * @param - sdncVersion ("1610")
-* @param - retainResources 
+* @param - retainResources
 * @param - aLaCarte
 *
 * Outputs:
@@ -67,7 +72,7 @@ import org.xml.sax.InputSource
 *
 */
 public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
-       private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoDeleteVfModule.class);
+    private static final Logger logger = LoggerFactory.getLogger( DoDeleteVfModule.class);
 
        def Prefix="DoDVfMod_"
 
@@ -106,6 +111,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                execution.setVariable("tenantId", tenantId)
                                String cloudSiteId = jsonUtil.getJsonValue(cloudConfiguration, "lcpCloudRegionId")
                                execution.setVariable("cloudSiteId", cloudSiteId)
+                               String cloudOwner = jsonUtil.getJsonValue(cloudConfiguration, "cloudOwner")
+                               execution.setVariable("cloudOwner", cloudOwner)
                                // Source is HARDCODED
                                String source = "VID"
                                execution.setVariable("source", source)
@@ -126,17 +133,17 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                def vfModuleModelName = jsonUtil.getJsonValue(vfModuleModelInfo, "modelName")
                                execution.setVariable("vfModuleModelName", vfModuleModelName)
                                // retainResources
-                               def retainResources = execution.getVariable("retainResources")                  
+                               def retainResources = execution.getVariable("retainResources")
                                if (retainResources == null) {
                                        retainResources  = false
                                }
-                               execution.setVariable("retainResources", retainResources)                               
+                               execution.setVariable("retainResources", retainResources)
                        }
                        else {
 
-                               msoLogger.debug("DoDeleteVfModule Request: " + xml)
+                               logger.debug("DoDeleteVfModule Request: " + xml)
 
-                               msoLogger.debug("input request xml: " + xml)
+                               logger.debug("input request xml: " + xml)
 
                                vnfId = utils.getNodeText(xml,"vnf-id")
                                execution.setVariable("vnfId", vnfId)
@@ -171,6 +178,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                execution.setVariable("vfModuleModelName", vfModuleModelName)
                                String cloudSiteId = utils.getNodeText(xml, "aic-cloud-region")
                                execution.setVariable("cloudSiteId", cloudSiteId)
+                               String cloudOwner = utils.getNodeText(xml, "cloud-owner")
+                               execution.setVariable("cloudOwner", cloudOwner)
                        }
 
                        // formulate the request for PrepareUpdateAAIVfModule
@@ -179,8 +188,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                                                        <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                                        <orchestration-status>pending-delete</orchestration-status>
                                                                </PrepareUpdateAAIVfModuleRequest>""" as String
-                       msoLogger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
-                       msoLogger.debug("UpdateAAIVfModule Request: " + request)
+                       logger.debug("PrepareUpdateAAIVfModuleRequest :" + request)
+                       logger.debug("UpdateAAIVfModule Request: " + request)
                        execution.setVariable("PrepareUpdateAAIVfModuleRequest", request)
                        execution.setVariable("vfModuleFromAAI", null)
                }catch(BpmnError b){
@@ -199,7 +208,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                if(uuid==null){
                        uuid = execution.getVariable("requestId") + "-" +       System.currentTimeMillis()
                }
-               
+
                def srvInstId = execution.getVariable("srvInstId")
                def callbackUrl = UrnPropertiesReader.getVariable("mso.workflow.sdncadapter.callback",execution)
                String requestId = execution.getVariable("requestId")
@@ -213,8 +222,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                // Get vfModuleName from AAI response if it was not specified on the request
                if (vfModuleName == null || vfModuleName.isEmpty()) {
                        if (execution.getVariable("vfModuleFromAAI") != null) {
-                               VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI")
-                               vfModuleName = vfModuleFromAAI.getElementText("vf-module-name")
+                               org.onap.aai.domain.yang.VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI")
+                               vfModuleName = vfModuleFromAAI.getVfModuleName()
                        }
                }
                String vfModuleModelName = execution.getVariable("vfModuleModelName")
@@ -222,7 +231,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                boolean retainResources = execution.getVariable("retainResources")
                String requestSubActionString = ""
                if (retainResources) {
-                       requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>"                      
+                       requestSubActionString = "<request-sub-action>RetainResource</request-sub-action>"
                }
                String request = """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.onap/so/request/types/v1"
                                                                                                        xmlns:sdncadapterworkflow="http://org.onap/so/workflow/schema/v1"
@@ -263,8 +272,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                                      </sdncadapterworkflow:SDNCRequestData>
                                                   </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""
 
-               msoLogger.debug("sdncAdapterWorkflowRequest: " + request)
-               msoLogger.debug("DoDeleteVfModule - SDNCAdapterWorkflowRequest: " + request)
+               logger.debug("sdncAdapterWorkflowRequest: " + request)
+               logger.debug("DoDeleteVfModule - SDNCAdapterWorkflowRequest: " + request)
                execution.setVariable("sdncAdapterWorkflowRequest", request)
        }
 
@@ -276,6 +285,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                def origRequestId = execution.getVariable('requestId')
                def srvInstId = execution.getVariable("serviceInstanceId")
                def aicCloudRegion = execution.getVariable("cloudSiteId")
+               def cloudOwner = execution.getVariable("cloudOwner")
                def vnfId = execution.getVariable("vnfId")
                def vfModuleId = execution.getVariable("vfModuleId")
                def vfModuleStackId = execution.getVariable('DoDVfMod_heatStackId')
@@ -291,6 +301,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                String request = """
                        <deleteVfModuleRequest>
                            <cloudSiteId>${MsoUtils.xmlEscape(aicCloudRegion)}</cloudSiteId>
+                           <cloudOwner>${MsoUtils.xmlEscape(cloudOwner)}</cloudOwner>
                            <tenantId>${MsoUtils.xmlEscape(tenantId)}</tenantId>
                            <vnfId>${MsoUtils.xmlEscape(vnfId)}</vnfId>
                            <vfModuleId>${MsoUtils.xmlEscape(vfModuleId)}</vfModuleId>
@@ -305,8 +316,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                        </deleteVfModuleRequest>
                        """ as String
 
-               msoLogger.debug("vnfAdapterRestV1Request: " + request)
-               msoLogger.debug("deleteVfModuleRequest: " + request)
+               logger.debug("vnfAdapterRestV1Request: " + request)
+               logger.debug("deleteVfModuleRequest: " + request)
                execution.setVariable("vnfAdapterRestV1Request", request)
        }
 
@@ -323,8 +334,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                                                <heat-stack-id>DELETE</heat-stack-id>
                                                                <orchestration-status>deleted</orchestration-status>
                                                        </UpdateAAIVfModuleRequest>""" as String
-               msoLogger.debug("UpdateAAIVfModuleRequest :" + request)
-               msoLogger.debug("UpdateAAIVfModuleRequest: " + request)
+               logger.debug("UpdateAAIVfModuleRequest :" + request)
+               logger.debug("UpdateAAIVfModuleRequest: " + request)
                execution.setVariable("UpdateAAIVfModuleRequest", request)
        }
 
@@ -340,15 +351,17 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                                                <vnf-id>${MsoUtils.xmlEscape(vnfId)}</vnf-id>
                                                                <vf-module-id>${MsoUtils.xmlEscape(vfModuleId)}</vf-module-id>
                                                        </DeleteAAIVfModuleRequest>""" as String
-               msoLogger.debug("DeleteAAIVfModuleRequest :" + request)
-               msoLogger.debug("DeleteAAIVfModuleRequest: " + request)
+               logger.debug("DeleteAAIVfModuleRequest :" + request)
+               logger.debug("DeleteAAIVfModuleRequest: " + request)
                execution.setVariable("DeleteAAIVfModuleRequest", request)
        }
 
        // generates a WorkflowException if
        //              -
        public void handleDoDeleteVfModuleFailure(DelegateExecution execution) {
-               msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"), "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception");
+               logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                               "AAI error occurred deleting the Generic Vnf: " + execution.getVariable("DoDVfMod_deleteGenericVnfResponse"),
+                               "BPMN", ErrorCode.UnknownError.getValue(), "Exception");
                String processKey = getProcessKey(execution);
                WorkflowException exception = new WorkflowException(processKey, 5000,
                        execution.getVariable("DoDVfMod_deleteGenericVnfResponse"))
@@ -362,11 +375,11 @@ 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){
-                       msoLogger.debug("Successfully Validated SDNC Response")
+                       logger.debug("Successfully Validated SDNC Response")
                }else{
                        throw new BpmnError("MSOWorkflowException")
                }
@@ -377,19 +390,19 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                        'execution=' + execution.getId() +
                        ')'
 
-               msoLogger.trace('Entered ' + method)
+               logger.trace('Entered ' + method)
                execution.setVariable("prefix",Prefix)
                try{
-               msoLogger.trace("STARTED postProcessVNFAdapterRequest Process")
+               logger.trace("STARTED postProcessVNFAdapterRequest Process")
 
                String vnfResponse = execution.getVariable("DoDVfMod_doDeleteVfModuleResponse")
-               msoLogger.debug("VNF Adapter Response is: " + vnfResponse)
-               msoLogger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
+               logger.debug("VNF Adapter Response is: " + vnfResponse)
+               logger.debug("deleteVnfAResponse is: \n"  + vnfResponse)
 
                if(vnfResponse != null){
 
                        if(vnfResponse.contains("deleteVfModuleResponse")){
-                               msoLogger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
+                               logger.debug("Received a Good Response from VNF Adapter for DELETE_VF_MODULE Call.")
                                execution.setVariable("DoDVfMod_vnfVfModuleDeleteCompleted", true)
 
                                // Parse vnfOutputs for contrail network polcy FQDNs
@@ -410,43 +423,43 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                                        String key = element.getElementsByTagNameNS("*", "key").item(0).getTextContent()
                                                        if (key.endsWith("contrail_network_policy_fqdn")) {
                                                                String contrailNetworkPolicyFqdn = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
-                                                               msoLogger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
+                                                               logger.debug("Obtained contrailNetworkPolicyFqdn: " + contrailNetworkPolicyFqdn)
                                                                contrailNetworkPolicyFqdnList.add(contrailNetworkPolicyFqdn)
                                                        }
                                                        else if (key.equals("oam_management_v4_address")) {
                                                                String oamManagementV4Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
-                                                               msoLogger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
+                                                               logger.debug("Obtained oamManagementV4Address: " + oamManagementV4Address)
                                                                execution.setVariable(Prefix + "oamManagementV4Address", oamManagementV4Address)
                                                        }
                                                        else if (key.equals("oam_management_v6_address")) {
                                                                String oamManagementV6Address = element.getElementsByTagNameNS("*", "value").item(0).getTextContent()
-                                                               msoLogger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
+                                                               logger.debug("Obtained oamManagementV6Address: " + oamManagementV6Address)
                                                                execution.setVariable(Prefix + "oamManagementV6Address", oamManagementV6Address)
                                                        }
 
                                                }
                                        }
                                        if (!contrailNetworkPolicyFqdnList.isEmpty()) {
-                                               msoLogger.debug("Setting the fqdn list")
+                                               logger.debug("Setting the fqdn list")
                                                execution.setVariable("DoDVfMod_contrailNetworkPolicyFqdnList", contrailNetworkPolicyFqdnList)
                                        }
                                }
                        }else{
-                               msoLogger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
+                               logger.debug("Received a BAD Response from VNF Adapter for DELETE_VF_MODULE Call.")
                                exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "VNF Adapter Error")
                        }
                }else{
-                       msoLogger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
+                       logger.debug("Response from VNF Adapter is Null for DELETE_VF_MODULE Call.")
                        exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Empty response from VNF Adapter")
                }
 
                }catch(BpmnError b){
                        throw b
                }catch(Exception e){
-                       msoLogger.debug("Internal Error Occured in PostProcess Method")
+                       logger.debug("Internal Error Occured in PostProcess Method")
                        exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Internal Error Occured in PostProcess Method")
                }
-               msoLogger.trace("COMPLETED postProcessVnfAdapterResponse Process")
+               logger.trace("COMPLETED postProcessVnfAdapterResponse Process")
        }
 
        public void deleteNetworkPoliciesFromAAI(DelegateExecution execution) {
@@ -454,119 +467,69 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                'execution=' + execution.getId() +
                ')'
 
-               msoLogger.trace('Entered ' + method)
+               logger.trace('Entered ' + method)
                execution.setVariable("prefix", Prefix)
-               msoLogger.trace("STARTED deleteNetworkPoliciesFromAAI ")
+               logger.trace("STARTED deleteNetworkPoliciesFromAAI ")
 
                try {
                        // get variables
                        List fqdnList = execution.getVariable("DoDVfMod_contrailNetworkPolicyFqdnList")
                        if (fqdnList == null) {
-                               msoLogger.debug("No network policies to delete")
+                               logger.debug("No network policies to delete")
                                return
                        }
                        int fqdnCount = fqdnList.size()
 
                        execution.setVariable("DoDVfMod_networkPolicyFqdnCount", fqdnCount)
-                       msoLogger.debug("DoDVfMod_networkPolicyFqdnCount - " + fqdnCount)
-
-                       String aai_endpoint = UrnPropertiesReader.getVariable("aai.endpoint", execution)
-                       AaiUtil aaiUriUtil = new AaiUtil(this)
-                       String aai_uri = aaiUriUtil.getNetworkPolicyUri(execution)
+                       logger.debug("DoDVfMod_networkPolicyFqdnCount - " + fqdnCount)
 
                        if (fqdnCount > 0) {
                                // AII loop call over contrail network policy fqdn list
                                for (i in 0..fqdnCount-1) {
-
-                                       int counting = i+1
                                        String fqdn = fqdnList[i]
-
                                        // Query AAI for this network policy FQDN
-
-                                       String queryNetworkPolicyByFqdnAAIRequest = "${aai_endpoint}${aai_uri}?network-policy-fqdn=" + UriUtils.encode(fqdn, "UTF-8")
-                                       msoLogger.debug("AAI request endpoint: " + queryNetworkPolicyByFqdnAAIRequest)
-                                       msoLogger.debug("AAI request endpoint: "  + queryNetworkPolicyByFqdnAAIRequest)
-
-                                       APIResponse response = aaiUriUtil.executeAAIGetCall(execution, queryNetworkPolicyByFqdnAAIRequest)
-                                       int returnCode = response.getStatusCode()
-                                       execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", returnCode)
-                                       msoLogger.debug(" ***** AAI query network policy Response Code, NetworkPolicy #" + counting + " : " + returnCode)
-
-                                       String aaiResponseAsString = response.getResponseBodyAsString()
-
-                                       if (isOneOf(returnCode, 200, 201)) {
-                                               msoLogger.debug("The return code is: "  + returnCode)
-                                               // This network policy FQDN exists in AAI - need to delete it now
-                                               msoLogger.debug(aaiResponseAsString)
-                                               execution.setVariable("DoDVfMod_queryNetworkPolicyByFqdnAAIResponse", aaiResponseAsString)
-                                               msoLogger.debug("QueryAAINetworkPolicyByFQDN Success REST Response, , NetworkPolicy #" + counting + " : " + "\n" + aaiResponseAsString)
-                                               // Retrieve the network policy id for this FQDN
-                                               def networkPolicyId = utils.getNodeText(aaiResponseAsString, "network-policy-id")
-                                               msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
-
-                                               // Retrieve the resource version for this network policy
-                                               def resourceVersion = utils.getNodeText(aaiResponseAsString, "resource-version")
-                                               msoLogger.debug("Deleting network-policy with resource-version " + resourceVersion)
-
-                                               String delNetworkPolicyAAIRequest = "${aai_endpoint}${aai_uri}/" + UriUtils.encode(networkPolicyId, "UTF-8") +
-                                                       "?resource-version=" + UriUtils.encode(resourceVersion, "UTF-8")
-                                               msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest)
-                                               msoLogger.debug("AAI request endpoint: " + delNetworkPolicyAAIRequest)
-
-                                               msoLogger.debug("invoking DELETE call to AAI")
-                                               msoLogger.debug("Sending DELETE call to AAI with Endpoint /n" + delNetworkPolicyAAIRequest)
-                                               APIResponse responseDel = aaiUriUtil.executeAAIDeleteCall(execution, delNetworkPolicyAAIRequest)
-                                               int returnCodeDel = responseDel.getStatusCode()
-                                               execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", returnCodeDel)
-                                               msoLogger.debug(" ***** AAI delete network policy Response Code, NetworkPolicy #" + counting + " : " + returnCodeDel)
-
-                                               if (isOneOf(returnCodeDel, 200, 201, 204)) {
-                                                       msoLogger.debug("The return code from deleting network policy is: "  + returnCodeDel)
-                                                       // This network policy was deleted from AAI successfully
-                                                       msoLogger.debug(" DelAAINetworkPolicy Success REST Response, , NetworkPolicy #" + counting + " : ")
-
+                                       AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY)
+                                       uri.queryParam("network-policy-fqdn", fqdn)
+                                       try {
+                                               Optional<NetworkPolicies> networkPolicies = getAAIClient().get(NetworkPolicies.class, uri)
+                                               if (networkPolicies.isPresent() && !networkPolicies.get().getNetworkPolicy().isEmpty()) {
+                                                       // This network policy FQDN exists in AAI - need to delete it now
+                                                       NetworkPolicy networkPolicy = networkPolicies.get().getNetworkPolicy().get(0)
+                                                       execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 200)
+                                                       // Retrieve the network policy id for this FQDN
+                                                       def networkPolicyId = networkPolicy.getNetworkPolicyId()
+                                                       logger.debug("Deleting network-policy with network-policy-id " + networkPolicyId)
+                                                       try {
+                                                               AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId)
+                                                               getAAIClient().delete(delUri)
+                                                               execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 200)
+                                                       } catch (Exception e) {
+                                                               execution.setVariable("DoDVfMod_aaiDeleteNetworkPolicyReturnCode", 500)
+                                                               String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + e.getMessage()
+                                                               logger.debug(delErrorMessage)
+                                                               exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+                                                       }
                                                } else {
-                                                               // aai all errors
-                                                               String delErrorMessage = "Unable to delete network-policy to AAI deleteNetworkPoliciesFromAAI - " + returnCodeDel
-                                                        msoLogger.debug(delErrorMessage)
-                                                        exceptionUtil.buildAndThrowWorkflowException(execution, 2500, delErrorMessage)
+                                                       execution.setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 404)
+                                                       // This network policy FQDN is not in AAI. No need to delete.
+                                                       logger.debug("The return code is: " + 404)
+                                                       logger.debug("This network policy FQDN is not in AAI: " + fqdn)
+                                                       logger.debug("Network policy FQDN is not in AAI")
                                                }
-                                       } else if (returnCode == 404) {
-                                               // This network policy FQDN is not in AAI. No need to delete.
-                                               msoLogger.debug("The return code is: "  + returnCode)
-                                               msoLogger.debug("This network policy FQDN is not in AAI: " + fqdn)
-                                               msoLogger.debug("Network policy FQDN is not in AAI")
-                                       } else {
-                                          if (aaiResponseAsString.contains("RESTFault")) {
-                                                  WorkflowException exceptionObject = exceptionUtil.MapAAIExceptionToWorkflowException(aaiResponseAsString, execution)
-                                                  execution.setVariable("WorkflowException", exceptionObject)
-                                                  throw new BpmnError("MSOWorkflowException")
-
-                                                  } else {
+                                       }catch(Exception e ) {
                                                                // aai all errors
-                                                               String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + returnCode
-                                                               msoLogger.debug(dataErrorMessage)
-                                                               exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
-
-                                                 }
+                                                               String dataErrorMessage = "Unexpected Response from deleteNetworkPoliciesFromAAI - " + e.getMessage()
+                                                               logger.debug(dataErrorMessage)
                                        }
-
-
-
                                } // end loop
-
-
                        } else {
-                                  msoLogger.debug("No contrail network policies to query/create")
-
+                                  logger.debug("No contrail network policies to query/create")
                        }
-
                } catch (BpmnError e) {
                        throw e;
-
                } catch (Exception ex) {
                        String exceptionMessage = "Bpmn error encountered in DoDeletVfModule flow. deleteNetworkPoliciesFromAAI() - " + ex.getMessage()
-                       msoLogger.debug(exceptionMessage)
+                       logger.debug(exceptionMessage)
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
                }
 
@@ -582,7 +545,7 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                        'execution=' + execution.getId() +
                        ')'
 
-               msoLogger.trace('Entered ' + method)
+               logger.trace('Entered ' + method)
 
                try {
                        def vnfId = execution.getVariable('vnfId')
@@ -609,19 +572,21 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                                """
                                updateAAIGenericVnfRequest = utils.formatXml(updateAAIGenericVnfRequest)
                                execution.setVariable(Prefix + 'updateAAIGenericVnfRequest', updateAAIGenericVnfRequest)
-                               msoLogger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
-                               msoLogger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
+                               logger.debug("updateAAIGenericVnfRequest : " + updateAAIGenericVnfRequest)
+                               logger.debug('Request for UpdateAAIGenericVnf:\n' + updateAAIGenericVnfRequest)
 
 
-                       msoLogger.trace('Exited ' + method)
+                       logger.trace('Exited ' + method)
                } catch (BpmnError e) {
                        throw e;
                } catch (Exception e) {
-                       msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+                       logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                                       'Caught exception in ' + method, "BPMN",
+                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
                        exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in prepUpdateAAIGenericVnf(): ' + e.getMessage())
                }
        }
-       
+
        /**
         * Using the vnfId and vfModuleId provided in the inputs,
         * query AAI to get the corresponding VF Module info.
@@ -635,71 +600,37 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
                def method = getClass().getSimpleName() + '.queryAAIVfModuleForStatus(' +
                        'execution=' + execution.getId() +
                        ')'
-               msoLogger.trace('Entered ' + method)
-               
+               logger.trace('Entered ' + method)
+
                execution.setVariable(Prefix + 'orchestrationStatus', '')
 
                try {
                        def vnfId = execution.getVariable('vnfId')
                        def vfModuleId = execution.getVariable('vfModuleId')
 
-                       AaiUtil aaiUriUtil = new AaiUtil(this)
-                       String  aai_uri = aaiUriUtil.getNetworkGenericVnfUri(execution)
-                       msoLogger.debug('AAI URI is: ' + aai_uri)
-
-                       String endPoint = UrnPropertiesReader.getVariable("aai.endpoint",execution) + "${aai_uri}/" + UriUtils.encode(vnfId, "UTF-8") +
-                                       "/vf-modules/vf-module/" + UriUtils.encode(vfModuleId, "UTF-8")
-                       msoLogger.debug("AAI endPoint: " + endPoint)
+                       AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId)
 
                        try {
-                               RESTConfig config = new RESTConfig(endPoint);
-                               def responseData = ''
-                               def aaiRequestId = UUID.randomUUID().toString()
-                               RESTClient client = new RESTClient(config).
-                                       addHeader('X-TransactionId', aaiRequestId).
-                                       addHeader('X-FromAppId', 'MSO').
-                                       addHeader('Content-Type', 'application/xml').
-                                       addHeader('Accept','application/xml');
-                               msoLogger.debug('sending GET to AAI endpoint \'' + endPoint + '\'')
-                               APIResponse response = client.httpGet()
-                               msoLogger.debug("createVfModule - invoking httpGet() to AAI")
-
-                               responseData = response.getResponseBodyAsString()
-                               if (responseData != null) {
-                                       msoLogger.debug("Received generic VNF data: " + responseData)
-
-                               }
-
-                               msoLogger.debug("deleteVfModule - queryAAIVfModule Response: " + responseData)
-                               msoLogger.debug("deleteVfModule - queryAAIVfModule ResponseCode: " + response.getStatusCode())
-
-                               execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponseCode', response.getStatusCode())
-                               execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponse', responseData)
-                               msoLogger.debug('Response code:' + response.getStatusCode())
-                               msoLogger.debug('Response:' + System.lineSeparator() + responseData)
+                Optional<org.onap.aai.domain.yang.VfModule> vfModule = getAAIClient().get(org.onap.aai.domain.yang.VfModule.class, uri);
                                // Retrieve VF Module info and its orchestration status; if not found, do nothing
-                               if (response.getStatusCode() == 200) {
-                                       // Parse the VNF record from A&AI to find base module info
-                                       msoLogger.debug('Parsing the VNF data to find orchestration status')
-                                       if (responseData != null) {
-                                               def vfModuleText = utils.getNodeXml(responseData, "vf-module")
-                                               //def xmlVfModule= new XmlSlurper().parseText(vfModuleText)
-                                               def orchestrationStatus = utils.getNodeText(vfModuleText, "orchestration-status")
-                                               execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus)
-                                               msoLogger.debug("Received orchestration status from A&AI: " + orchestrationStatus)
-                                               
-                                       }
-                               }
+                if (vfModule.isPresent()) {
+                    execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponseCode', 200)
+                    execution.setVariable(Prefix + 'queryAAIVfModuleForStatusResponse', vfModule.get())
+                    def orchestrationStatus = vfModule.get().getOrchestrationStatus()
+                    execution.setVariable(Prefix + "orchestrationStatus", orchestrationStatus)
+                    logger.debug("Received orchestration status from A&AI: " + orchestrationStatus)
+                }
                        } catch (Exception ex) {
-                               ex.printStackTrace()
-                               msoLogger.debug('Exception occurred while executing AAI GET:' + ex.getMessage())
+                               logger.debug('Exception occurred while executing AAI GET: {}', ex.getMessage(), ex)
                                exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'AAI GET Failed:' + ex.getMessage())
                        }
-                       msoLogger.trace('Exited ' + method)
+                       logger.trace('Exited ' + method)
                } catch (BpmnError e) {
                        throw e;
                } catch (Exception e) {
-                       msoLogger.error(MessageEnum.BPMN_GENERAL_EXCEPTION_ARG, 'Caught exception in ' + method, "BPMN", MsoLogger.getServiceName(), MsoLogger.ErrorCode.UnknownError, "Exception is:\n" + e);
+                       logger.error("{} {} {} {} {}", MessageEnum.BPMN_GENERAL_EXCEPTION_ARG.toString(),
+                                       'Caught exception in ' + method, "BPMN",
+                                       ErrorCode.UnknownError.getValue(), "Exception is:\n" + e);
                        exceptionUtil.buildAndThrowWorkflowException(execution, 1002, 'Error in queryAAIVfModuleForStatus(): ' + e.getMessage())
                }
        }
@@ -708,4 +639,4 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{
 
 
 
-}
\ No newline at end of file
+}