diff options
7 files changed, 52 insertions, 357 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java index 891c7f845..911cd6add 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java @@ -24,10 +24,7 @@ package org.onap.clamp.clds.client.req.policy; import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFLogger.Level; import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -44,9 +41,7 @@ import org.onap.clamp.clds.model.properties.Global; import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.properties.PolicyChain; import org.onap.clamp.clds.model.properties.PolicyItem; -import org.onap.clamp.clds.model.properties.Tca; import org.onap.policy.api.AttributeType; -import org.onap.policy.controlloop.policy.OperationsAccumulateParams; import org.onap.policy.controlloop.policy.Policy; import org.onap.policy.controlloop.policy.PolicyResult; import org.onap.policy.controlloop.policy.Target; @@ -86,24 +81,10 @@ public class OperationalPolicyReq { Global global = prop.getGlobal(); prop.setCurrentModelElementId(modelElementId); prop.setPolicyUniqueId(policyChain.getPolicyId()); - String templateName = ""; - String operationTopic = ""; - String notificationTopic = ""; - String controller = ""; - Tca tca = prop.getType(Tca.class); - if (tca != null && tca.isFound()) { - if (global.getActionSet().equalsIgnoreCase("enbRecipe")) { - templateName = refProp.getStringValue("op.eNodeB.templateName", global.getService()); - operationTopic = refProp.getStringValue("op.eNodeB.operationTopic", global.getService()); - notificationTopic = refProp.getStringValue("op.eNodeB.notificationTopic", global.getService()); - controller = refProp.getStringValue("op.eNodeB.controller", global.getService()); - } else { - templateName = refProp.getStringValue("op.templateName", global.getService()); - operationTopic = refProp.getStringValue("op.operationTopic", global.getService()); - notificationTopic = refProp.getStringValue("op.notificationTopic", global.getService()); - controller = refProp.getStringValue("op.controller", global.getService()); - } - } + String templateName = refProp.getStringValue("op.templateName", global.getService()); + String operationTopic = refProp.getStringValue("op.operationTopic", global.getService()); + String notificationTopic = refProp.getStringValue("op.notificationTopic", global.getService()); + String controller = refProp.getStringValue("op.controller", global.getService()); String recipeTopic = refProp.getStringValue("op.recipeTopic", global.getService()); // ruleAttributes logger.info("templateName=" + templateName); @@ -133,8 +114,7 @@ public class OperationalPolicyReq { } else { logger.info("operationTopic=" + operationTopic); // format yaml - String yaml = (tca != null && tca.isFound()) ? formateNodeBYaml(refProp, prop, modelElementId, policyChain) - : formatYaml(refProp, prop, modelElementId, policyChain); + String yaml = formatYaml(refProp, prop, modelElementId, policyChain); ruleAttributes.put("OperationTopic", operationTopic); ruleAttributes.put("ControlLoopYaml", yaml); } @@ -235,74 +215,6 @@ public class OperationalPolicyReq { return URLEncoder.encode(results.getSpecification(), "UTF-8"); } - /** - * Format Operational Policy yaml. - * - * @param refProp - * @param prop - * @param modelElementId - * @param policyChain - * @return - * @throws BuilderException - * @throws UnsupportedEncodingException - */ - protected static String formateNodeBYaml(ClampProperties refProp, ModelProperties prop, String modelElementId, - PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException { - // get property objects - Global global = prop.getGlobal(); - prop.setCurrentModelElementId(modelElementId); - prop.setPolicyUniqueId(policyChain.getPolicyId()); - // convert values to SDC objects - Service service = new Service(global.getService()); - Resource[] vfResources = convertToResource(global.getResourceVf(), ResourceType.VF); - Resource[] vfcResources = convertToResource(global.getResourceVfc(), ResourceType.VFC); - // create builder - ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(prop.getControlName(), - policyChain.getTimeout(), service, vfResources); - builder.addResource(vfcResources); - // process each policy - Map<String, Policy> policyObjMap = new HashMap<>(); - List<PolicyItem> policyItemList = addAOTSActorRecipe(refProp, global.getService(), - policyChain.getPolicyItems()); - Policy lastPolicyObj = new Policy(); - for (PolicyItem policyItem : policyItemList) { - Target target = new Target(); - target.setType(TargetType.VM); - target.setResourceID(policyItem.getTargetResourceId()); - String policyName = policyItem.getRecipe() + " Policy"; - Policy policyObj; - if (policyItemList.indexOf(policyItem) == 0) { - // To set up time window payload for trigger policy - Map<String, String> payloadMap = new HashMap<>(); - payloadMap.put("timeWindow", refProp.getStringValue("op.eNodeB.timeWindow")); - String policyDescription = policyItem.getRecipe() - + " Policy - the trigger (no parent) policy - created by CLDS"; - policyObj = builder.setTriggerPolicy(policyName, policyDescription, policyItem.getActor(), target, - policyItem.getRecipe(), payloadMap, policyItem.getMaxRetries(), policyItem.getRetryTimeLimit()); - } else { - Policy parentPolicyObj = policyObjMap.get(policyItem.getParentPolicy()); - String policyDescription = policyItem.getRecipe() + " Policy - triggered conditionally by " - + parentPolicyObj.getName() + " - created by CLDS"; - policyObj = builder.setPolicyForPolicyResult(policyName, policyDescription, policyItem.getActor(), - target, policyItem.getRecipe(), null, policyItem.getMaxRetries(), - policyItem.getRetryTimeLimit(), parentPolicyObj.getId(), - convertToPolicyResult(policyItem.getParentPolicyConditions())); - lastPolicyObj = policyObj; - logger.info("policyObj.id=" + policyObj.getId() + "; parentPolicyObj.id=" + parentPolicyObj.getId()); - } - policyObjMap.put(policyItem.getId(), policyObj); - } - // To set up operations accumulate params - OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams(); - operationsAccumulateParams.setLimit(Integer.valueOf(refProp.getStringValue("op.eNodeB.limit"))); - operationsAccumulateParams.setPeriod(refProp.getStringValue("op.eNodeB.period")); - builder.addOperationsAccumulateParams(lastPolicyObj.getId(), operationsAccumulateParams); - // Build the specification - Results results = builder.buildSpecification(); - validate(results); - return URLEncoder.encode(results.getSpecification(), "UTF-8"); - } - private static void validate(Results results) { if (results.isValid()) { logger.info("results.getSpecification()=" + results.getSpecification()); @@ -319,47 +231,6 @@ public class OperationalPolicyReq { } /** - * Adding AOTS actor and other recipe for yaml - * - * @param inOrigList - * @return - */ - private static List<PolicyItem> addAOTSActorRecipe(ClampProperties refProp, String service, - List<PolicyItem> inOrigList) { - List<PolicyItem> outList = new ArrayList<>(); - try { - PolicyItem policyItem = inOrigList.get(0); - ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("op.eNodeB.recipe", service); - Iterator<JsonNode> itr = rootNode.get("eNodeBRecipes").elements(); - while (itr.hasNext()) { - PolicyItem policyItemObj = (PolicyItem) policyItem.clone(); - JsonNode recipeNode = itr.next(); - policyItemObj.setId(recipeNode.path("Recipe").asText()); - policyItemObj.setActor(recipeNode.path("Actor").asText()); - policyItemObj.setRecipe(recipeNode.path("Recipe").asText()); - policyItemObj.setParentPolicy(recipeNode.path("ParentPolicy").asText()); - if (!recipeNode.path("Retry").asText().isEmpty()) { - policyItemObj.setMaxRetries(Integer.parseInt(recipeNode.path("Retry").asText())); - } - if (!recipeNode.path("TimeLimit").asText().isEmpty()) { - policyItemObj.setRetryTimeLimit(Integer.parseInt(recipeNode.path("TimeLimit").asText())); - } - if (!recipeNode.path("PPConditions").asText().isEmpty()) { - List<String> parentPolicyConditions = new ArrayList<>(); - for (String ppCondition : recipeNode.path("PPConditions").asText().split(",")) { - parentPolicyConditions.add(ppCondition); - } - policyItemObj.setParentPolicyConditions(parentPolicyConditions); - } - outList.add(policyItemObj); - } - } catch (Exception e) { - logger.log(Level.ERROR, "Error", e); - } - return outList; - } - - /** * Order list of PolicyItems so that parents come before any of their * children * diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index d6be03c02..457ddbd44 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -168,17 +168,6 @@ clamp.config.op.operationTopic=APPC-CL clamp.config.op.notificationTopic=POLICY-CL-MGT
clamp.config.op.controller=amsterdam
clamp.config.op.policy.appc=APPC
-# by service: vSCP
-clamp.config.op.templateName.vSCP=ClosedLoopTemplate
-clamp.config.op.controller.vSCP=1607-f5fw
-clamp.config.op.eNodeB.templateName=ClosedLoopControlName
-clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00
-clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL
-clamp.config.op.eNodeB.controller=amsterdam
-clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json
-clamp.config.op.eNodeB.timeWindow=35
-clamp.config.op.eNodeB.limit=2
-clamp.config.op.eNodeB.period=10s
#
# Sdc service properties
clamp.config.sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8085/sdc/v1/catalog/
diff --git a/src/main/resources/clds/templates/op-eNodeB-recipe.json b/src/main/resources/clds/templates/op-eNodeB-recipe.json deleted file mode 100644 index 7098987a2..000000000 --- a/src/main/resources/clds/templates/op-eNodeB-recipe.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "eNodeBRecipes": [ - { - "Actor": "AOTS", - "Recipe": "checkENodeBTicketHours", - "ParentPolicy": "", - "PPConditions": "", - "Retry": "0", - "TimeLimit": "120" - }, - { - "Actor": "AOTS", - "Recipe": "checkEquipmentStatus", - "ParentPolicy": "checkENodeBTicketHours", - "PPConditions": "Success", - "Retry": "0", - "TimeLimit": "120" - }, - { - "Actor": "AOTS", - "Recipe": "checkEimStatus", - "ParentPolicy": "checkEquipmentStatus", - "PPConditions": "Success", - "Retry": "0", - "TimeLimit": "120" - }, - { - "Actor": "AOTS", - "Recipe": "checkMaintenanceWindow", - "ParentPolicy": "checkEimStatus", - "PPConditions": "Success", - "Retry": "0", - "TimeLimit": "120" - }, - { - "Actor": "SDNR", - "Recipe": "Reset", - "ParentPolicy": "checkMaintenanceWindow", - "PPConditions": "Success", - "Retry": "", - "TimeLimit": "" - } - ] -} diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java index 43f212cf3..a91da8a07 100644 --- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java @@ -74,20 +74,24 @@ public class OperationPolicyReqItCase { // now validate the Yaml, to do so we replace the dynamic ID by a known // key so that we can compare it String yaml = URLDecoder.decode(attributes.get(0).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8"); - yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: <generatedId>"); - yaml = yaml.replaceAll("id: (.*)", "id: <generatedId>"); - yaml = yaml.replaceAll("success: (.*)", "success: <generatedId>"); - // Remove this field as not always present (depends of policy api) - yaml = yaml.replaceAll(" pnf: null" + System.lineSeparator(), ""); - yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length()); + yaml = replaceGeneratedValues(yaml); assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-1.yaml"), yaml); yaml = URLDecoder.decode(attributes.get(1).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8"); + yaml = replaceGeneratedValues(yaml); + assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml); + } + + private String replaceGeneratedValues(String yaml) { yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: <generatedId>"); yaml = yaml.replaceAll("id: (.*)", "id: <generatedId>"); yaml = yaml.replaceAll("success: (.*)", "success: <generatedId>"); // Remove this field as not always present (depends of policy api) yaml = yaml.replaceAll(" pnf: null" + System.lineSeparator(), ""); + yaml = yaml.replaceAll("failure: (.*)", "failure: <generatedId>"); + yaml = yaml.replaceAll("failure_exception: (.*)", "failure_exception: <generatedId>"); + yaml = yaml.replaceAll("failure_retries: (.*)", "failure_retries: <generatedId>"); + yaml = yaml.replaceAll("failure_timeout: (.*)", "failure_timeout: <generatedId>"); yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length()); - assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml); + return yaml; } } diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index e0775ec67..535f54af0 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -166,17 +166,6 @@ clamp.config.op.operationTopic=APPC-CL clamp.config.op.notificationTopic=POLICY-CL-MGT
clamp.config.op.controller=amsterdam
clamp.config.op.policy.appc=APPC
-# by service: vSCP
-clamp.config.op.templateName.vSCP=ClosedLoopTemplate
-clamp.config.op.controller.vSCP=1607-f5fw
-clamp.config.op.eNodeB.templateName=ClosedLoopControlName
-clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00
-clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL
-clamp.config.op.eNodeB.controller=amsterdam
-clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json
-clamp.config.op.eNodeB.timeWindow=35
-clamp.config.op.eNodeB.limit=2
-clamp.config.op.eNodeB.period=10s
#
# Sdc service properties
clamp.config.sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/
diff --git a/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml b/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml index afe9fdd8e..fec0e1e6c 100644 --- a/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml +++ b/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml @@ -16,93 +16,36 @@ controlLoop: trigger_policy: <generatedId> version: 2.0.0 policies: -- actor: AOTS - description: checkENodeBTicketHours Policy - the trigger (no parent) policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION +- actor: APPC + description: restart Policy - the trigger (no parent) policy - created by CLDS + failure: <generatedId> + failure_exception: <generatedId> failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT + failure_retries: <generatedId> + failure_timeout: <generatedId> id: <generatedId> - name: checkENodeBTicketHours Policy - operationsAccumulateParams: null - payload: - timeWindow: '35' - recipe: checkENodeBTicketHours - retry: 0 - success: <generatedId> - target: - resourceID: resource-id - type: VM - timeout: 120 -- actor: AOTS - description: checkEquipmentStatus Policy - triggered conditionally by checkENodeBTicketHours Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION - failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT - id: <generatedId> - name: checkEquipmentStatus Policy - operationsAccumulateParams: null - payload: null - recipe: checkEquipmentStatus - retry: 0 - success: <generatedId> - target: - resourceID: resource-id - type: VM - timeout: 120 -- actor: AOTS - description: checkEimStatus Policy - triggered conditionally by checkEquipmentStatus Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION - failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT - id: <generatedId> - name: checkEimStatus Policy + name: restart Policy operationsAccumulateParams: null payload: null - recipe: checkEimStatus - retry: 0 + recipe: restart + retry: 3 success: <generatedId> target: resourceID: resource-id type: VM - timeout: 120 -- actor: AOTS - description: checkMaintenanceWindow Policy - triggered conditionally by checkEimStatus Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION + timeout: 180 +- actor: APPC + description: rebuild Policy - triggered conditionally by restart Policy - created by CLDS + failure: <generatedId> + failure_exception: <generatedId> failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT + failure_retries: <generatedId> + failure_timeout: <generatedId> id: <generatedId> - name: checkMaintenanceWindow Policy + name: rebuild Policy operationsAccumulateParams: null payload: null - recipe: checkMaintenanceWindow - retry: 0 - success: <generatedId> - target: - resourceID: resource-id - type: VM - timeout: 120 -- actor: SDNR - description: Reset Policy - triggered conditionally by checkMaintenanceWindow Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION - failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT - id: <generatedId> - name: Reset Policy - operationsAccumulateParams: - limit: 2 - period: 10s - payload: null - recipe: Reset + recipe: rebuild retry: 3 success: <generatedId> target: diff --git a/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml b/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml index afe9fdd8e..fec0e1e6c 100644 --- a/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml +++ b/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml @@ -16,93 +16,36 @@ controlLoop: trigger_policy: <generatedId> version: 2.0.0 policies: -- actor: AOTS - description: checkENodeBTicketHours Policy - the trigger (no parent) policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION +- actor: APPC + description: restart Policy - the trigger (no parent) policy - created by CLDS + failure: <generatedId> + failure_exception: <generatedId> failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT + failure_retries: <generatedId> + failure_timeout: <generatedId> id: <generatedId> - name: checkENodeBTicketHours Policy - operationsAccumulateParams: null - payload: - timeWindow: '35' - recipe: checkENodeBTicketHours - retry: 0 - success: <generatedId> - target: - resourceID: resource-id - type: VM - timeout: 120 -- actor: AOTS - description: checkEquipmentStatus Policy - triggered conditionally by checkENodeBTicketHours Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION - failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT - id: <generatedId> - name: checkEquipmentStatus Policy - operationsAccumulateParams: null - payload: null - recipe: checkEquipmentStatus - retry: 0 - success: <generatedId> - target: - resourceID: resource-id - type: VM - timeout: 120 -- actor: AOTS - description: checkEimStatus Policy - triggered conditionally by checkEquipmentStatus Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION - failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT - id: <generatedId> - name: checkEimStatus Policy + name: restart Policy operationsAccumulateParams: null payload: null - recipe: checkEimStatus - retry: 0 + recipe: restart + retry: 3 success: <generatedId> target: resourceID: resource-id type: VM - timeout: 120 -- actor: AOTS - description: checkMaintenanceWindow Policy - triggered conditionally by checkEimStatus Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION + timeout: 180 +- actor: APPC + description: rebuild Policy - triggered conditionally by restart Policy - created by CLDS + failure: <generatedId> + failure_exception: <generatedId> failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT + failure_retries: <generatedId> + failure_timeout: <generatedId> id: <generatedId> - name: checkMaintenanceWindow Policy + name: rebuild Policy operationsAccumulateParams: null payload: null - recipe: checkMaintenanceWindow - retry: 0 - success: <generatedId> - target: - resourceID: resource-id - type: VM - timeout: 120 -- actor: SDNR - description: Reset Policy - triggered conditionally by checkMaintenanceWindow Policy - created by CLDS - failure: FINAL_FAILURE - failure_exception: FINAL_FAILURE_EXCEPTION - failure_guard: FINAL_FAILURE_GUARD - failure_retries: FINAL_FAILURE_RETRIES - failure_timeout: FINAL_FAILURE_TIMEOUT - id: <generatedId> - name: Reset Policy - operationsAccumulateParams: - limit: 2 - period: 10s - payload: null - recipe: Reset + recipe: rebuild retry: 3 success: <generatedId> target: |