use of com.walmartlabs.concord.policyengine.PolicyEngine in project concord by walmartlabs.
the class ConcordExecutionContextTest method policyEngine.
private static PolicyEngine policyEngine() {
ProtectedTasksPolicy protectedTasksPolicy = mock(ProtectedTasksPolicy.class);
when(protectedTasksPolicy.isProtected(eq("task"))).thenReturn(true);
PolicyEngine policyEngine = mock(PolicyEngine.class);
when(policyEngine.getProtectedTasksPolicy()).thenReturn(protectedTasksPolicy);
return policyEngine;
}
use of com.walmartlabs.concord.policyengine.PolicyEngine in project concord by walmartlabs.
the class PolicyProcessor method process.
@Override
public Payload process(Chain chain, Payload payload) {
ProcessKey processKey = payload.getProcessKey();
PolicyEngine policy = payload.getHeader(Payload.POLICY);
if (policy == null) {
return chain.process(payload);
}
logManager.info(processKey, "Applying policies...");
try {
// TODO merge check results
for (PolicyApplier a : appliers) {
a.apply(payload, policy);
}
} catch (ProcessException e) {
throw e;
} catch (Exception e) {
logManager.error(processKey, "Error while applying policy '{}': {}", policy.policyNames(), e);
throw new ProcessException(processKey, "Policy '" + policy.policyNames() + "' error", e);
}
return chain.process(payload);
}
use of com.walmartlabs.concord.policyengine.PolicyEngine in project concord by walmartlabs.
the class ForkPolicyProcessor method process.
@Override
public Payload process(Chain chain, Payload payload) {
ProcessKey processKey = payload.getProcessKey();
UUID parentInstanceId = payload.getHeader(Payload.PARENT_INSTANCE_ID);
PolicyEngine policy = payload.getHeader(Payload.POLICY);
if (policy == null) {
return chain.process(payload);
}
logManager.info(processKey, "Applying fork policies...");
CheckResult<ForkDepthRule, Integer> result;
try {
result = policy.getForkDepthPolicy().check(() -> forkDepthDao.getDepth(parentInstanceId));
} catch (Exception e) {
log.error("process -> error", e);
throw new ProcessException(processKey, "Found fork policy check error", e);
}
if (!result.getDeny().isEmpty()) {
logManager.error(processKey, buildErrorMessage(result.getDeny()));
throw new ProcessException(processKey, "Found fork policy violations");
}
return chain.process(payload);
}
Aggregations