AT&T 1712 and 1802 release code
[so.git] / bpmn / MSOCommonBPMN / src / main / groovy / org / openecomp / mso / bpmn / common / scripts / RainyDayHandler.groovy
index 8b4fe10..0f7de9a 100644 (file)
@@ -25,13 +25,17 @@ import static org.apache.commons.lang3.StringUtils.*;
 \r
 import org.apache.commons.lang3.*\r
 import org.camunda.bpm.engine.delegate.BpmnError\r
-import org.camunda.bpm.engine.runtime.Execution\r
+import org.camunda.bpm.engine.delegate.DelegateExecution\r
 import org.json.JSONObject;\r
 import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor\r
 import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil\r
 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition\r
 import org.openecomp.mso.bpmn.core.json.JsonUtils\r
-import org.openecomp.mso.client.policy.PolicyDecision\r
+import org.openecomp.mso.client.policy.PolicyClient\r
+import org.openecomp.mso.client.policy.PolicyClientImpl\r
+import org.openecomp.mso.client.policy.entities.DictionaryData\r
+import org.openecomp.mso.client.policy.entities.PolicyDecision\r
+import org.openecomp.mso.client.policy.entities.Treatments\r
 import org.openecomp.mso.client.policy.PolicyRestClient\r
 \r
 \r
@@ -54,6 +58,7 @@ import groovy.json.*
  * @param - failedActivity\r
  * @param - errorCode\r
  * @param - errorText \r
+ * @param - vnfName\r
  *\r
  * Outputs:\r
  * @param - WorkflowException\r
@@ -67,7 +72,7 @@ public class RainyDayHandler extends AbstractServiceTaskProcessor {
        \r
        JsonUtils jsonUtils = new JsonUtils()\r
 \r
-       public void preProcessRequest (Execution execution) {\r
+       public void preProcessRequest (DelegateExecution execution) {\r
                def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
                String msg = ""\r
                utils.log("DEBUG"," ***** preProcessRequest of RainyDayHandler *****",  isDebugLogEnabled)\r
@@ -91,6 +96,9 @@ public class RainyDayHandler extends AbstractServiceTaskProcessor {
                        utils.log("DEBUG", "errorCode is: " + errorCode, isDebugLogEnabled)\r
                        def errorText = execution.getVariable("errorText")\r
                        utils.log("DEBUG", "errorText is: " + errorText, isDebugLogEnabled)\r
+                       String defaultPolicyDisposition = (String) execution.getVariable('URN_policy_default_disposition')\r
+                       utils.log("DEBUG", "defaultPolicyDisposition is: " + defaultPolicyDisposition, isDebugLogEnabled)\r
+                       execution.setVariable('defaultPolicyDisposition', defaultPolicyDisposition)\r
                        \r
                } catch (BpmnError e) {\r
                        throw e;\r
@@ -102,7 +110,7 @@ public class RainyDayHandler extends AbstractServiceTaskProcessor {
                utils.log("DEBUG"," ***** Exit preProcessRequest of RainyDayHandler *****",  isDebugLogEnabled)\r
        }\r
 \r
-       public void queryPolicy (Execution execution) {\r
+       public void queryPolicy (DelegateExecution execution) {\r
                def isDebugLogEnabled = execution.getVariable("isDebugLogEnabled")\r
                String msg = ""\r
                utils.log("DEBUG"," ***** queryPolicy of RainyDayHandler *****",  isDebugLogEnabled)\r
@@ -122,34 +130,55 @@ public class RainyDayHandler extends AbstractServiceTaskProcessor {
                        \r
                        utils.log("DEBUG", "Before querying policy", isDebugLogEnabled)\r
                        \r
-                       PolicyDecision decisionObject = null\r
-                       \r
-                       try {                   \r
-                               PolicyRestClient policyClient = new PolicyRestClient()\r
-                               utils.log("DEBUG", "Created policy client", isDebugLogEnabled)\r
-                               decisionObject = policyClient.getDecision(serviceType, vnfType, bbId, workStep, errorCode)\r
-                               utils.log("DEBUG", "Obtained decision object", isDebugLogEnabled)\r
-                       } catch(Exception e) {\r
-                               msg = "Exception in queryPolicy " + e.getMessage()\r
-                               utils.log("DEBUG", msg, isDebugLogEnabled)\r
-                               \r
-                       }\r
-                       \r
                        String decision = 'DENY'\r
-                       String disposition = "Abort"                    \r
-                       if (decisionObject != null) {\r
-                               decision = decisionObject.getDecision()\r
-                               disposition = decisionObject.getDetails()\r
-                               utils.log("DEBUG", "Obtained disposition from policy engine: " + disposition, isDebugLogEnabled)\r
+                       String disposition = "Abort"\r
+                       String defaultAllowedTreatments = "rollback, skip, manual, abort"\r
+                       \r
+                       String defaultPolicyDisposition = (String) execution.getVariable('defaultPolicyDisposition')\r
+                       if (defaultPolicyDisposition != null) {\r
+                               utils.log("DEBUG", "Setting disposition to the configured default instead of querying Policy: " + defaultPolicyDisposition, isDebugLogEnabled)\r
+                               disposition = defaultPolicyDisposition\r
+                               utils.log("DEBUG", "Setting default allowed treatments: " + defaultAllowedTreatments, isDebugLogEnabled)\r
+                               execution.setVariable("validResponses", defaultAllowedTreatments)\r
                        }\r
                        else {\r
-                               disposition = "Manual"\r
-                       }\r
-                       if (disposition == null) {\r
-                               disposition = "Manual"\r
+                       \r
+                               PolicyDecision decisionObject = null\r
+                       \r
+                               try {                   \r
+                                       PolicyClient policyClient = new PolicyClientImpl()\r
+                                       utils.log("DEBUG", "Created policy client", isDebugLogEnabled)\r
+                                       decisionObject = policyClient.getDecision(serviceType, vnfType, bbId, workStep, errorCode)\r
+                                       utils.log("DEBUG", "Obtained decision object", isDebugLogEnabled)\r
+                                       DictionaryData dictClient = policyClient.getAllowedTreatments(bbId, workStep)                                   \r
+                                       Treatments treatments = dictClient.getTreatments()\r
+                                       String validResponses = treatments.getString()\r
+                                       if (validResponses != null) {\r
+                                               validResponses = validResponses.toLowerCase()\r
+                                       }\r
+                                       utils.log("DEBUG", "Obtained validResponses: " + validResponses, isDebugLogEnabled)\r
+                                       execution.setVariable("validResponses", validResponses)\r
+                               \r
+                               } catch(Exception e) {\r
+                                       msg = "Exception in queryPolicy " + e.getMessage()\r
+                                       utils.log("DEBUG", msg, isDebugLogEnabled)                              \r
+                               }\r
+                       \r
+                                               \r
+                               if (decisionObject != null) {\r
+                                       decision = decisionObject.getDecision()\r
+                                       disposition = decisionObject.getDetails()\r
+                                       utils.log("DEBUG", "Obtained disposition from policy engine: " + disposition, isDebugLogEnabled)\r
+                               }\r
+                               else {\r
+                                       disposition = "Abort"\r
+                               }\r
+                               if (disposition == null) {\r
+                                       disposition = "Abort"\r
+                               }\r
                        }                       \r
-                       execution.setVariable("handlingCode", disposition)\r
-                       execution.setVariable("validResponses", "rollback, abort, skip, retry")\r
+                       execution.setVariable("handlingCode", disposition)                      \r
+                       \r
                        utils.log("DEBUG", "Disposition: "+ disposition, isDebugLogEnabled)\r
 \r
                } catch (BpmnError e) {\r