Fix runtime bugs in bpmn groovy
[so.git] / bpmn / so-bpmn-infrastructure-common / src / main / groovy / org / onap / so / bpmn / infrastructure / scripts / DoCreateNetworkInstanceRollback.groovy
index 7e00f05..41a302f 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.
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.so.bpmn.infrastructure.scripts;
+package org.onap.so.bpmn.infrastructure.scripts
 
-import groovy.xml.XmlUtil
 
-import groovy.json.*
 import org.onap.so.bpmn.core.UrnPropertiesReader
 import org.onap.so.bpmn.core.json.JsonUtils
-import org.onap.so.logger.MsoLogger
-import org.onap.so.logger.MessageEnum
-
+import org.onap.so.client.HttpClient
+import org.onap.so.client.HttpClientFactory
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
 import org.onap.so.bpmn.common.scripts.AbstractServiceTaskProcessor
 import org.onap.so.bpmn.common.scripts.ExceptionUtil
 import org.onap.so.bpmn.common.scripts.NetworkUtils
 import org.onap.so.bpmn.common.scripts.SDNCAdapterUtils
 import org.onap.so.bpmn.common.scripts.VidUtils
 import org.onap.so.bpmn.core.WorkflowException
-import org.onap.so.rest.APIResponse;
-import org.onap.so.rest.RESTClient
-import org.onap.so.rest.RESTConfig
-
-import java.util.UUID;
+import org.onap.so.utils.TargetEntity
 
+import javax.ws.rs.core.Response
 import org.camunda.bpm.engine.delegate.BpmnError
 import org.camunda.bpm.engine.delegate.DelegateExecution
-import org.apache.commons.lang3.*
-import org.apache.commons.codec.binary.Base64;
-import org.springframework.web.util.UriUtils
 
 /**
  * This groovy class supports the <class>DoCreateNetworkInstance.bpmn</class> process.
  *
  */
 public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcessor {
-       private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, DoCreateNetworkInstanceRollback.class);
+    private static final Logger logger = LoggerFactory.getLogger( DoCreateNetworkInstanceRollback.class);
 
        String Prefix="CRENWKIR_"
        ExceptionUtil exceptionUtil = new ExceptionUtil()
@@ -61,7 +56,7 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
        SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils()
 
        def className = getClass().getSimpleName()
