\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
* @param - failedActivity\r
* @param - errorCode\r
* @param - errorText \r
+ * @param - vnfName\r
*\r
* Outputs:\r
* @param - WorkflowException\r
\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
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
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
\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