- if (DENY_CLNAME.equals(clName)) {
- response.setStatus("Deny");
- response.setAdvice(Collections.emptyMap());
- response.setObligations(Collections.emptyMap());
- response.setPolicies(Collections.emptyMap());
- return response;
+ response.setStatus(DENY_CLNAME.equals(clName) ? "Deny" : "Permit");
+ response.setAdvice(Collections.emptyMap());
+ response.setObligations(Collections.emptyMap());
+ response.setPolicies(Collections.emptyMap());
+ return response;
+ }
+
+ private DecisionResponse configureDecision(DecisionRequest req) {
+ var response = new DecisionResponse();
+ response.setPolicies(new HashMap<>());
+
+ Map<String, Object> resources = req.getResource();
+ var policyId = resources.get("policy-id");
+ if (policyId != null) {
+ String fileName = POLICY_CONFIG_OPER_PREFIX + policyId + ".json";
+ try {
+ var policyJson = ResourceUtils.getResourceAsString(fileName);
+ var toscaServiceTemplate = coder.decode(policyJson, ToscaServiceTemplate.class);
+ toscaServiceTemplate.getToscaTopologyTemplate().getPolicies()
+ .forEach(policyMap -> response.getPolicies().putAll(policyMap));
+ } catch (CoderException e) {
+ logger.warn("cannot decode policy file: {}", fileName, e);
+ response.setMessage("cannot decode policy");
+ } catch (NullPointerException e) {
+ logger.warn("cannot read policy simulator file", e);
+ response.setMessage("cannot read policy simulator file");
+ }