-       
+
        /**
         * This method is executed during the preProcessRequest task of the <class>DoCreateNetworkInstanceRollback.bpmn</class> process.
         * @param execution
@@ -73,7 +68,7 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                execution.setVariable(Prefix + "rollbackSDNCRequest", null)
                execution.setVariable(Prefix + "rollbackActivateSDNCRequest", null)
                execution.setVariable(Prefix + "WorkflowException", null)
-               
+
                execution.setVariable(Prefix + "rollbackNetworkRequest", "")
                execution.setVariable(Prefix + "rollbackNetworkResponse", "")
                execution.setVariable(Prefix + "rollbackNetworkReturnCode", "")
@@ -81,7 +76,7 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                execution.setVariable(Prefix + "rollbackSDNCRequest", "")
                execution.setVariable(Prefix + "rollbackSDNCResponse", "")
                execution.setVariable(Prefix + "rollbackSDNCReturnCode", "")
-               
+
                execution.setVariable(Prefix + "rollbackActivateSDNCRequest", "")
                execution.setVariable(Prefix + "rollbackActivateSDNCResponse", "")
                execution.setVariable(Prefix + "rollbackActivateSDNCReturnCode", "")
@@ -103,18 +98,18 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
        public void preProcessRequest (DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                execution.setVariable("prefix",Prefix)
-               
-               msoLogger.trace("Inside preProcessRequest() of " + className + ".groovy")
+
+               logger.trace("Inside preProcessRequest() of " + className + ".groovy")
 
                try {
                        // initialize flow variables
                        InitializeProcessVariables(execution)
-                       
+
                        // GET Incoming request/variables
                        String rollbackNetworkRequest = null
                        String rollbackSDNCRequest = null
                        String rollbackActivateSDNCRequest = null
-                       
+
                        // Partial Rollback
                        Map<String, String> rollbackData = execution.getVariable("rollbackData")
                        if (rollbackData != null && rollbackData instanceof Map) {
@@ -122,7 +117,7 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                        if(rollbackData.containsKey("rollbackSDNCRequest")) {
                                           rollbackSDNCRequest = rollbackData["rollbackSDNCRequest"]
                                        }
-                                       
+
                                        if(rollbackData.containsKey("rollbackNetworkRequest")) {
                                                rollbackNetworkRequest = rollbackData["rollbackNetworkRequest"]
                                        }
@@ -130,16 +125,16 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                        if(rollbackData.containsKey("rollbackActivateSDNCRequest")) {
                                           rollbackActivateSDNCRequest = rollbackData["rollbackActivateSDNCRequest"]
                                        }
-                                       
+
                        }
-                       
+
                        execution.setVariable(Prefix + "rollbackNetworkRequest", rollbackNetworkRequest)
                        execution.setVariable(Prefix + "rollbackSDNCRequest", rollbackSDNCRequest)
                        execution.setVariable(Prefix + "rollbackActivateSDNCRequest", rollbackActivateSDNCRequest)
-                       msoLogger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData"))
-                       
+                       logger.debug("'rollbackData': " + '\n' + execution.getVariable("rollbackData"))
+
                        String sdncVersion = execution.getVariable("sdncVersion")
-                       msoLogger.debug("sdncVersion? : " + sdncVersion)
+                       logger.debug("sdncVersion? : " + sdncVersion)
 
                        // PO Authorization Info / headers Authorization=
                        String basicAuthValuePO = UrnPropertiesReader.getVariable("mso.adapters.po.auth",execution)
@@ -147,11 +142,11 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                def encodedString = utils.getBasicAuth(basicAuthValuePO, UrnPropertiesReader.getVariable("mso.msoKey", execution))
                                execution.setVariable("BasicAuthHeaderValuePO",encodedString)
                                execution.setVariable("BasicAuthHeaderValueSDNC", encodedString)
-       
+
                        } catch (IOException ex) {
                                String exceptionMessage = "Exception Encountered in DoCreateNetworkInstance, PreProcessRequest() - "
                                String dataErrorMessage = exceptionMessage + " Unable to encode PO/SDNC user/password string - " + ex.getMessage()
-                               msoLogger.debug(dataErrorMessage )
+                               logger.debug(dataErrorMessage )
                                exceptionUtil.buildAndThrowWorkflowException(execution, 2500, dataErrorMessage)
                        }
 
@@ -160,7 +155,7 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                        } else {
                                execution.setVariable(Prefix + "WorkflowException", execution.getVariable("WorkflowException"))
                        }
-                       msoLogger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException"))
+                       logger.debug("*** WorkflowException : " + execution.getVariable(Prefix + "WorkflowException"))
                        if(execution.getVariable(Prefix + "WorkflowException") != null) {
                                // called by: DoCreateNetworkInstance, partial rollback
                                execution.setVariable(Prefix + "fullRollback", false)
@@ -168,88 +163,80 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                        } else {
                           // called by: Macro - Full Rollback, WorkflowException = null
                           execution.setVariable(Prefix + "fullRollback", true)
-                       
+
                        }
-                       msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
-                       
-               
+                       logger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+
+
                } catch (BpmnError e) {
                throw e;
-               
+
                } catch (Exception ex) {
                        // caught exception
                        String exceptionMessage = "Exception Encountered in PreProcessRequest() of " + className + ".groovy ***** : " + ex.getMessage()
-                       msoLogger.debug(exceptionMessage)
+                       logger.debug(exceptionMessage)
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
-               
+
                }
 
        }
-       
+
        public void callPONetworkAdapter (DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                execution.setVariable("prefix",Prefix)
 
-               msoLogger.trace("Inside callPONetworkAdapter() of " + className + "")
-               
+               logger.trace("Inside callPONetworkAdapter() of " + className + "")
+
                try {
                        String poUrl = UrnPropertiesReader.getVariable("mso.adapters.network.rest.endpoint",execution)
                        String rollbackSDNCRequest = execution.getVariable(Prefix + "rollbackSDNCRequest")
                        String networkId = utils.getNodeText(rollbackSDNCRequest, "network-id")
-               
+
                        String rollbackNetworkRequest  = execution.getVariable(Prefix + "rollbackNetworkRequest")
 
                        String urlRollbackPoNetwork = poUrl+ "/" + networkId + "/rollback"
-                       msoLogger.debug("'urlRollbackPoNetwork': " + urlRollbackPoNetwork)
+                       logger.debug("'urlRollbackPoNetwork': " + urlRollbackPoNetwork)
                        execution.setVariable(Prefix + "urlRollbackPoNetwork", urlRollbackPoNetwork)
 
-                       RESTConfig config = new RESTConfig(urlRollbackPoNetwork)
-                       RESTClient client = new RESTClient(config).
-                                                                            addHeader("Content-Type", "application/xml").
-                                                                         addAuthorizationHeader(execution.getVariable("BasicAuthHeaderValuePO"));
-
-                   APIResponse response = client.httpDelete(rollbackNetworkRequest)
-                       String responseCode = response.getStatusCode()
-                       String responseBody = response.getResponseBodyAsString() 
-               
-                       execution.setVariable(Prefix + "rollbackNetworkReturnCode", responseCode)
-                       execution.setVariable(Prefix + "rollbackNetworkResponse", responseBody)
-               
-                       msoLogger.debug(" Network Adapter rollback responseCode: " + responseCode)
-                       msoLogger.debug(" Network Adapter rollback responseBody: " + responseBody)
-               
-                       
+                       URL url = new URL(urlRollbackPoNetwork)
+                       HttpClient httpClient = new HttpClientFactory().newXmlClient(url, TargetEntity.OPENSTACK_ADAPTER)
+                       httpClient.addAdditionalHeader("Authorization", execution.getVariable("BasicAuthHeaderValuePO"))
+                       Response response = httpClient.delete(rollbackNetworkRequest)
+
+                       execution.setVariable(Prefix + "rollbackNetworkReturnCode", response.getStatus())
+
+                       logger.debug(" Network Adapter rollback responseCode: " + response.getStatus())
+
+
                } catch (Exception ex) {
                        String exceptionMessage = "Exception Encountered in callPONetworkAdapter() of DoCreateNetworkInstanceRollback flow - " + ex.getMessage()
-                       msoLogger.debug(exceptionMessage)
+                       logger.debug(exceptionMessage)
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
                }
-               
+
        }
-       
-       
+
+
        public void validateRollbackResponses (DelegateExecution execution) {
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                execution.setVariable("prefix",Prefix)
 
-               msoLogger.trace("Inside validateRollbackResponses() of DoCreateNetworkInstanceRollback")
-               
+               logger.trace("Inside validateRollbackResponses() of DoCreateNetworkInstanceRollback")
+
                try {
                        // validate PO network rollback response
                        String rollbackNetworkErrorMessages = ""
                        String rollbackNetworkReturnCode = "200"
                        if (execution.getVariable(Prefix + "rollbackNetworkRequest") != null) {
                                rollbackNetworkReturnCode = execution.getVariable(Prefix + "rollbackNetworkReturnCode")
-                               String rollbackNetworkResponse = execution.getVariable(Prefix + "rollbackNetworkResponse")
-                               msoLogger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode)
-                               msoLogger.debug(" NetworkRollback Response - " + rollbackNetworkResponse)
+                               logger.debug(" NetworkRollback Code - " + rollbackNetworkReturnCode)
                                if (rollbackNetworkReturnCode != "200") {
                                        rollbackNetworkErrorMessages = " + PO Network rollback failed. "
                                } else {
                                        rollbackNetworkErrorMessages = " + PO Network rollback completed."
                                }
                        }
-                       
+
                        // validate SDNC rollback response
                        String rollbackSdncErrorMessages = ""
                        String rollbackSDNCReturnCode = "200"
@@ -257,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") {
@@ -270,13 +257,13 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                                }
                                        } else {
                                                  rollbackSdncErrorMessages = " + SNDC assign rollback completed."
-                                       }  
+                                       }
                                 } else {
                                          rollbackSdncErrorMessages = " + SDNC assign rollback failed. "
                             }
-                               msoLogger.debug(" SDNC assign rollback Code - " + rollbackSDNCReturnCode)
-                               msoLogger.debug(" SDNC assign rollback  Response - " + rollbackSDNCResponse)
-                       }       
+                               logger.debug(" SDNC assign rollback Code - " + rollbackSDNCReturnCode)
+                               logger.debug(" SDNC assign rollback  Response - " + rollbackSDNCResponse)
+                       }
 
                        // validate SDNC activate rollback response
                        String rollbackActivateSdncErrorMessages = ""
@@ -301,17 +288,17 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                } else {
                                          rollbackActivateSdncErrorMessages = " + SDNC activate rollback failed. "
                                }
-                               msoLogger.debug(" SDNC activate rollback Code - " + rollbackActivateSDNCReturnCode)
-                               msoLogger.debug(" SDNC activate rollback  Response - " + rollbackActivateSDNCResponse)
-                       }       
+                               logger.debug(" SDNC activate rollback Code - " + rollbackActivateSDNCReturnCode)
+                               logger.debug(" SDNC activate rollback  Response - " + rollbackActivateSDNCResponse)
+                       }
 
 
                        String statusMessage = ""
                        int errorCode = 7000
-                       msoLogger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
-                       if (execution.getVariable(Prefix + "fullRollback") == false) { 
-                               // original WorkflowException, 
-                               WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException") 
+                       logger.debug("*** fullRollback? : " + execution.getVariable(Prefix + "fullRollback"))
+                       if (execution.getVariable(Prefix + "fullRollback") == false) {
+                               // original WorkflowException,
+                               WorkflowException wfe = execution.getVariable(Prefix + "WorkflowException")
                                if (wfe != null) {
                                   // rollback due to failure in DoCreate - Partial rollback
                                   statusMessage = wfe.getErrorMessage()
@@ -325,19 +312,19 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200" && rollbackActivateSDNCReturnCode == "200") {
                                        execution.setVariable("rolledBack", true)
                                        execution.setVariable("wasDeleted", true)
-                                       
+
                                } else {
                                        execution.setVariable("rolledBack", false)
                                        execution.setVariable("wasDeleted", true)
                                }
 
                                statusMessage = statusMessage + rollbackActivateSdncErrorMessages + rollbackNetworkErrorMessages + rollbackSdncErrorMessages
-                               msoLogger.debug("Final DoCreateNetworkInstanceRollback status message: " + statusMessage)
+                               logger.debug("Final DoCreateNetworkInstanceRollback status message: " + statusMessage)
                                String processKey = getProcessKey(execution);
                                WorkflowException exception = new WorkflowException(processKey, errorCode, statusMessage);
                                execution.setVariable("workflowException", exception);
-                               
-                       } else { 
+
+                       } else {
                                // rollback due to failures in Main flow (Macro) - Full rollback
                                // WorkflowException = null
                            if (rollbackNetworkReturnCode == "200" && rollbackSDNCReturnCode == "200" && rollbackActivateSDNCReturnCode == "200") {
@@ -345,20 +332,20 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
                                        execution.setVariable("rollbackError", false)
                            } else {
                                    String exceptionMessage = "Network Create Rollback was not Successful. "
-                    msoLogger.debug(exceptionMessage)
+                    logger.debug(exceptionMessage)
                                        execution.setVariable("rollbackSuccessful", false)
                                    execution.setVariable("rollbackError", true)
                                        exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
                                        throw new BpmnError("MSOWorkflowException")
                            }
-                                 
-                       } 
-                       
+
+                       }
+
 
                } catch (Exception ex) {
                        String errorMessage = "See Previous Camunda flows for cause of Error: Undetermined Exception."
                        String exceptionMessage = " Bpmn error encountered in DoCreateNetworkInstanceRollback flow. validateRollbackResponses() - " + errorMessage + ": " + ex.getMessage()
-                       msoLogger.debug(exceptionMessage)
+                       logger.debug(exceptionMessage)
                        exceptionUtil.buildWorkflowException(execution, 7000, exceptionMessage)
 
                }
@@ -370,24 +357,24 @@ public class DoCreateNetworkInstanceRollback extends AbstractServiceTaskProcesso
        // *******************************
 
 
-       
+
        public void processJavaException(DelegateExecution execution){
                def isDebugEnabled=execution.getVariable("isDebugLogEnabled")
                execution.setVariable("prefix",Prefix)
-               
+
                try{
-                       msoLogger.debug("Caught a Java Exception in " + Prefix)
-                       msoLogger.debug("Started processJavaException Method")
-                       msoLogger.debug("Variables List: " + execution.getVariables())
+                       logger.debug("Caught a Java Exception in " + Prefix)
+                       logger.debug("Started processJavaException Method")
+                       logger.debug("Variables List: " + execution.getVariables())
                        execution.setVariable("UnexpectedError", "Caught a Java Lang Exception - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
                        exceptionUtil.buildWorkflowException(execution, 500, "Caught a Java Lang Exception")
-                       
+
                }catch(Exception e){
-                       msoLogger.debug("Caught Exception during processJavaException Method: " + e)
+                       logger.debug("Caught Exception during processJavaException Method: " + e)
                        execution.setVariable("UnexpectedError", "Exception in processJavaException method - " + Prefix)  // Adding this line temporarily until this flows error handling gets updated
                        exceptionUtil.buildWorkflowException(execution, 500, "Exception in processJavaException method" + Prefix)
                }
-               msoLogger.debug("Completed processJavaException Method in " + Prefix)
+               logger.debug("Completed processJavaException Method in " + Prefix)
        }
 
 }