From 8c5ffd0eb1269ceeb9b19a2c274577fae6240840 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 22 Sep 2017 15:52:45 +0200 Subject: [PATCH] Add the target resource ID Add target resource ID in operational policy code as requested. It changes the UI, the Policy code, the model and the tests. Change-Id: Ie72badde55e7f8b5c2e5234099a09b95958205cf Issue-ID: CLAMP-55 Signed-off-by: Determe, Sebastien (sd378r) --- .../clds/client/req/OperationalPolicyReq.java | 39 ++-- .../onap/clamp/clds/model/prop/PolicyChain.java | 23 +- .../org/onap/clamp/clds/model/prop/PolicyItem.java | 33 ++- .../portfolios/PolicyWindow_properties.html | 245 +++++++++++---------- .../onap/clamp/clds/it/OperationPolicyReqIT.java | 89 ++++++++ .../clamp/clds/model/prop/ModelPropertiesTest.java | 5 + .../example/model-properties/modelBpmnProp.json | 6 + .../model-properties/modelBpmnPropWithGlobal.json | 3 +- src/test/resources/example/modelProp.json | 95 +++----- src/test/resources/example/modelPropForPolicy.json | 28 +++ .../operational-policy/yaml-policy-chain-1.yaml | 112 ++++++++++ .../operational-policy/yaml-policy-chain-2.yaml | 112 ++++++++++ 12 files changed, 567 insertions(+), 223 deletions(-) create mode 100644 src/test/java/org/onap/clamp/clds/it/OperationPolicyReqIT.java create mode 100644 src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml create mode 100644 src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml diff --git a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java index ad466ee7..a64bd717 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java @@ -66,6 +66,10 @@ public class OperationalPolicyReq { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyReq.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + private OperationalPolicyReq() { + + } + /** * Format Operational Policy attributes. * @@ -127,12 +131,16 @@ public class OperationalPolicyReq { String recipe = policyItem.getRecipe(); String maxRetries = String.valueOf(policyItem.getMaxRetries()); String retryTimeLimit = String.valueOf(policyItem.getRetryTimeLimit()); + String targetResourceId = String.valueOf(policyItem.getTargetResourceId()); logger.info("recipe=" + recipe); logger.info("maxRetries=" + maxRetries); logger.info("retryTimeLimit=" + retryTimeLimit); + logger.info("targetResourceId=" + targetResourceId); ruleAttributes.put("Recipe", recipe); ruleAttributes.put("MaxRetries", maxRetries); ruleAttributes.put("RetryTimeLimit", retryTimeLimit); + ruleAttributes.put("ResourceId", targetResourceId); + } else { logger.info("templateName=" + templateName); logger.info("operationTopic=" + operationTopic); @@ -189,24 +197,22 @@ public class OperationalPolicyReq { builder.addResource(vfcResources); // process each policy - HashMap policyObjMap = new HashMap<>(); + HashMap policyObjMap = new HashMap<>(); List policyItemList = orderParentFirst(policyChain.getPolicyItems()); - Target target = new Target(); - target.setType(TargetType.VM); - for (int i = 0; i < policyItemList.size(); i++) { - - org.onap.policy.controlloop.policy.Policy policyObj; - PolicyItem policyItem = policyItemList.get(i); + for (PolicyItem policyItem : policyItemList) { String policyName = policyItem.getRecipe() + " Policy"; - if (i == 0) { + Target target = new Target(); + target.setType(TargetType.VM); + target.setResourceID(policyItem.getTargetResourceId()); + Policy policyObj; + if (policyItemList.indexOf(policyItem) == 0) { String policyDescription = policyItem.getRecipe() + " Policy - the trigger (no parent) policy - created by CLDS"; policyObj = builder.setTriggerPolicy(policyName, policyDescription, refProp.getStringValue("op.policy.appc"), target, policyItem.getRecipe(), null, policyItem.getMaxRetries(), policyItem.getRetryTimeLimit()); } else { - org.onap.policy.controlloop.policy.Policy parentPolicyObj = policyObjMap - .get(policyItem.getParentPolicy()); + Policy parentPolicyObj = policyObjMap.get(policyItem.getParentPolicy()); String policyDescription = policyItem.getRecipe() + " Policy - triggered conditionally by " + parentPolicyObj.getName() + " - created by CLDS"; policyObj = builder.setPolicyForPolicyResult(policyName, policyDescription, @@ -269,14 +275,15 @@ public class OperationalPolicyReq { HashMap policyObjMap = new HashMap<>(); List policyItemList = addAOTSActorRecipe(refProp, global.getService(), policyChain.getPolicyItems()); - Target target = new Target(); - target.setType(TargetType.VM); + Policy lastPolicyObj = new Policy(); - for (int i = 0; i < policyItemList.size(); i++) { - org.onap.policy.controlloop.policy.Policy policyObj; - PolicyItem policyItem = policyItemList.get(i); + for (PolicyItem policyItem : policyItemList) { + Target target = new Target(); + target.setType(TargetType.VM); + target.setResourceID(policyItem.getTargetResourceId()); String policyName = policyItem.getRecipe() + " Policy"; - if (i == 0) { + Policy policyObj; + if (policyItemList.indexOf(policyItem) == 0) { // To set up time window payload for trigger policy Map payloadMap = new HashMap<>(); payloadMap.put("timeWindow", refProp.getStringValue("op.eNodeB.timeWindow")); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java b/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java index c8c2ef46..5264629f 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java @@ -23,14 +23,14 @@ package org.onap.clamp.clds.model.prop; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.JsonNode; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + /** * Parse Policy json properties. * @@ -42,24 +42,27 @@ import com.fasterxml.jackson.databind.JsonNode; * :"_id","value":["q2JmHD5"]},{"name":"parentPolicy","value":[""]}],[{"name": * "recipe","value":["rebuild"]},{"name":"maxRetries","value":["3"]},{"name": * "retryTimeLimit","value":["180"]},{"name":"_id","value":["0ZqHdrR"]},{"name": - * "parentPolicy","value":[""]}]]}],"PolicyTest2":[{"name":"pname","value": + * "parentPolicy","value":[""]},{"name": + * "targetResourceId","value":["Eace933104d443b496b8.nodes.heat.vpg"]}]]}], + * "PolicyTest2":[{"name":"pname","value": * "PolicyTest2"},{"name":"pid","value":"2"},{"name":"timeout","value":"345"},{ * "policyConfigurations":[[{"name":"recipe","value":["restart"]},{"name": * "maxRetries","value":["3"]},{"name":"retryTimeLimit","value":["180"]},{"name" * :"_id","value":["q2JmHD5"]},{"name":"parentPolicy","value":[""]}],[{"name": * "recipe","value":["rebuild"]},{"name":"maxRetries","value":["3"]},{"name": * "retryTimeLimit","value":["180"]},{"name":"_id","value":["0ZqHdrR"]},{"name": - * "parentPolicy","value":[""]}]]}]}} f + * "parentPolicy","value":[""]},{"name": + * "targetResourceId","value":["Eace933104d443b496b8.nodes.heat.vpg"]}]]}]}} f * */ public class PolicyChain { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyChain.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyChain.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - private String policyId; - private Integer timeout; - private List policyItems; + private String policyId; + private Integer timeout; + private List policyItems; public PolicyChain(JsonNode node) { diff --git a/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java b/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java index c84affef..5fc82983 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java @@ -23,12 +23,12 @@ package org.onap.clamp.clds.model.prop; -import java.util.List; - import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.databind.JsonNode; +import java.util.List; + /** * Parse policyConfigurations from Policy json properties. *

@@ -44,19 +44,21 @@ import com.fasterxml.jackson.databind.JsonNode; * ,{"name":"location","value":["san_diego"]},{"name":"resource","value":["vCTS" * ]},{"name":"onMaxRetriesLimit","value":[""]},{"name":"onTimeLimit","value":[ * ""]},{"name":"onOtherFailure","value":[""]},{"name":"policy_parent","value":[ - * "vf3RtPi"]}]]}] + * "vf3RtPi"]},{"name": + * "targetResourceId","value":["Eace933104d443b496b8.nodes.heat.vpg"]}]]}] */ public class PolicyItem implements Cloneable { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyItem.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyItem.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - private String id; - private String recipe; - private int maxRetries; - private int retryTimeLimit; - private String parentPolicy; - private List parentPolicyConditions; - private String actor; + private String id; + private String recipe; + private int maxRetries; + private int retryTimeLimit; + private String parentPolicy; + private List parentPolicyConditions; + private String actor; + private String targetResourceId; /** * Parse Policy given json node. @@ -70,6 +72,7 @@ public class PolicyItem implements Cloneable { retryTimeLimit = AbstractModelElement.getIntValueByName(node, "retryTimeLimit"); parentPolicy = AbstractModelElement.getValueByName(node, "parentPolicy"); parentPolicyConditions = AbstractModelElement.getValuesByName(node, "parentPolicyConditions"); + targetResourceId = AbstractModelElement.getValueByName(node, "targetResourceId"); } @@ -171,6 +174,14 @@ public class PolicyItem implements Cloneable { this.actor = actor; } + public String getTargetResourceId() { + return targetResourceId; + } + + public void setTargetResourceId(String targetResourceId) { + this.targetResourceId = targetResourceId; + } + @Override public Object clone() throws CloneNotSupportedException { return super.clone(); diff --git a/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html b/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html index 4f7a77d4..00e16751 100644 --- a/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html +++ b/src/main/resources/META-INF/resources/designer/partials/portfolios/PolicyWindow_properties.html @@ -23,14 +23,15 @@ -

+
- - +
+ +