1710 Rebase - Second Attempt
[so.git] / bpmn / MSOInfrastructureBPMN / src / main / groovy / org / openecomp / mso / bpmn / infrastructure / scripts / DoCreateVnfAndModulesRollback.groovy
index 7b9bed3..84546e1 100644 (file)
@@ -31,8 +31,8 @@ import static org.apache.commons.lang3.StringUtils.*;
 \r
 import org.openecomp.mso.bpmn.core.json.JsonUtils\r
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor\r
-import org.openecomp.mso.bpmn.common.scripts.CatalogDbUtils\r
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil\r
+import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils\r
 import org.openecomp.mso.bpmn.common.scripts.VidUtils\r
 import org.openecomp.mso.bpmn.core.RollbackData\r
 import org.openecomp.mso.bpmn.core.WorkflowException\r
@@ -63,12 +63,46 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor {
                try{\r
                        // Get Rollback Variables\r
                        \r
-                       def rollbackData = execution.getVariable("RollbackData")\r
+                       def rollbackData = execution.getVariable("rollbackData")\r
                        utils.log("DEBUG", "Incoming RollbackData is: " + rollbackData.toString(), isDebugEnabled)\r
+                       execution.setVariable("rolledBack", null)\r
+                       execution.setVariable("rollbackError", null)\r
+                       \r
+                       if (execution.getVariable("disableRollback").equals("true" ))\r
+                       {\r
+                               execution.setVariable("skipRollback", true)\r
+                       }\r
+\r
                        String vnfId = rollbackData.get("VNF", "vnfId")\r
                        utils.log("DEBUG", "Rollback vnfId is: " + vnfId, isDebugEnabled)\r
                        execution.setVariable("DCVAMR_vnfId", vnfId)\r
                        \r
+                       execution.setVariable("mso-request-id", execution.getVariable("msoRequestId"))\r
+                       \r
+                       execution.setVariable("DCVAMR_rollbackSDNCAssign", rollbackData.get("VNF", "rollbackSDNCAssign"))\r
+                       execution.setVariable("DCVAMR_rollbackSDNCActivate", rollbackData.get("VNF", "rollbackSDNCActivate"))\r
+                       execution.setVariable("DCVAMR_rollbackVnfCreate", rollbackData.get("VNF", "rollbackVnfCreate"))\r
+                       \r
+                       String sdncCallbackUrl = rollbackData.get("VNF", "sdncCallbackUrl")\r
+                       utils.log("DEBUG", "Rollback sdncCallbackUrl is: " + sdncCallbackUrl, isDebugEnabled)\r
+                       execution.setVariable("DCVAMR_sdncCallbackUrl", sdncCallbackUrl)\r
+                       \r
+                       String tenantId= rollbackData.get("VNF", "tenantId")\r
+                       utils.log("DEBUG", "Rollback tenantId is: " + tenantId, isDebugEnabled)\r
+                       execution.setVariable("DCVAMR_tenantId", tenantId)\r
+                       \r
+                       String source= rollbackData.get("VNF", "source")\r
+                       utils.log("DEBUG", "Rollback source is: " + source, isDebugEnabled)\r
+                       execution.setVariable("DCVAMR_source", source)\r
+                       \r
+                       String serviceInstanceId = rollbackData.get("VNF", "serviceInstanceId")\r
+                       utils.log("DEBUG", "Rollback serviceInstanceId is: " + serviceInstanceId, isDebugEnabled)\r
+                       execution.setVariable("DCVAMR_serviceInstanceId", serviceInstanceId)\r
+                       \r
+                       String cloudSiteId = rollbackData.get("VNF", "cloudSiteId")\r
+                       utils.log("DEBUG", "Rollback cloudSiteId is: " + cloudSiteId, isDebugEnabled)\r
+                       execution.setVariable("DCVAMR_cloudSiteId", cloudSiteId)\r
+                       \r
                        def numOfAddOnModulesString = rollbackData.get("VNFANDMODULES", "numOfCreatedAddOnModules")\r
                        int numOfAddOnModules = 0\r
                        if (numOfAddOnModulesString != null) {\r
@@ -105,7 +139,7 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor {
                \r
                try {\r
                        \r
-                       def rollbackData = execution.getVariable("RollbackData")\r
+                       def rollbackData = execution.getVariable("rollbackData")\r
                        \r
                        def vfModuleRollbackData = new RollbackData()\r
                        \r
@@ -137,17 +171,193 @@ class DoCreateVnfAndModulesRollback extends AbstractServiceTaskProcessor {
                def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
                execution.setVariable("prefix", Prefix)\r
                logDebug(" ======== STARTED postProcessCreateVfModuleRollback ======== ", isDebugLogEnabled)\r
+               def rolledBack = false\r
                \r
-               try {                   \r
+               try {\r
+                       rolledBack = execution.getVariable("DCVM_rolledBack")\r
                        def numOfModulesToDelete = execution.getVariable("DCVAMR_numOfModulesToDelete")\r
                        execution.setVariable("DCVAMR_numOfModulesToDelete", numOfModulesToDelete - 1)          \r
                }catch(Exception e){\r
                        utils.log("ERROR", "Exception Occured Processing postProcessCreateVfModuleRollback. Exception is:\n" + e, isDebugLogEnabled)\r
                        exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during postProcessCreateVfModuleRollback Method:\n" + e.getMessage())\r
                }\r
+               if (rolledBack == false) {\r
+                       logDebug("Failure on DoCreateVfModuleRollback", isDebugLogEnabled)\r
+                       utils.log("ERROR", "Unsuccessful rollback of DoCreateVfModule")\r
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during rollback of DoCreateVfModule")\r
+               }\r
                logDebug("======== COMPLETED postProcessCreateVfModuleRollback ======== ", isDebugLogEnabled)\r
        }\r
        \r
        \r
+       public void preProcessSDNCDeactivateRequest(Execution execution){\r
+               def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
+               execution.setVariable("prefix", Prefix)\r
+               logDebug(" ======== STARTED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)\r
+               def vnfId = execution.getVariable("vnfId")\r
+               def serviceInstanceId = execution.getVariable("serviceInstanceId")\r
+\r
+               try{\r
+                       //Build SDNC Request\r
+                       \r
+                       String deactivateSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "deactivate")\r
+\r
+                       deactivateSDNCRequest = utils.formatXml(deactivateSDNCRequest)\r
+                       execution.setVariable(Prefix + "deactivateSDNCRequest", deactivateSDNCRequest)\r
+                       logDebug("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest, isDebugLogEnabled)\r
+                       utils.logAudit("Outgoing DeactivateSDNCRequest is: \n" + deactivateSDNCRequest)\r
+\r
+               }catch(Exception e){\r
+                       utils.log("ERROR", "Exception Occured Processing preProcessSDNCDeactivateRequest. Exception is:\n" + e, isDebugLogEnabled)\r
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during preProcessSDNCDeactivateRequest Method:\n" + e.getMessage())\r
+               }\r
+               logDebug("======== COMPLETED preProcessSDNCDeactivateRequest ======== ", isDebugLogEnabled)\r
+       }\r
+       \r
+       public void preProcessSDNCUnassignRequest(Execution execution) {\r
+               def method = getClass().getSimpleName() + '.preProcessSDNCUnassignRequest(' +\r
+                       'execution=' + execution.getId() +\r
+                       ')'\r
+               def isDebugLogEnabled = execution.getVariable('isDebugLogEnabled')\r
+               logDebug('Entered ' + method, isDebugLogEnabled)\r
+               execution.setVariable("prefix", Prefix)\r
+               logDebug(" ======== STARTED preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)\r
+               try{\r
+                       String vnfId = execution.getVariable("vnfId")\r
+                       String serviceInstanceId = execution.getVariable("serviceInstanceId")\r
+\r
+                       String unassignSDNCRequest = buildSDNCRequest(execution, serviceInstanceId, "unassign")\r
+\r
+                       execution.setVariable(Prefix + "unassignSDNCRequest", unassignSDNCRequest)\r
+                       logDebug("Outgoing UnassignSDNCRequest is: \n" + unassignSDNCRequest, isDebugLogEnabled)\r
+                       utils.logAudit("Outgoing UnassignSDNCRequest is: \n"  + unassignSDNCRequest)\r
+\r
+               }catch(Exception e){\r
+                       log.debug("Exception Occured Processing preProcessSDNCUnassignRequest. Exception is:\n" + e, isDebugLogEnabled)\r
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occured during  preProcessSDNCUnassignRequest Method:\n" + e.getMessage())\r
+               }\r
+               logDebug("======== COMPLETED  preProcessSDNCUnassignRequest Process ======== ", isDebugLogEnabled)\r
+       }\r
+       \r
+       public String buildSDNCRequest(Execution execution, String svcInstId, String action){\r
+               \r
+                               String uuid = execution.getVariable('testReqId') // for junits\r
+                               if(uuid==null){\r
+                                       uuid = execution.getVariable("msoRequestId") + "-" +    System.currentTimeMillis()\r
+                               }\r
+                               def callbackURL = execution.getVariable(Prefix + "sdncCallbackUrl")\r
+                               def requestId = execution.getVariable("msoRequestId")                           \r
+                               def tenantId = execution.getVariable(Prefix + "tenantId")\r
+                               def source = execution.getVariable(Prefix + "source")\r
+                               def vnfId = execution.getVariable(Prefix + "vnfId")\r
+                               def serviceInstanceId = execution.getVariable(Prefix + "serviceInstanceId")\r
+                               def cloudSiteId = execution.getVariable(Prefix + "cloudSiteId")\r
+                               \r
+                               String sdncRequest =\r
+                               """<sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:ns5="http://org.openecomp/mso/request/types/v1"\r
+                                                                                                       xmlns:sdncadapterworkflow="http://org.openecomp/mso/workflow/schema/v1"\r
+                                                                                                       xmlns:sdncadapter="http://org.openecomp.mso/workflow/sdnc/adapter/schema/v1">\r
+          <sdncadapter:RequestHeader>\r
+                               <sdncadapter:RequestId>${uuid}</sdncadapter:RequestId>\r
+                               <sdncadapter:SvcInstanceId>${svcInstId}</sdncadapter:SvcInstanceId>\r
+                               <sdncadapter:SvcAction>${action}</sdncadapter:SvcAction>\r
+                               <sdncadapter:SvcOperation>vnf-topology-operation</sdncadapter:SvcOperation>\r
+                               <sdncadapter:CallbackUrl>${callbackURL}</sdncadapter:CallbackUrl>\r
+                               <sdncadapter:MsoAction>generic-resource</sdncadapter:MsoAction>\r
+               </sdncadapter:RequestHeader>\r
+       <sdncadapterworkflow:SDNCRequestData>\r
+               <request-information>\r
+                       <request-id>${requestId}</request-id>\r
+                       <request-action>DeleteVnfInstance</request-action>\r
+                       <source>${source}</source>\r
+                       <notification-url/>\r
+                       <order-number/>\r
+                       <order-version/>\r
+               </request-information>\r
+               <service-information>\r
+                       <service-id/>\r
+                       <subscription-service-type/>                    \r
+                       <service-instance-id>${serviceInstanceId}</service-instance-id>\r
+                       <global-customer-id/>\r
+               </service-information>\r
+               <vnf-information>\r
+                       <vnf-id>${vnfId}</vnf-id>\r
+                       <vnf-type/>                     \r
+               </vnf-information>\r
+               <vnf-request-input>                     \r
+                       <vnf-name/>\r
+                       <tenant>${tenantId}</tenant>\r
+                       <aic-cloud-region>${cloudSiteId}</aic-cloud-region>                     \r
+               </vnf-request-input>\r
+       </sdncadapterworkflow:SDNCRequestData>\r
+       </sdncadapterworkflow:SDNCAdapterWorkflowRequest>"""\r
+               \r
+                       utils.logAudit("sdncRequest:  " + sdncRequest)\r
+                       return sdncRequest\r
+       }\r
+               \r
+       public void validateSDNCResponse(Execution execution, String response, String method){\r
+               def isDebugLogEnabled=execution.getVariable("isDebugLogEnabled")\r
+               execution.setVariable("prefix",Prefix)\r
+               logDebug(" *** STARTED ValidateSDNCResponse Process*** ", isDebugLogEnabled)\r
+\r
+               WorkflowException workflowException = execution.getVariable("WorkflowException")\r
+               boolean successIndicator = execution.getVariable("SDNCA_SuccessIndicator")\r
+\r
+               utils.logAudit("workflowException: " + workflowException)\r
+\r
+               SDNCAdapterUtils sdncAdapterUtils = new SDNCAdapterUtils(this)\r
+               sdncAdapterUtils.validateSDNCResponse(execution, response, workflowException, successIndicator)\r
+\r
+               utils.logAudit("SDNCResponse: " + response)\r
+\r
+               String sdncResponse = response\r
+               if(execution.getVariable(Prefix + 'sdncResponseSuccess') == true){\r
+                       logDebug("Received a Good Response from SDNC Adapter for " + method + " SDNC Call.  Response is: \n" + sdncResponse, isDebugLogEnabled)\r
+               }else{\r
+                       logDebug("Received a BAD Response from SDNC Adapter for " + method + " SDNC Call.", isDebugLogEnabled)\r
+                       throw new BpmnError("MSOWorkflowException")\r
+               }\r
+               logDebug(" *** COMPLETED ValidateSDNCResponse Process*** ", isDebugLogEnabled)\r
+       }\r
+       \r
+       public void setSuccessfulRollbackStatus (Execution execution){\r
+               def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
+               execution.setVariable("prefix", Prefix)\r
+               logDebug(" ======== STARTED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)\r
+       \r
+               try{\r
+                       // Set rolledBack to true, rollbackError to null\r
+                       execution.setVariable("rolledBack", true)\r
+                       execution.setVariable("rollbackError", null)\r
+       \r
+               }catch(Exception e){\r
+                       utils.log("ERROR", "Exception Occured Processing setSuccessfulRollbackStatus. Exception is:\n" + e, isDebugLogEnabled)\r
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setSuccessfulRollbackStatus Method:\n" + e.getMessage())\r
+               }\r
+               logDebug("======== COMPLETED setSuccessfulRollbackStatus ======== ", isDebugLogEnabled)\r
+       }\r
+       \r
+       public void setFailedRollbackStatus (Execution execution){\r
+               def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
+               execution.setVariable("prefix", Prefix)\r
+               logDebug(" ======== STARTED setFailedRollbackStatus ======== ", isDebugLogEnabled)\r
+       \r
+               try{\r
+                       // Set rolledBack to false, rollbackError to actual value, rollbackData to null\r
+                       execution.setVariable("rolledBack", false)\r
+                       def rollbackError = execution.getVariable("rollbackError")\r
+                       if (rollbackError == null) {\r
+                               execution.setVariable("rollbackError", 'Caught exception in DoCreateVnfAndModulesRollback')\r
+                       }\r
+                       execution.setVariable("rollbackData", null)\r
+       \r
+               }catch(Exception e){\r
+                       utils.log("ERROR", "Exception Occured Processing setFailedRollbackStatus. Exception is:\n" + e, isDebugLogEnabled)\r
+                       exceptionUtil.buildAndThrowWorkflowException(execution, 1002, "Error Occurred during setFailedRollbackStatus Method:\n" + e.getMessage())\r
+               }\r
+               logDebug("======== COMPLETED setFailedRollbackStatus ======== ", isDebugLogEnabled)\r
+       }\r
+       \r
        \r
 }\r