diff options
author | Ravindra Bakkamanthala <rb7147@att.com> | 2017-05-23 14:56:12 -0400 |
---|---|---|
committer | Ravindra Bakkamanthala <rb7147@att.com> | 2017-05-23 16:49:56 -0400 |
commit | 87c95be02a8a4d77e165dede90777e811b59dcae (patch) | |
tree | 4712199fc3520b530dda0c4d3b074c327df547f2 /ECOMP-ControlloopPolicy/src/main/java | |
parent | 7e547eaa55920dfbc9691eab33bb728395b50cf2 (diff) |
Commit includes ControlLoopPolicy API and bugfixes
Change-Id: I3e18bb8b4c31a0d908bb0cff4c85e2a3fb450a63
Signed-off-by: Ravindra Bakkamanthala <rb7147@att.com>
Diffstat (limited to 'ECOMP-ControlloopPolicy/src/main/java')
21 files changed, 971 insertions, 454 deletions
diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/CompilerException.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/CompilerException.java index 7c124d5fd..78f30570c 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/CompilerException.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/CompilerException.java @@ -25,6 +25,7 @@ public class CompilerException extends Exception { private static final long serialVersionUID = -7262217239867898601L; public CompilerException() { + //Empty Constructor } public CompilerException(String message) { diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/ControlLoopCompiler.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/ControlLoopCompiler.java index fca229242..799371a2a 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/ControlLoopCompiler.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/compiler/ControlLoopCompiler.java @@ -21,15 +21,19 @@ package org.openecomp.policy.controlloop.compiler; import java.io.InputStream; +import java.io.Serializable; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.jgrapht.DirectedGraph; import org.jgrapht.graph.ClassBasedEdgeFactory; import org.jgrapht.graph.DefaultEdge; import org.jgrapht.graph.DirectedMultigraph; +import org.openecomp.policy.common.logging.flexlogger.FlexLogger; +import org.openecomp.policy.common.logging.flexlogger.Logger; import org.openecomp.policy.controlloop.policy.ControlLoop; import org.openecomp.policy.controlloop.policy.ControlLoopPolicy; import org.openecomp.policy.controlloop.policy.FinalResult; @@ -43,16 +47,18 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; public class ControlLoopCompiler { + private static Logger LOGGER = FlexLogger.getLogger(ControlLoopCompiler.class.getName()); public static ControlLoopPolicy compile(ControlLoopPolicy policy, ControlLoopCompilerCallback callback) throws CompilerException { // // Ensure the control loop is sane // - validateControlLoop(policy.controlLoop, callback); + validateControlLoop(policy.getControlLoop(), callback); // // Validate the policies // validatePolicies(policy, callback); + return policy; } @@ -69,25 +75,18 @@ public class ControlLoopCompiler { } private static void validateControlLoop(ControlLoop controlLoop, ControlLoopCompilerCallback callback) throws CompilerException { - if (controlLoop == null) { - if (callback != null) { - callback.onError("controlLoop cannot be null"); - } + if (controlLoop == null && callback != null) { + callback.onError("controlLoop cannot be null"); } - if (controlLoop.controlLoopName == null | controlLoop.controlLoopName.length() < 1) { - if (callback != null) { - callback.onError("Missing controlLoopName"); - } + if ((controlLoop.getControlLoopName() == null || controlLoop.getControlLoopName().length() < 1) && callback != null) { + callback.onError("Missing controlLoopName"); } - if (! controlLoop.version.contentEquals(ControlLoop.VERSION)) { - if (callback != null) { - callback.onError("Unsupported version for this compiler"); - } + if ((!controlLoop.getVersion().contentEquals(ControlLoop.getVERSION())) && callback != null) { + callback.onError("Unsupported version for this compiler"); } - if (controlLoop.trigger_policy == null || controlLoop.trigger_policy.length() < 1) { + if (controlLoop.getTrigger_policy() == null || controlLoop.getTrigger_policy().length() < 1) { throw new CompilerException("trigger_policy is not valid"); } - // } private static void validatePolicies(ControlLoopPolicy policy, ControlLoopCompilerCallback callback) throws CompilerException { @@ -97,29 +96,27 @@ public class ControlLoopCompiler { // // verify controlLoop overall timeout should be no less than the sum of operational policy timeouts // - if (policy.policies == null) { + if (policy.getPolicies() == null) { callback.onWarning("controlLoop is an open loop."); } else{ int sum = 0; - for (Policy operPolicy : policy.policies) { - sum += operPolicy.timeout.intValue(); + for (Policy operPolicy : policy.getPolicies()) { + sum += operPolicy.getTimeout().intValue(); } - if (policy.controlLoop.timeout.intValue() < sum) { - if (callback != null) { - callback.onError("controlLoop overall timeout is less than the sum of operational policy timeouts."); - } + if (policy.getControlLoop().getTimeout().intValue() < sum && callback != null) { + callback.onError("controlLoop overall timeout is less than the sum of operational policy timeouts."); } // // For this version we can use a directed multigraph, in the future we may not be able to // - DirectedGraph<NodeWrapper, LabeledEdge> graph = new DirectedMultigraph<NodeWrapper, LabeledEdge>(new ClassBasedEdgeFactory<NodeWrapper, LabeledEdge>(LabeledEdge.class)); + DirectedGraph<NodeWrapper, LabeledEdge> graph = new DirectedMultigraph<>(new ClassBasedEdgeFactory<NodeWrapper, LabeledEdge>(LabeledEdge.class)); // // Check to see if the trigger Event is for OpenLoop, we do so by // attempting to create a FinalResult object from it. If its a policy id, this should // return null. // - FinalResult triggerResult = FinalResult.toResult(policy.controlLoop.trigger_policy); + FinalResult triggerResult = FinalResult.toResult(policy.getControlLoop().getTrigger_policy()); TriggerNodeWrapper triggerNode; // // Did this turn into a FinalResult object? @@ -134,10 +131,8 @@ public class ControlLoopCompiler { // // They really shouldn't have any policies attached. // - if (policy.policies != null || policy.policies.size() > 0) { - if (callback != null) { - callback.onWarning("Open Loop policy contains policies. The policies will never be invoked."); - } + if ((policy.getPolicies() != null || policy.getPolicies().isEmpty())&& callback != null ) { + callback.onWarning("Open Loop policy contains policies. The policies will never be invoked."); } return; // @@ -145,7 +140,7 @@ public class ControlLoopCompiler { // // Ok, not a FinalResult object so let's assume that it is a Policy. Which it should be. // - triggerNode = new TriggerNodeWrapper(policy.controlLoop.controlLoopName); + triggerNode = new TriggerNodeWrapper(policy.getControlLoop().getControlLoopName()); } // // Add in the trigger node @@ -169,132 +164,12 @@ public class ControlLoopCompiler { // // Work through the policies and add them in as nodes. // - Map<Policy, PolicyNodeWrapper> mapNodes = new HashMap<Policy, PolicyNodeWrapper>(); - for (Policy operPolicy : policy.policies) { - // - // Check the policy id and make sure its sane - // - boolean okToAdd = true; - if (operPolicy.id == null || operPolicy.id.length() < 1) { - if (callback != null) { - callback.onError("Operational Policy has an bad ID"); - } - okToAdd = false; - } - // - // Check if they decided to make the ID a result object - // - if (PolicyResult.toResult(operPolicy.id) != null) { - if (callback != null) { - callback.onError("Policy id is set to a PolicyResult " + operPolicy.id); - } - okToAdd = false; - } - if (FinalResult.toResult(operPolicy.id) != null) { - if (callback != null) { - callback.onError("Policy id is set to a FinalResult " + operPolicy.id); - } - okToAdd = false; - } - // - // Check that the actor/recipe/target are valid - // - if (operPolicy.actor == null) { - if (callback != null) { - callback.onError("Policy actor is null"); - } - okToAdd = false; - } - // - // Construct a list for all valid actors - // - ImmutableList<String> actors = ImmutableList.of("APPC", "AOTS", "MSO", "SDNO", "SDNR", "AAI"); - // - if (operPolicy.actor != null && (!actors.contains(operPolicy.actor)) ) { - if (callback != null) { - callback.onError("Policy actor is invalid"); - } - okToAdd = false; - } - if (operPolicy.recipe == null) { - if (callback != null) { - callback.onError("Policy recipe is null"); - } - okToAdd = false; - } - // - // TODO: - // NOTE: We need a way to find the acceptable recipe values (either Enum or a database that has these) - // - ImmutableMap<String, List<String>> recipes = new ImmutableMap.Builder<String, List<String>>() - .put("APPC", ImmutableList.of("Restart", "Rebuild", "Migrate", "ModifyConfig")) - .put("AOTS", ImmutableList.of("checkMaintenanceWindow", "checkENodeBTicketHours", "checkEquipmentStatus", "checkEimStatus", "checkEquipmentMaintenance")) - .put("MSO", ImmutableList.of("VF Module Create")) - .put("SDNO", ImmutableList.of("health-diagnostic-type", "health-diagnostic", "health-diagnostic-history", "health-diagnostic-commands", "health-diagnostic-aes")) - .put("SDNR", ImmutableList.of("Restart", "Reboot")) - .build(); - // - if (operPolicy.recipe != null && (!recipes.getOrDefault(operPolicy.actor, Collections.emptyList()).contains(operPolicy.recipe))) { - if (callback != null) { - callback.onError("Policy recipe is invalid"); - } - okToAdd = false; - } - if (operPolicy.target == null) { - if (callback != null) { - callback.onError("Policy target is null"); - } - okToAdd = false; - } - if (operPolicy.target != null && operPolicy.target.type != TargetType.VM && operPolicy.target.type != TargetType.VFC && operPolicy.target.type != TargetType.PNF) { - if (callback != null) { - callback.onError("Policy target is invalid"); - } - okToAdd = false; - } - // - // Check that policy results are connected to either default final * or another policy - // - if (FinalResult.toResult(operPolicy.success) != null && operPolicy.success != FinalResult.FINAL_SUCCESS.toString()) { - if (callback != null) { - callback.onError("Policy success is neither another policy nor FINAL_SUCCESS"); - } - okToAdd = false; - } - if (FinalResult.toResult(operPolicy.failure) != null && operPolicy.failure != FinalResult.FINAL_FAILURE.toString()) { - if (callback != null) { - callback.onError("Policy failure is neither another policy nor FINAL_FAILURE"); - } - okToAdd = false; - } - if (FinalResult.toResult(operPolicy.failure_retries) != null && operPolicy.failure_retries != FinalResult.FINAL_FAILURE_RETRIES.toString()) { - if (callback != null) { - callback.onError("Policy failure retries is neither another policy nor FINAL_FAILURE_RETRIES"); - } - okToAdd = false; - } - if (FinalResult.toResult(operPolicy.failure_timeout) != null && operPolicy.failure_timeout != FinalResult.FINAL_FAILURE_TIMEOUT.toString()) { - if (callback != null) { - callback.onError("Policy failure timeout is neither another policy nor FINAL_FAILURE_TIMEOUT"); - } - okToAdd = false; - } - if (FinalResult.toResult(operPolicy.failure_exception) != null && operPolicy.failure_exception != FinalResult.FINAL_FAILURE_EXCEPTION.toString()) { - if (callback != null) { - callback.onError("Policy failure exception is neither another policy nor FINAL_FAILURE_EXCEPTION"); - } - okToAdd = false; - } - if (FinalResult.toResult(operPolicy.failure_guard) != null && operPolicy.failure_guard != FinalResult.FINAL_FAILURE_GUARD.toString()) { - if (callback != null) { - callback.onError("Policy failure guard is neither another policy nor FINAL_FAILURE_GUARD"); - } - okToAdd = false; - } + Map<Policy, PolicyNodeWrapper> mapNodes = new HashMap<>(); + for (Policy operPolicy : policy.getPolicies()) { // // Is it still ok to add? // - if (okToAdd == false) { + if (!okToAdd(operPolicy, callback)) { // // Do not add it in // @@ -310,7 +185,7 @@ public class ControlLoopCompiler { // // Is this the trigger policy? // - if (operPolicy.id.equals(policy.controlLoop.trigger_policy)) { + if (operPolicy.getId().equals(policy.getControlLoop().getTrigger_policy())) { // // Yes add an edge from our trigger event node to this policy // @@ -320,7 +195,7 @@ public class ControlLoopCompiler { // // last sweep to connect remaining edges for policy results // - for (Policy operPolicy : policy.policies) { + for (Policy operPolicy : policy.getPolicies()) { PolicyNodeWrapper node = mapNodes.get(operPolicy); // // Just ensure this has something @@ -328,62 +203,62 @@ public class ControlLoopCompiler { if (node == null) { continue; } - if (FinalResult.isResult(operPolicy.success, FinalResult.FINAL_SUCCESS)) { + if (FinalResult.isResult(operPolicy.getSuccess(), FinalResult.FINAL_SUCCESS)) { graph.addEdge(node, finalSuccess, new LabeledEdge(node, finalSuccess, new FinalResultEdgeWrapper(FinalResult.FINAL_SUCCESS))); } else { - PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.success); + PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.getSuccess()); if (toNode == null) { - throw new CompilerException("Operation Policy " + operPolicy.id + " success is connected to unknown policy " + operPolicy.success); + throw new CompilerException("Operation Policy " + operPolicy.getId() + " success is connected to unknown policy " + operPolicy.getSuccess()); } else { graph.addEdge(node, toNode, new LabeledEdge(node, toNode, new PolicyResultEdgeWrapper(PolicyResult.SUCCESS))); } } - if (FinalResult.isResult(operPolicy.failure, FinalResult.FINAL_FAILURE)) { + if (FinalResult.isResult(operPolicy.getFailure(), FinalResult.FINAL_FAILURE)) { graph.addEdge(node, finalFailure, new LabeledEdge(node, finalFailure, new FinalResultEdgeWrapper(FinalResult.FINAL_FAILURE))); } else { - PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.failure); + PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.getFailure()); if (toNode == null) { - throw new CompilerException("Operation Policy " + operPolicy.id + " failure is connected to unknown policy " + operPolicy.failure); + throw new CompilerException("Operation Policy " + operPolicy.getId() + " failure is connected to unknown policy " + operPolicy.getFailure()); } else { graph.addEdge(node, toNode, new LabeledEdge(node, toNode, new PolicyResultEdgeWrapper(PolicyResult.FAILURE))); } } - if (FinalResult.isResult(operPolicy.failure_timeout, FinalResult.FINAL_FAILURE_TIMEOUT)) { + if (FinalResult.isResult(operPolicy.getFailure_timeout(), FinalResult.FINAL_FAILURE_TIMEOUT)) { graph.addEdge(node, finalFailureTimeout, new LabeledEdge(node, finalFailureTimeout, new FinalResultEdgeWrapper(FinalResult.FINAL_FAILURE_TIMEOUT))); } else { - PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.failure_timeout); + PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.getFailure_timeout()); if (toNode == null) { - throw new CompilerException("Operation Policy " + operPolicy.id + " failure_timeout is connected to unknown policy " + operPolicy.failure_timeout); + throw new CompilerException("Operation Policy " + operPolicy.getId() + " failure_timeout is connected to unknown policy " + operPolicy.getFailure_timeout()); } else { graph.addEdge(node, toNode, new LabeledEdge(node, toNode, new PolicyResultEdgeWrapper(PolicyResult.FAILURE_TIMEOUT))); } } - if (FinalResult.isResult(operPolicy.failure_retries, FinalResult.FINAL_FAILURE_RETRIES)) { + if (FinalResult.isResult(operPolicy.getFailure_retries(), FinalResult.FINAL_FAILURE_RETRIES)) { graph.addEdge(node, finalFailureRetries, new LabeledEdge(node, finalFailureRetries, new FinalResultEdgeWrapper(FinalResult.FINAL_FAILURE_RETRIES))); } else { - PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.failure_retries); + PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.getFailure_retries()); if (toNode == null) { - throw new CompilerException("Operation Policy " + operPolicy.id + " failure_retries is connected to unknown policy " + operPolicy.failure_retries); + throw new CompilerException("Operation Policy " + operPolicy.getId() + " failure_retries is connected to unknown policy " + operPolicy.getFailure_retries()); } else { graph.addEdge(node, toNode, new LabeledEdge(node, toNode, new PolicyResultEdgeWrapper(PolicyResult.FAILURE_RETRIES))); } } - if (FinalResult.isResult(operPolicy.failure_exception, FinalResult.FINAL_FAILURE_EXCEPTION)) { + if (FinalResult.isResult(operPolicy.getFailure_exception(), FinalResult.FINAL_FAILURE_EXCEPTION)) { graph.addEdge(node, finalFailureException, new LabeledEdge(node, finalFailureException, new FinalResultEdgeWrapper(FinalResult.FINAL_FAILURE_EXCEPTION))); } else { - PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.failure_exception); + PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.getFailure_exception()); if (toNode == null) { - throw new CompilerException("Operation Policy " + operPolicy.id + " failure_exception is connected to unknown policy " + operPolicy.failure_exception); + throw new CompilerException("Operation Policy " + operPolicy.getId() + " failure_exception is connected to unknown policy " + operPolicy.getFailure_exception()); } else { graph.addEdge(node, toNode, new LabeledEdge(node, toNode, new PolicyResultEdgeWrapper(PolicyResult.FAILURE_EXCEPTION))); } } - if (FinalResult.isResult(operPolicy.failure_guard, FinalResult.FINAL_FAILURE_GUARD)) { + if (FinalResult.isResult(operPolicy.getFailure_guard(), FinalResult.FINAL_FAILURE_GUARD)) { graph.addEdge(node, finalFailureGuard, new LabeledEdge(node, finalFailureGuard, new FinalResultEdgeWrapper(FinalResult.FINAL_FAILURE_GUARD))); } else { - PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.failure_guard); + PolicyNodeWrapper toNode = findPolicyNode(mapNodes, operPolicy.getFailure_guard()); if (toNode == null) { - throw new CompilerException("Operation Policy " + operPolicy.id + " failure_guard is connected to unknown policy " + operPolicy.failure_guard); + throw new CompilerException("Operation Policy " + operPolicy.getId() + " failure_guard is connected to unknown policy " + operPolicy.getFailure_guard()); } else { graph.addEdge(node, toNode, new LabeledEdge(node, toNode, new PolicyResultEdgeWrapper(PolicyResult.FAILURE_GUARD))); } @@ -394,7 +269,7 @@ public class ControlLoopCompiler { // for (NodeWrapper node : graph.vertexSet()) { if (node instanceof TriggerNodeWrapper) { - System.out.println("Trigger Node " + node.toString()); + LOGGER.info("Trigger Node " + node.toString()); if (graph.inDegreeOf(node) > 0 ) { // // Really should NEVER get here unless someone messed up the code above. @@ -408,7 +283,7 @@ public class ControlLoopCompiler { throw new CompilerException("The event trigger should only go to ONE node"); } } else if (node instanceof FinalResultNodeWrapper) { - System.out.println("FinalResult Node " + node.toString()); + LOGGER.info("FinalResult Node " + node.toString()); // // FinalResult nodes should NEVER have an out edge // @@ -416,7 +291,7 @@ public class ControlLoopCompiler { throw new CompilerException("FinalResult nodes should never have any out edges."); } } else if (node instanceof PolicyNodeWrapper) { - System.out.println("Policy Node " + node.toString()); + LOGGER.info("Policy Node " + node.toString()); // // All Policy Nodes should have the 5 out degrees defined. // @@ -424,38 +299,159 @@ public class ControlLoopCompiler { throw new CompilerException("Policy node should ALWAYS have 6 out degrees."); } // - // Chenfei: All Policy Nodes should have at least 1 in degrees + // All Policy Nodes should have at least 1 in degrees // - if (graph.inDegreeOf(node) == 0) { - if (callback != null) { - callback.onWarning("Policy " + node.getID() + " is not reachable."); - } + if (graph.inDegreeOf(node) == 0 && callback != null) { + callback.onWarning("Policy " + node.getID() + " is not reachable."); } } for (LabeledEdge edge : graph.outgoingEdgesOf(node)){ - System.out.println(edge.from.getID() + " invokes " + edge.to.getID() + " upon " + edge.edge.getID()); + LOGGER.info(edge.from.getID() + " invokes " + edge.to.getID() + " upon " + edge.edge.getID()); } } } } + private static boolean okToAdd(Policy operPolicy, ControlLoopCompilerCallback callback) { + // + // Check the policy id and make sure its sane + // + boolean okToAdd = true; + if (operPolicy.getId() == null || operPolicy.getId().length() < 1) { + if (callback != null) { + callback.onError("Operational Policy has an bad ID"); + } + okToAdd = false; + } + // + // Check if they decided to make the ID a result object + // + if (PolicyResult.toResult(operPolicy.getId()) != null) { + if (callback != null) { + callback.onError("Policy id is set to a PolicyResult " + operPolicy.getId()); + } + okToAdd = false; + } + if (FinalResult.toResult(operPolicy.getId()) != null) { + if (callback != null) { + callback.onError("Policy id is set to a FinalResult " + operPolicy.getId()); + } + okToAdd = false; + } + // + // Check that the actor/recipe/target are valid + // + if (operPolicy.getActor() == null) { + if (callback != null) { + callback.onError("Policy actor is null"); + } + okToAdd = false; + } + // + // Construct a list for all valid actors + // + ImmutableList<String> actors = ImmutableList.of("APPC", "AOTS", "MSO", "SDNO", "SDNR", "AAI"); + // + if (operPolicy.getActor() != null && (!actors.contains(operPolicy.getActor())) ) { + if (callback != null) { + callback.onError("Policy actor is invalid"); + } + okToAdd = false; + } + if (operPolicy.getRecipe() == null) { + if (callback != null) { + callback.onError("Policy recipe is null"); + } + okToAdd = false; + } + // + // NOTE: We need a way to find the acceptable recipe values (either Enum or a database that has these) + // + ImmutableMap<String, List<String>> recipes = new ImmutableMap.Builder<String, List<String>>() + .put("APPC", ImmutableList.of("Restart", "Rebuild", "Migrate", "ModifyConfig")) + .put("AOTS", ImmutableList.of("checkMaintenanceWindow", "checkENodeBTicketHours", "checkEquipmentStatus", "checkEimStatus", "checkEquipmentMaintenance")) + .put("MSO", ImmutableList.of("VF Module Create")) + .put("SDNO", ImmutableList.of("health-diagnostic-type", "health-diagnostic", "health-diagnostic-history", "health-diagnostic-commands", "health-diagnostic-aes")) + .put("SDNR", ImmutableList.of("Restart", "Reboot")) + .build(); + // + if (operPolicy.getRecipe() != null && (!recipes.getOrDefault(operPolicy.getActor(), Collections.emptyList()).contains(operPolicy.getRecipe()))) { + if (callback != null) { + callback.onError("Policy recipe is invalid"); + } + okToAdd = false; + } + if (operPolicy.getTarget() == null) { + if (callback != null) { + callback.onError("Policy target is null"); + } + okToAdd = false; + } + if (operPolicy.getTarget() != null && operPolicy.getTarget().getType() != TargetType.VM && operPolicy.getTarget().getType() != TargetType.VFC && operPolicy.getTarget().getType() != TargetType.PNF) { + if (callback != null) { + callback.onError("Policy target is invalid"); + } + okToAdd = false; + } + // + // Check that policy results are connected to either default final * or another policy + // + if (FinalResult.toResult(operPolicy.getSuccess()) != null && operPolicy.getSuccess() != FinalResult.FINAL_SUCCESS.toString()) { + if (callback != null) { + callback.onError("Policy success is neither another policy nor FINAL_SUCCESS"); + } + okToAdd = false; + } + if (FinalResult.toResult(operPolicy.getFailure()) != null && operPolicy.getFailure() != FinalResult.FINAL_FAILURE.toString()) { + if (callback != null) { + callback.onError("Policy failure is neither another policy nor FINAL_FAILURE"); + } + okToAdd = false; + } + if (FinalResult.toResult(operPolicy.getFailure_retries()) != null && operPolicy.getFailure_retries() != FinalResult.FINAL_FAILURE_RETRIES.toString()) { + if (callback != null) { + callback.onError("Policy failure retries is neither another policy nor FINAL_FAILURE_RETRIES"); + } + okToAdd = false; + } + if (FinalResult.toResult(operPolicy.getFailure_timeout()) != null && operPolicy.getFailure_timeout() != FinalResult.FINAL_FAILURE_TIMEOUT.toString()) { + if (callback != null) { + callback.onError("Policy failure timeout is neither another policy nor FINAL_FAILURE_TIMEOUT"); + } + okToAdd = false; + } + if (FinalResult.toResult(operPolicy.getFailure_exception()) != null && operPolicy.getFailure_exception() != FinalResult.FINAL_FAILURE_EXCEPTION.toString()) { + if (callback != null) { + callback.onError("Policy failure exception is neither another policy nor FINAL_FAILURE_EXCEPTION"); + } + okToAdd = false; + } + if (FinalResult.toResult(operPolicy.getFailure_guard()) != null && operPolicy.getFailure_guard() != FinalResult.FINAL_FAILURE_GUARD.toString()) { + if (callback != null) { + callback.onError("Policy failure guard is neither another policy nor FINAL_FAILURE_GUARD"); + } + okToAdd = false; + } + return okToAdd; + } + private static PolicyNodeWrapper findPolicyNode(Map<Policy, PolicyNodeWrapper> mapNodes, String id) { - for (Policy key : mapNodes.keySet()) { - if (key.id.equals(id)) { - return mapNodes.get(key); + for (Entry<Policy, PolicyNodeWrapper> entry : mapNodes.entrySet()) { + if (entry.getKey().getId().equals(id)) { + return entry.getValue(); } } return null; } - - private interface NodeWrapper { - + + @FunctionalInterface + private interface NodeWrapper extends Serializable{ public String getID(); - } private static class TriggerNodeWrapper implements NodeWrapper { - public String closedLoopControlName; + private static final long serialVersionUID = -187644087811478349L; + private String closedLoopControlName; public TriggerNodeWrapper(String closedLoopControlName) { this.closedLoopControlName = closedLoopControlName; @@ -474,8 +470,8 @@ public class ControlLoopCompiler { } private static class FinalResultNodeWrapper implements NodeWrapper { - - public FinalResult result; + private static final long serialVersionUID = 8540008796302474613L; + private FinalResult result; public FinalResultNodeWrapper(FinalResult result) { this.result = result; @@ -493,8 +489,8 @@ public class ControlLoopCompiler { } private static class PolicyNodeWrapper implements NodeWrapper { - - public Policy policy; + private static final long serialVersionUID = 8170162175653823082L; + private Policy policy; public PolicyNodeWrapper(Policy operPolicy) { this.policy = operPolicy; @@ -507,18 +503,18 @@ public class ControlLoopCompiler { @Override public String getID() { - return policy.id; + return policy.getId(); } } - private interface EdgeWrapper { - + @FunctionalInterface + private interface EdgeWrapper extends Serializable{ public String getID(); } private static class TriggerEdgeWrapper implements EdgeWrapper { - + private static final long serialVersionUID = 2678151552623278863L; private String trigger; public TriggerEdgeWrapper(String trigger) { @@ -538,7 +534,8 @@ public class ControlLoopCompiler { } private static class PolicyResultEdgeWrapper implements EdgeWrapper { - public PolicyResult policyResult; + private static final long serialVersionUID = 6078569477021558310L; + private PolicyResult policyResult; public PolicyResultEdgeWrapper(PolicyResult policyResult) { super(); @@ -559,8 +556,8 @@ public class ControlLoopCompiler { } private static class FinalResultEdgeWrapper implements EdgeWrapper { - - public FinalResult finalResult; + private static final long serialVersionUID = -1486381946896779840L; + private FinalResult finalResult; public FinalResultEdgeWrapper(FinalResult result) { this.finalResult = result; } @@ -578,10 +575,6 @@ public class ControlLoopCompiler { private static class LabeledEdge extends DefaultEdge { - - /** - * - */ private static final long serialVersionUID = 579384429573385524L; private NodeWrapper from; diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/guard/compiler/ControlLoopGuardCompiler.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/guard/compiler/ControlLoopGuardCompiler.java index a40bc9d53..aa2bbfd8a 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/guard/compiler/ControlLoopGuardCompiler.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/guard/compiler/ControlLoopGuardCompiler.java @@ -36,21 +36,25 @@ import org.yaml.snakeyaml.constructor.Constructor; public class ControlLoopGuardCompiler { - public static ControlLoopGuard compile(ControlLoopGuard CLGuard, ControlLoopCompilerCallback callback) throws CompilerException { + private ControlLoopGuardCompiler(){ + // Private Constructor + } + + public static ControlLoopGuard compile(ControlLoopGuard cLGuard, ControlLoopCompilerCallback callback) throws CompilerException { // // Ensure ControlLoopGuard has at least one guard policies // - validateControlLoopGuard(CLGuard, callback); + validateControlLoopGuard(cLGuard, callback); // // Ensure each guard policy has at least one constraints and all guard policies are unique // - validateGuardPolicies(CLGuard.guards, callback); + validateGuardPolicies(cLGuard.getGuards(), callback); // // Ensure constraints for each guard policy are unique // - validateConstraints(CLGuard.guards, callback); + validateConstraints(cLGuard.getGuards(), callback); - return CLGuard; + return cLGuard; } public static ControlLoopGuard compile(InputStream yamlSpecification, ControlLoopCompilerCallback callback) throws CompilerException { @@ -65,26 +69,22 @@ public class ControlLoopGuardCompiler { return ControlLoopGuardCompiler.compile((ControlLoopGuard) obj, callback); } - private static void validateControlLoopGuard(ControlLoopGuard CLGuard, ControlLoopCompilerCallback callback) throws CompilerException { - if (CLGuard == null) { + private static void validateControlLoopGuard(ControlLoopGuard cLGuard, ControlLoopCompilerCallback callback) throws CompilerException { + if (cLGuard == null) { if (callback != null) { callback.onError("ControlLoop Guard cannot be null"); } throw new CompilerException("ControlLoop Guard cannot be null"); } - if (CLGuard.guard == null) { - if (callback != null) { - callback.onError("Guard version cannot be null"); - } + if (cLGuard.getGuard() == null && callback != null) { + callback.onError("Guard version cannot be null"); } - if (CLGuard.guards == null) { - if (callback != null) { - callback.onError("ControlLoop Guard should have at least one guard policies"); - } - } else if (CLGuard.guards.size() < 1) { + if (cLGuard.getGuards() == null) { if (callback != null) { callback.onError("ControlLoop Guard should have at least one guard policies"); } + } else if (cLGuard.getGuards().isEmpty() && callback != null) { + callback.onError("ControlLoop Guard should have at least one guard policies"); } } @@ -98,21 +98,19 @@ public class ControlLoopGuardCompiler { // // Ensure all guard policies are unique // - Set<GuardPolicy> newSet = new HashSet<GuardPolicy>(policies); - if (newSet.size() != policies.size()) { - if (callback != null) { - callback.onWarning("There are duplicate guard policies"); - } + Set<GuardPolicy> newSet = new HashSet<>(policies); + if (newSet.size() != policies.size() && callback != null) { + callback.onWarning("There are duplicate guard policies"); } // // Ensure each guard policy has at least one constraints // for (GuardPolicy policy : policies) { - if (policy.limit_constraints == null || policy.limit_constraints.size() < 1) { + if (policy.getLimit_constraints() == null || policy.getLimit_constraints().isEmpty()) { if (callback != null) { - callback.onError("Guard policy " + policy.name + " does not have any limit constraint"); + callback.onError("Guard policy " + policy.getName() + " does not have any limit constraint"); } - throw new CompilerException("Guard policy " + policy.name + " does not have any limit constraint"); + throw new CompilerException("Guard policy " + policy.getName() + " does not have any limit constraint"); } } } @@ -125,11 +123,9 @@ public class ControlLoopGuardCompiler { throw new CompilerException("Guard policies should not be null"); } for (GuardPolicy policy : policies) { - Set<Constraint> newSet = new HashSet<Constraint>(policy.limit_constraints); - if (newSet.size() != policy.limit_constraints.size()) { - if (callback != null) { - callback.onWarning("Guard policy " + policy.name + " has duplicate limit constraints"); - } + Set<Constraint> newSet = new HashSet<>(policy.getLimit_constraints()); + if (newSet.size() != policy.getLimit_constraints().size() && callback != null) { + callback.onWarning("Guard policy " + policy.getName() + " has duplicate limit constraints"); } } } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoop.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoop.java index fa144156e..ec25ab3db 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoop.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoop.java @@ -20,30 +20,110 @@ package org.openecomp.policy.controlloop.policy; +import java.util.LinkedList; +import java.util.List; + +import org.openecomp.policy.asdc.Resource; +import org.openecomp.policy.asdc.Service; + public class ControlLoop { - public static String VERSION = "2.0.0"; + private static String VERSION = "2.0.0"; - public String controlLoopName; - public final String version = VERSION; - public String trigger_policy = FinalResult.FINAL_OPENLOOP.toString(); - public Integer timeout; - public Boolean abatement = false; + private String controlLoopName; + private String version = VERSION; + private List<Service> services; + private List<Resource> resources; + private String trigger_policy = FinalResult.FINAL_OPENLOOP.toString(); + private Integer timeout; + private Boolean abatement = false; public ControlLoop() { - + // Empty Constructor. + } + + public static String getVERSION(){ + return ControlLoop.VERSION; + } + + public String getControlLoopName() { + return controlLoopName; + } + + public void setControlLoopName(String controlLoopName) { + this.controlLoopName = controlLoopName; + } + + public List<Service> getServices() { + return services; + } + + public void setServices(List<Service> services) { + this.services = services; + } + + public List<Resource> getResources() { + return resources; + } + + public void setResources(List<Resource> resources) { + this.resources = resources; + } + + public String getTrigger_policy() { + return trigger_policy; + } + + public void setTrigger_policy(String trigger_policy) { + this.trigger_policy = trigger_policy; + } + + public Integer getTimeout() { + return timeout; + } + + public void setTimeout(Integer timeout) { + this.timeout = timeout; + } + + public Boolean getAbatement() { + return abatement; + } + + public void setAbatement(Boolean abatement) { + this.abatement = abatement; + } + + public String getVersion() { + return version; } + public void setVersion(String version){ + this.version = version; + } + public ControlLoop(ControlLoop controlLoop) { this.controlLoopName = controlLoop.controlLoopName; + this.services = new LinkedList<>(); + if (controlLoop.services != null) { + for (Service service : controlLoop.services) { + this.services.add(service); + } + } + this.resources = new LinkedList<>(); + if (controlLoop.resources != null) { + for (Resource resource: controlLoop.resources) { + this.resources.add(resource); + } + } this.trigger_policy = controlLoop.trigger_policy; this.timeout = controlLoop.timeout; this.abatement = controlLoop.abatement; } @Override public String toString() { - return "ControlLoop [controlLoopName=" + controlLoopName + ", version=" + version - + ", trigger_policy=" + trigger_policy + ", timeout=" + return "ControlLoop [controlLoopName=" + controlLoopName + ", version=" + version + ", services=" + services + + ", resources=" + resources + ", trigger_policy=" + trigger_policy + ", timeout=" + timeout + ", abatement=" + abatement + "]"; } @Override @@ -51,6 +131,8 @@ public class ControlLoop { final int prime = 31; int result = 1; result = prime * result + ((controlLoopName == null) ? 0 : controlLoopName.hashCode()); + result = prime * result + ((resources == null) ? 0 : resources.hashCode()); + result = prime * result + ((services == null) ? 0 : services.hashCode()); result = prime * result + ((timeout == null) ? 0 : timeout.hashCode()); result = prime * result + ((trigger_policy == null) ? 0 : trigger_policy.hashCode()); result = prime * result + ((version == null) ? 0 : version.hashCode()); @@ -71,6 +153,16 @@ public class ControlLoop { return false; } else if (!controlLoopName.equals(other.controlLoopName)) return false; + if (resources == null) { + if (other.resources != null) + return false; + } else if (!resources.equals(other.resources)) + return false; + if (services == null) { + if (other.services != null) + return false; + } else if (!services.equals(other.services)) + return false; if (timeout == null) { if (other.timeout != null) return false; diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoopPolicy.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoopPolicy.java index f14229bce..82a9d964e 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoopPolicy.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/ControlLoopPolicy.java @@ -20,13 +20,29 @@ package org.openecomp.policy.controlloop.policy; -import java.util.LinkedList; +import java.util.List; public class ControlLoopPolicy { - public ControlLoop controlLoop; + private ControlLoop controlLoop; - public LinkedList<Policy> policies; + private List<Policy> policies; + + public ControlLoop getControlLoop() { + return controlLoop; + } + + public void setControlLoop(ControlLoop controlLoop) { + this.controlLoop = controlLoop; + } + + public List<Policy> getPolicies() { + return policies; + } + + public void setPolicies(List<Policy> policies) { + this.policies = policies; + } @Override public String toString() { diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/FinalResult.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/FinalResult.java index 86b174a85..f64e44939 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/FinalResult.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/FinalResult.java @@ -87,7 +87,7 @@ public enum FinalResult { if (toResult == null) { return false; } - return (toResult.equals(finalResult)); + return toResult.equals(finalResult); } } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/OperationsAccumulateParams.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/OperationsAccumulateParams.java index 6cf91ce05..b7424dd33 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/OperationsAccumulateParams.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/OperationsAccumulateParams.java @@ -28,11 +28,11 @@ public class OperationsAccumulateParams implements Serializable { */ private static final long serialVersionUID = -3597358159130168247L; - public String period; - public Integer limit; + private String period; + private Integer limit; public OperationsAccumulateParams() { - + // Does Nothing } public OperationsAccumulateParams(OperationsAccumulateParams ops) { @@ -45,6 +45,22 @@ public class OperationsAccumulateParams implements Serializable { this.limit = limit; } + public String getPeriod() { + return period; + } + + public void setPeriod(String period) { + this.period = period; + } + + public Integer getLimit() { + return limit; + } + + public void setLimit(Integer limit) { + this.limit = limit; + } + @Override public String toString() { return "OperationsAccumulateParams [period=" + period + ", limit=" + limit + "]"; diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Policy.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Policy.java index 0af1eab68..dcbc8937b 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Policy.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Policy.java @@ -26,28 +26,156 @@ import java.util.UUID; public class Policy { - public String id = UUID.randomUUID().toString(); - public String name; - public String description; - public String actor; - public String recipe; - public Map<String, String> payload; - public Target target; - public OperationsAccumulateParams operationsAccumulateParams; - public Integer retry = 0; - public Integer timeout = 300; - public String success = FinalResult.FINAL_SUCCESS.toString(); - public String failure = FinalResult.FINAL_FAILURE.toString(); - public String failure_retries = FinalResult.FINAL_FAILURE_RETRIES.toString(); - public String failure_timeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString(); - public String failure_exception = FinalResult.FINAL_FAILURE_EXCEPTION.toString(); - public String failure_guard = FinalResult.FINAL_FAILURE_GUARD.toString(); + private String id = UUID.randomUUID().toString(); + private String name; + private String description; + private String actor; + private String recipe; + private Map<String, String> payload; + private Target target; + private OperationsAccumulateParams operationsAccumulateParams; + private Integer retry = 0; + private Integer timeout = 300; + private String success = FinalResult.FINAL_SUCCESS.toString(); + private String failure = FinalResult.FINAL_FAILURE.toString(); + private String failure_retries = FinalResult.FINAL_FAILURE_RETRIES.toString(); + private String failure_timeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString(); + private String failure_exception = FinalResult.FINAL_FAILURE_EXCEPTION.toString(); + private String failure_guard = FinalResult.FINAL_FAILURE_GUARD.toString(); public Policy() { - + //Does Nothing Empty Constructor } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getRecipe() { + return recipe; + } + + public void setRecipe(String recipe) { + this.recipe = recipe; + } + + public Map<String, String> getPayload() { + return payload; + } + + public void setPayload(Map<String, String> payload) { + this.payload = payload; + } + + public Target getTarget() { + return target; + } + + public void setTarget(Target target) { + this.target = target; + } + + public OperationsAccumulateParams getOperationsAccumulateParams() { + return operationsAccumulateParams; + } + + public void setOperationsAccumulateParams(OperationsAccumulateParams operationsAccumulateParams) { + this.operationsAccumulateParams = operationsAccumulateParams; + } + + public Integer getRetry() { + return retry; + } + + public void setRetry(Integer retry) { + this.retry = retry; + } + + public Integer getTimeout() { + return timeout; + } + + public void setTimeout(Integer timeout) { + this.timeout = timeout; + } + + public String getSuccess() { + return success; + } + + public void setSuccess(String success) { + this.success = success; + } + + public String getFailure() { + return failure; + } + + public void setFailure(String failure) { + this.failure = failure; + } + + public String getFailure_retries() { + return failure_retries; + } + + public void setFailure_retries(String failure_retries) { + this.failure_retries = failure_retries; + } + + public String getFailure_timeout() { + return failure_timeout; + } + + public void setFailure_timeout(String failure_timeout) { + this.failure_timeout = failure_timeout; + } + + public String getFailure_exception() { + return failure_exception; + } + + public void setFailure_exception(String failure_exception) { + this.failure_exception = failure_exception; + } + + public String getFailure_guard() { + return failure_guard; + } + + public void setFailure_guard(String failure_guard) { + this.failure_guard = failure_guard; + } + public Policy(String id) { this.id = id; } @@ -58,7 +186,6 @@ public class Policy { this.recipe = recipe; this.target = target; if (payload != null) { -// this.payload = new LinkedList<Map<String, String>>(); this.payload = Collections.unmodifiableMap(payload); } } @@ -82,8 +209,6 @@ public class Policy { this.actor = policy.actor; this.recipe = policy.recipe; if (policy.payload != null) { -// this.payload = new LinkedList<Map<String, String>>(); -// this.payload.addAll(policy.payload); this.payload = Collections.unmodifiableMap(policy.payload); } this.target = policy.target; @@ -99,26 +224,9 @@ public class Policy { } public boolean isValid() { - try { - if (id == null) { - throw new NullPointerException(); - } - if (name == null) { - throw new NullPointerException(); - } - if (actor == null) { - throw new NullPointerException(); - } - if (recipe == null) { - throw new NullPointerException(); - } - if (target == null) { - throw new NullPointerException(); - } - } catch (Exception e) { + if(id==null || name==null || actor==null|| recipe==null || target==null){ return false; } - return true; } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/PolicyResult.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/PolicyResult.java index cfcd624f3..7d0334125 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/PolicyResult.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/PolicyResult.java @@ -52,6 +52,7 @@ public enum PolicyResult { this.result = result; } + @Override public String toString() { return this.result; } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Target.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Target.java index 9bccf0feb..1625c2968 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Target.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/Target.java @@ -28,13 +28,29 @@ public class Target implements Serializable { */ private static final long serialVersionUID = 2180988443264988319L; - public String resourceID; - public TargetType type; + private String resourceID; + private TargetType type; public Target() { - + //Does Nothing Empty Constructor } + public String getResourceID() { + return resourceID; + } + + public void setResourceID(String resourceID) { + this.resourceID = resourceID; + } + + public TargetType getType() { + return type; + } + + public void setType(TargetType type) { + this.type = type; + } + public Target(TargetType type) { this.type = type; } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/TargetType.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/TargetType.java index c5e4abce0..e43fa615e 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/TargetType.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/TargetType.java @@ -25,14 +25,15 @@ public enum TargetType { VFC("VFC") ; - private String targetType; + private String target; private TargetType(String targetType) { - this.targetType = targetType; + this.target = targetType; } + @Override public String toString() { - return this.targetType; + return this.target; } } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/BuilderException.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/BuilderException.java index a087463b9..273af85e3 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/BuilderException.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/BuilderException.java @@ -17,17 +17,15 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.openecomp.policy.controlloop.policy.builder; public class BuilderException extends Exception { + private static final long serialVersionUID = 610064813684337895L; + public BuilderException(String string) { super(string); } - /** - * - */ - private static final long serialVersionUID = 610064813684337895L; - } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java index fb10f292c..2fdb6d9df 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/ControlLoopPolicyBuilder.java @@ -22,6 +22,8 @@ package org.openecomp.policy.controlloop.policy.builder; import java.util.Map; +import org.openecomp.policy.asdc.Resource; +import org.openecomp.policy.asdc.Service; import org.openecomp.policy.controlloop.policy.ControlLoop; import org.openecomp.policy.controlloop.policy.OperationsAccumulateParams; import org.openecomp.policy.controlloop.policy.Policy; @@ -32,6 +34,52 @@ import org.openecomp.policy.controlloop.policy.builder.impl.ControlLoopPolicyBui public interface ControlLoopPolicyBuilder { /** + * Adds one or more services to the ControlLoop + * + * + * @param service + * @return + * @throws BuilderException + */ + public ControlLoopPolicyBuilder addService(Service... services) throws BuilderException; + + /** + * @param services + * @return + * @throws BuilderException + */ + public ControlLoopPolicyBuilder removeService(Service... services) throws BuilderException; + + /** + * @return + * @throws BuilderException + */ + public ControlLoopPolicyBuilder removeAllServices() throws BuilderException; + + /** + * Adds one or more resources to the ControlLoop + * + * + * @param resource + * @return + * @throws BuilderException + */ + public ControlLoopPolicyBuilder addResource(Resource... resources) throws BuilderException; + + /** + * @param resources + * @return + * @throws BuilderException + */ + public ControlLoopPolicyBuilder removeResource(Resource... resources) throws BuilderException; + + /** + * @return + * @throws BuilderException + */ + public ControlLoopPolicyBuilder removeAllResources() throws BuilderException; + + /** * @param abatement * @return * @throws BuilderException @@ -186,6 +234,9 @@ public interface ControlLoopPolicyBuilder { * */ public static class Factory { + private Factory(){ + // Private Constructor. + } /** * Builds a basic Control Loop with an overall timeout. Use this method if you wish to create an OpenLoop, or if you @@ -197,12 +248,40 @@ public interface ControlLoopPolicyBuilder { * @throws BuilderException */ public static ControlLoopPolicyBuilder buildControlLoop (String controlLoopName, Integer timeout) throws BuilderException { + return new ControlLoopPolicyBuilderImpl(controlLoopName, timeout); + } + + /** + * Build a Control Loop for a resource and services associated with the resource. + * + * @param controlLoopName - Per Closed Loop AID v1.0, unique string for the closed loop. + * @param timeout - Overall timeout for the Closed Loop to execute. + * @param resource - Resource this closed loop is for. Should come from ASDC, but if not available use resourceName to distinguish. + * @param services - Zero or more services associated with this resource. Should come from ASDC, but if not available use serviceName to distinguish. + * @return ControlLoopPolicyBuilder object + * @throws BuilderException + */ + public static ControlLoopPolicyBuilder buildControlLoop (String controlLoopName, Integer timeout, Resource resource, Service... services) throws BuilderException { - ControlLoopPolicyBuilder builder = new ControlLoopPolicyBuilderImpl(controlLoopName, timeout); + ControlLoopPolicyBuilder builder = new ControlLoopPolicyBuilderImpl(controlLoopName, timeout, resource, services); return builder; - } + } + /** + * @param controlLoopName + * @param timeout + * @param service + * @param resources + * @return + * @throws BuilderException + */ + public static ControlLoopPolicyBuilder buildControlLoop (String controlLoopName, Integer timeout, Service service, Resource... resources) throws BuilderException { + + ControlLoopPolicyBuilder builder = new ControlLoopPolicyBuilderImpl(controlLoopName, timeout, service, resources); + + return builder; + } } } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ControlLoopPolicyBuilderImpl.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ControlLoopPolicyBuilderImpl.java index be34a0a24..523054dce 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ControlLoopPolicyBuilderImpl.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ControlLoopPolicyBuilderImpl.java @@ -24,6 +24,8 @@ import java.util.LinkedList; import java.util.Map; import java.util.UUID; +import org.openecomp.policy.asdc.Resource; +import org.openecomp.policy.asdc.Service; import org.openecomp.policy.controlloop.compiler.CompilerException; import org.openecomp.policy.controlloop.compiler.ControlLoopCompiler; import org.openecomp.policy.controlloop.compiler.ControlLoopCompilerCallback; @@ -48,9 +50,89 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout) throws BuilderException { policy = new ControlLoopPolicy(); - policy.controlLoop = new ControlLoop(); - policy.controlLoop.controlLoopName = controlLoopName; - policy.controlLoop.timeout = timeout; + ControlLoop controlLoop = new ControlLoop(); + controlLoop.setControlLoopName(controlLoopName); + controlLoop.setTimeout(timeout); + policy.setControlLoop(controlLoop); + } + + public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Resource resource, Service... services) throws BuilderException { + this(controlLoopName, timeout); + this.addResource(resource); + this.addService(services); + } + + public ControlLoopPolicyBuilderImpl(String controlLoopName, Integer timeout, Service service, Resource[] resources) throws BuilderException { + this(controlLoopName, timeout); + this.addService(service); + this.addResource(resources); + } + + @Override + public ControlLoopPolicyBuilder addService(Service... services) throws BuilderException { + if (services == null) { + throw new BuilderException("Service must not be null"); + } + for (Service service : services) { + if (service.getServiceUUID() == null) { + if (service.getServiceName() == null || service.getServiceName().length() < 1) { + throw new BuilderException("Invalid service - need either a serviceUUID or serviceName"); + } + if(policy.getControlLoop().getServices()==null){ + policy.getControlLoop().setServices(new LinkedList<>()); + } + policy.getControlLoop().getServices().add(service); + } + } + return this; + } + + @Override + public ControlLoopPolicyBuilder removeService(Service... services) throws BuilderException { + if (services == null) { + throw new BuilderException("Service must not be null"); + } + if (policy.getControlLoop().getServices() == null) { + throw new BuilderException("No existing services to remove"); + } + for (Service service : services) { + if (service.getServiceUUID() == null) { + if (service.getServiceName() == null || service.getServiceName().length() < 1) { + throw new BuilderException("Invalid service - need either a serviceUUID or serviceName"); + } + } + boolean removed = policy.getControlLoop().getServices().remove(service); + if (!removed) { + throw new BuilderException("Unknown service " + service.getServiceName()); + } + } + return this; + } + + @Override + public ControlLoopPolicyBuilder removeAllServices() throws BuilderException { + policy.getControlLoop().getServices().clear(); + return this; + } + + + @Override + public ControlLoopPolicyBuilder addResource(Resource... resources) throws BuilderException { + if (resources == null) { + throw new BuilderException("resources must not be null"); + } + for (Resource resource : resources) { + if (resource.getResourceUUID() == null) { + if (resource.getResourceName() == null || resource.getResourceName().length() <= 0) { + throw new BuilderException("Invalid resource - need either resourceUUID or resourceName"); + } + } + if(policy.getControlLoop().getResources()==null){ + policy.getControlLoop().setResources(new LinkedList<>()); + } + policy.getControlLoop().getResources().add(resource); + } + return this; } @Override @@ -58,13 +140,13 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { if (abatement == null) { throw new BuilderException("abatement must not be null"); } - policy.controlLoop.abatement = abatement; + policy.getControlLoop().setAbatement(abatement); return this; } @Override public ControlLoopPolicyBuilder setTimeout(Integer timeout) { - policy.controlLoop.timeout = timeout; + policy.getControlLoop().setTimeout(timeout); return this; } @@ -74,7 +156,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { Policy trigger = new Policy(UUID.randomUUID().toString(), name, description, actor, payload, target, recipe, retries, timeout); - policy.controlLoop.trigger_policy = trigger.id; + policy.getControlLoop().setTrigger_policy(trigger.getId()); this.addNewPolicy(trigger); // @@ -103,22 +185,22 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { for (PolicyResult result : results) { switch (result) { case FAILURE: - existingPolicy.failure = newPolicy.id; + existingPolicy.setFailure(newPolicy.getId()); break; case FAILURE_EXCEPTION: - existingPolicy.failure_exception = newPolicy.id; + existingPolicy.setFailure_exception(newPolicy.getId()); break; case FAILURE_RETRIES: - existingPolicy.failure_retries = newPolicy.id; + existingPolicy.setFailure_retries(newPolicy.getId()); break; case FAILURE_TIMEOUT: - existingPolicy.failure_timeout = newPolicy.id; + existingPolicy.setFailure_timeout(newPolicy.getId()); break; case FAILURE_GUARD: - existingPolicy.failure_guard = newPolicy.id; + existingPolicy.setFailure_guard(newPolicy.getId()); break; case SUCCESS: - existingPolicy.success = newPolicy.id; + existingPolicy.setSuccess(newPolicy.getId()); break; default: throw new BuilderException("Invalid PolicyResult " + result); @@ -127,7 +209,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { // // Add it to our list // - this.policy.policies.add(newPolicy); + this.policy.getPolicies().add(newPolicy); // // Return a policy to them // @@ -136,7 +218,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { private class BuilderCompilerCallback implements ControlLoopCompilerCallback { - public ResultsImpl results = new ResultsImpl(); + private ResultsImpl results = new ResultsImpl(); @Override public boolean onWarning(String message) { @@ -181,15 +263,15 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { } private void addNewPolicy(Policy policy) { - if (this.policy.policies == null) { - this.policy.policies = new LinkedList<Policy>(); + if (this.policy.getPolicies() == null) { + this.policy.setPolicies(new LinkedList<>()); } - this.policy.policies.add(policy); + this.policy.getPolicies().add(policy); } private Policy findPolicy(String id) { - for (Policy policy : this.policy.policies) { - if (policy.id.equals(id)) { + for (Policy policy : this.policy.getPolicies()) { + if (policy.getId().equals(id)) { return policy; } } @@ -197,10 +279,38 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { } @Override + public ControlLoopPolicyBuilder removeResource(Resource... resources) throws BuilderException { + if (resources == null) { + throw new BuilderException("Resource must not be null"); + } + if (policy.getControlLoop().getResources() == null) { + throw new BuilderException("No existing resources to remove"); + } + for (Resource resource : resources) { + if (resource.getResourceUUID() == null) { + if (resource.getResourceName() == null || resource.getResourceName().length() < 1) { + throw new BuilderException("Invalid resource - need either a resourceUUID or resourceName"); + } + } + boolean removed = policy.getControlLoop().getResources().remove(resource); + if (!removed) { + throw new BuilderException("Unknown resource " + resource.getResourceName()); + } + } + return this; + } + + @Override + public ControlLoopPolicyBuilder removeAllResources() throws BuilderException { + policy.getControlLoop().getResources().clear(); + return this; + } + + @Override public Integer calculateTimeout() { int sum = 0; - for (Policy policy : this.policy.policies) { - sum += policy.timeout.intValue(); + for (Policy policy : this.policy.getPolicies()) { + sum += policy.getTimeout().intValue(); } return new Integer(sum); } @@ -215,14 +325,14 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { throw new BuilderException("Unknown policy " + id); } else { - this.policy.controlLoop.trigger_policy = id; + this.policy.getControlLoop().setTrigger_policy(id); } - return new ControlLoop(this.policy.controlLoop); + return new ControlLoop(this.policy.getControlLoop()); } @Override public boolean isOpenLoop() { - if (this.policy.controlLoop.trigger_policy.equals(FinalResult.FINAL_OPENLOOP.toString())) { + if (this.policy.getControlLoop().getTrigger_policy().equals(FinalResult.FINAL_OPENLOOP.toString())) { return true; } else { @@ -232,18 +342,18 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { @Override public Policy getTriggerPolicy() throws BuilderException { - if (this.policy.controlLoop.trigger_policy.equals(FinalResult.FINAL_OPENLOOP.toString())) { + if (this.policy.getControlLoop().getTrigger_policy().equals(FinalResult.FINAL_OPENLOOP.toString())) { return null; } else { - Policy trigger = new Policy(this.findPolicy(this.policy.controlLoop.trigger_policy)); + Policy trigger = new Policy(this.findPolicy(this.policy.getControlLoop().getTrigger_policy())); return trigger; } } @Override public ControlLoop getControlLoop() { - ControlLoop loop = new ControlLoop(this.policy.controlLoop); + ControlLoop loop = new ControlLoop(this.policy.getControlLoop()); return loop; } @@ -266,22 +376,22 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { for (PolicyResult result : results) { switch (result) { case FAILURE: - existingPolicy.failure = policyResultID; + existingPolicy.setFailure(policyResultID); break; case FAILURE_EXCEPTION: - existingPolicy.failure_exception = policyResultID; + existingPolicy.setFailure_exception(policyResultID); break; case FAILURE_RETRIES: - existingPolicy.failure_retries = policyResultID; + existingPolicy.setFailure_retries(policyResultID); break; case FAILURE_TIMEOUT: - existingPolicy.failure_timeout = policyResultID; + existingPolicy.setFailure_timeout(policyResultID); break; case FAILURE_GUARD: - existingPolicy.failure_guard = policyResultID; + existingPolicy.setFailure_guard(policyResultID); break; case SUCCESS: - existingPolicy.success = policyResultID; + existingPolicy.setSuccess(policyResultID); break; default: throw new BuilderException("Invalid PolicyResult " + result); @@ -299,40 +409,40 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { // // Check if the policy to remove is trigger_policy // - if (this.policy.controlLoop.trigger_policy.equals(policyID)) { - this.policy.controlLoop.trigger_policy = FinalResult.FINAL_OPENLOOP.toString(); + if (this.policy.getControlLoop().getTrigger_policy().equals(policyID)) { + this.policy.getControlLoop().setTrigger_policy(FinalResult.FINAL_OPENLOOP.toString()); } else { // // Update policies // - for (Policy policy : this.policy.policies) { - int index = this.policy.policies.indexOf(policy); - if (policy.success.equals(policyID)) { - policy.success = FinalResult.FINAL_SUCCESS.toString(); + for (Policy policy : this.policy.getPolicies()) { + int index = this.policy.getPolicies().indexOf(policy); + if (policy.getSuccess().equals(policyID)) { + policy.setSuccess(FinalResult.FINAL_SUCCESS.toString()); } - if (policy.failure.equals(policyID)) { - policy.failure = FinalResult.FINAL_FAILURE.toString(); + if (policy.getFailure().equals(policyID)) { + policy.setFailure(FinalResult.FINAL_FAILURE.toString()); } - if (policy.failure_retries.equals(policyID)) { - policy.failure_retries = FinalResult.FINAL_FAILURE_RETRIES.toString(); + if (policy.getFailure_retries().equals(policyID)) { + policy.setFailure_retries(FinalResult.FINAL_FAILURE_RETRIES.toString()); } - if (policy.failure_timeout.equals(policyID)) { - policy.failure_timeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString(); + if (policy.getFailure_timeout().equals(policyID)) { + policy.setFailure_timeout(FinalResult.FINAL_FAILURE_TIMEOUT.toString()); } - if (policy.failure_exception.equals(policyID)) { - policy.failure_exception = FinalResult.FINAL_FAILURE_EXCEPTION.toString(); + if (policy.getFailure_exception().equals(policyID)) { + policy.setFailure_exception(FinalResult.FINAL_FAILURE_EXCEPTION.toString()); } - if (policy.failure_guard.equals(policyID)) { - policy.failure_guard = FinalResult.FINAL_FAILURE_GUARD.toString(); + if (policy.getFailure_guard().equals(policyID)) { + policy.setFailure_guard(FinalResult.FINAL_FAILURE_GUARD.toString()); } - this.policy.policies.set(index, policy); + this.policy.getPolicies().set(index, policy); } } // // remove the policy // - boolean removed = this.policy.policies.remove(existingPolicy); + boolean removed = this.policy.getPolicies().remove(existingPolicy); return removed; } @@ -345,12 +455,12 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { // // reset policy results // - existingPolicy.success = FinalResult.FINAL_SUCCESS.toString(); - existingPolicy.failure = FinalResult.FINAL_FAILURE.toString(); - existingPolicy.failure_retries = FinalResult.FINAL_FAILURE_RETRIES.toString(); - existingPolicy.failure_timeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString(); - existingPolicy.failure_exception = FinalResult.FINAL_FAILURE_EXCEPTION.toString(); - existingPolicy.failure_guard = FinalResult.FINAL_FAILURE_GUARD.toString(); + existingPolicy.setSuccess(FinalResult.FINAL_SUCCESS.toString()); + existingPolicy.setFailure(FinalResult.FINAL_FAILURE.toString()); + existingPolicy.setFailure_retries(FinalResult.FINAL_FAILURE_RETRIES.toString()); + existingPolicy.setFailure_timeout(FinalResult.FINAL_FAILURE_TIMEOUT.toString()); + existingPolicy.setFailure_exception(FinalResult.FINAL_FAILURE_EXCEPTION.toString()); + existingPolicy.setFailure_guard(FinalResult.FINAL_FAILURE_GUARD.toString()); return new Policy(existingPolicy); } @@ -359,11 +469,11 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { // // Remove all existing operational policies // - this.policy.policies.clear(); + this.policy.getPolicies().clear(); // // Revert controlLoop back to an open loop // - this.policy.controlLoop.trigger_policy = FinalResult.FINAL_OPENLOOP.toString(); + this.policy.getControlLoop().setTrigger_policy(FinalResult.FINAL_OPENLOOP.toString()); return this; } @@ -376,7 +486,7 @@ public class ControlLoopPolicyBuilderImpl implements ControlLoopPolicyBuilder { // // Add operationsAccumulateParams to existingPolicy // - existingPolicy.operationsAccumulateParams = operationsAccumulateParams; + existingPolicy.setOperationsAccumulateParams(operationsAccumulateParams); return new Policy(existingPolicy); } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ResultsImpl.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ResultsImpl.java index f7941533c..9ab78566e 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ResultsImpl.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/builder/impl/ResultsImpl.java @@ -28,7 +28,7 @@ import org.openecomp.policy.controlloop.policy.builder.Results; public class ResultsImpl implements Results { private String specification; - private List<Message> messages = new LinkedList<Message>(); + private List<Message> messages = new LinkedList<>(); @Override public List<Message> getMessages() { @@ -42,7 +42,7 @@ public class ResultsImpl implements Results { @Override public boolean isValid() { - return (this.specification != null); + return this.specification != null; } public void addMessage(Message message) { diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Constraint.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Constraint.java index 7d7991787..85ddf066d 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Constraint.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Constraint.java @@ -26,37 +26,62 @@ import java.util.Map; public class Constraint { - public Integer num; - public String duration; - public Map<String, String> time_in_range; + private Integer num; + private String duration; + private Map<String, String> time_in_range; - public LinkedList<String> blacklist; + private List<String> blacklist; public Constraint() { - + // Do Nothing empty constructor. } + public Integer getNum() { + return num; + } + + public void setNum(Integer num) { + this.num = num; + } + + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration; + } + + public Map<String, String> getTime_in_range() { + return time_in_range; + } + + public void setTime_in_range(Map<String, String> time_in_range) { + this.time_in_range = time_in_range; + } + + public List<String> getBlacklist() { + return blacklist; + } + + public void setBlacklist(List<String> blacklist) { + this.blacklist = blacklist; + } + public Constraint(Integer num, String duration) { this.num = num; this.duration = duration; } public Constraint(List<String> blacklist) { - this.blacklist = new LinkedList<String>(blacklist); + this.blacklist = new LinkedList<>(blacklist); } - public Constraint(Integer num, String duration, Map<String, String> time_in_range) { - this(num, duration); - if (time_in_range != null) { - this.time_in_range = Collections.unmodifiableMap(time_in_range); - } - } - public Constraint(Integer num, String duration, List<String> blacklist) { this.num = num; this.duration = duration; - this.blacklist = new LinkedList<String>(blacklist); + this.blacklist = new LinkedList<>(blacklist); } public Constraint(Integer num, String duration, Map<String, String> time_in_range, List<String> blacklist) { @@ -64,7 +89,7 @@ public class Constraint { if (time_in_range != null) { this.time_in_range = Collections.unmodifiableMap(time_in_range); } - this.blacklist = new LinkedList<String>(blacklist); + this.blacklist = new LinkedList<>(blacklist); } public Constraint(Constraint constraint) { @@ -73,18 +98,14 @@ public class Constraint { if (constraint.time_in_range != null) { this.time_in_range = Collections.unmodifiableMap(constraint.time_in_range); } - this.blacklist = new LinkedList<String>(constraint.blacklist); + this.blacklist = new LinkedList<>(constraint.blacklist); } public boolean isValid() { - try { - if (num == null && duration != null) { - throw new NullPointerException(); - } - if (duration == null && num != null) { - throw new NullPointerException(); - } - } catch (Exception e) { + if (num == null && duration != null) { + return false; + } + if (duration == null && num != null) { return false; } return true; diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/ControlLoopGuard.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/ControlLoopGuard.java index 37fd431a0..cfc904823 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/ControlLoopGuard.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/ControlLoopGuard.java @@ -20,20 +20,37 @@ package org.openecomp.policy.controlloop.policy.guard; import java.util.LinkedList; +import java.util.List; public class ControlLoopGuard { - public Guard guard; + private Guard guard; - public LinkedList<GuardPolicy> guards; + private List<GuardPolicy> guards; public ControlLoopGuard() { - + //DO Nothing Empty Constructor } - public ControlLoopGuard(ControlLoopGuard CLGuard) { + public Guard getGuard() { + return guard; + } + + public void setGuard(Guard guard) { + this.guard = guard; + } + + public List<GuardPolicy> getGuards() { + return guards; + } + + public void setGuards(List<GuardPolicy> guards) { + this.guards = guards; + } + + public ControlLoopGuard(ControlLoopGuard cLGuard) { this.guard = new Guard(); - this.guards = new LinkedList<GuardPolicy>(CLGuard.guards); + this.guards = new LinkedList<>(cLGuard.guards); } @Override diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Guard.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Guard.java index f3e765107..ee0327c3d 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Guard.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/Guard.java @@ -21,14 +21,22 @@ package org.openecomp.policy.controlloop.policy.guard; public class Guard { - public static String VERSION = "2.0.0"; + private static final String DEFAULTVERSION = "2.0.0"; - public final String version = VERSION; + private String version = DEFAULTVERSION; public Guard() { - + //DO Nothing empty Constructor. } + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + @Override public String toString() { return "Guard [version=" + version + "]"; diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/GuardPolicy.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/GuardPolicy.java index 0195fac17..7eb8af6d1 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/GuardPolicy.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/GuardPolicy.java @@ -26,17 +26,65 @@ import java.util.UUID; public class GuardPolicy { - public String id = UUID.randomUUID().toString(); - public String name; - public String description; - public String actor; - public String recipe; - public LinkedList<Constraint> limit_constraints; + private String id = UUID.randomUUID().toString(); + private String name; + private String description; + private String actor; + private String recipe; + private List<Constraint> limit_constraints; public GuardPolicy() { - + //Do Nothing Empty Constructor. } + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getActor() { + return actor; + } + + public void setActor(String actor) { + this.actor = actor; + } + + public String getRecipe() { + return recipe; + } + + public void setRecipe(String recipe) { + this.recipe = recipe; + } + + public List<Constraint> getLimit_constraints() { + return limit_constraints; + } + + public void setLimit_constraints(List<Constraint> limit_constraints) { + this.limit_constraints = limit_constraints; + } + public GuardPolicy(String id) { this.id = id; } @@ -82,20 +130,7 @@ public class GuardPolicy { } public boolean isValid() { - try { - if (id == null) { - throw new NullPointerException(); - } - if (name == null) { - throw new NullPointerException(); - } - if (actor == null) { - throw new NullPointerException(); - } - if (recipe == null) { - throw new NullPointerException(); - } - } catch (Exception e) { + if(id==null || name ==null|| actor==null|| recipe==null){ return false; } return true; @@ -104,7 +139,7 @@ public class GuardPolicy { @Override public String toString() { return "Policy [id=" + id + ", name=" + name + ", description=" + description + ", actor=" + actor + ", recipe=" - + recipe + ", limit_constraints=" + limit_constraints + "]"; + + recipe + ", limitConstraints=" + limit_constraints + "]"; } @Override diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/ControlLoopGuardBuilder.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/ControlLoopGuardBuilder.java index c09757db6..d55510709 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/ControlLoopGuardBuilder.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/ControlLoopGuardBuilder.java @@ -113,6 +113,9 @@ public interface ControlLoopGuardBuilder { */ public static class Factory { + private Factory(){ + //Do Nothing Private Constructor. + } /** * @param guard * @return ControlLoopGuardBuilder object @@ -120,9 +123,8 @@ public interface ControlLoopGuardBuilder { */ public static ControlLoopGuardBuilder buildControlLoopGuard (Guard guard) throws BuilderException { - ControlLoopGuardBuilder builder = new ControlLoopGuardBuilderImpl(guard); + return new ControlLoopGuardBuilderImpl(guard); - return builder; } } } diff --git a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/impl/ControlLoopGuardBuilderImpl.java b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/impl/ControlLoopGuardBuilderImpl.java index b119620e3..bd6a3e42f 100644 --- a/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/impl/ControlLoopGuardBuilderImpl.java +++ b/ECOMP-ControlloopPolicy/src/main/java/org/openecomp/policy/controlloop/policy/guard/builder/impl/ControlLoopGuardBuilderImpl.java @@ -40,11 +40,11 @@ import org.yaml.snakeyaml.Yaml; public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { - private ControlLoopGuard CLGuard; + private ControlLoopGuard cLGuard; public ControlLoopGuardBuilderImpl(Guard guard) { - CLGuard = new ControlLoopGuard(); - CLGuard.guard = guard; + cLGuard = new ControlLoopGuard(); + cLGuard.setGuard(guard); } @Override @@ -56,10 +56,10 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { if (!policy.isValid()) { throw new BuilderException("Invalid guard policy - some required fields are missing"); } - if (CLGuard.guards == null) { - CLGuard.guards = new LinkedList<GuardPolicy>(); + if (cLGuard.getGuards() == null) { + cLGuard.setGuards(new LinkedList<>()); } - CLGuard.guards.add(policy); + cLGuard.getGuards().add(policy); } return this; } @@ -69,16 +69,16 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { if (policies == null) { throw new BuilderException("GuardPolicy must not be null"); } - if (CLGuard.guards == null) { + if (cLGuard.getGuards() == null) { throw new BuilderException("No existing guard policies to remove"); } for (GuardPolicy policy : policies) { if (!policy.isValid()) { throw new BuilderException("Invalid guard policy - some required fields are missing"); } - boolean removed = CLGuard.guards.remove(policy); + boolean removed = cLGuard.getGuards().remove(policy); if (!removed) { - throw new BuilderException("Unknown guard policy: " + policy.name); + throw new BuilderException("Unknown guard policy: " + policy.getName()); } } return this; @@ -86,7 +86,7 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { @Override public ControlLoopGuardBuilder removeAllGuardPolicies() throws BuilderException { - CLGuard.guards.clear(); + cLGuard.getGuards().clear(); return this; } @@ -98,29 +98,33 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { if (constraints == null) { throw new BuilderException("Constraint much not be null"); } + if (!addLimitConstraints(id,constraints)) { + throw new BuilderException("No existing guard policy matching the id: " + id); + } + return this; + } + + private boolean addLimitConstraints(String id, Constraint... constraints) throws BuilderException { boolean exist = false; - for (GuardPolicy policy: CLGuard.guards) { + for (GuardPolicy policy: cLGuard.getGuards()) { // // We could have only one guard policy matching the id // - if (policy.id.equals(id)) { + if (policy.getId().equals(id)) { exist = true; for (Constraint cons: constraints) { if (!cons.isValid()) { throw new BuilderException("Invalid guard constraint - some required fields are missing"); } - if (policy.limit_constraints == null) { - policy.limit_constraints = new LinkedList<Constraint>(); + if (policy.getLimit_constraints() == null) { + policy.setLimit_constraints(new LinkedList<>()); } - policy.limit_constraints.add(cons); + policy.getLimit_constraints().add(cons); } break; } } - if (exist == false) { - throw new BuilderException("No existing guard policy matching the id: " + id); - } - return this; + return exist; } @Override @@ -131,18 +135,25 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { if (constraints == null) { throw new BuilderException("Constraint much not be null"); } + if (!removeConstraints(id, constraints)) { + throw new BuilderException("No existing guard policy matching the id: " + id); + } + return this; + } + + private boolean removeConstraints(String id, Constraint... constraints) throws BuilderException { boolean exist = false; - for (GuardPolicy policy: CLGuard.guards) { + for (GuardPolicy policy: cLGuard.getGuards()) { // // We could have only one guard policy matching the id // - if (policy.id.equals(id)) { + if (policy.getId().equals(id)) { exist = true; for (Constraint cons: constraints) { if (!cons.isValid()) { throw new BuilderException("Invalid guard constraint - some required fields are missing"); } - boolean removed = policy.limit_constraints.remove(cons); + boolean removed = policy.getLimit_constraints().remove(cons); if (!removed) { throw new BuilderException("Unknown guard constraint: " + cons); } @@ -150,28 +161,25 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { break; } } - if (exist == false) { - throw new BuilderException("No existing guard policy matching the id: " + id); - } - return this; + return exist; } @Override public ControlLoopGuardBuilder removeAllLimitConstraints(String id) throws BuilderException { - if (CLGuard.guards == null || CLGuard.guards.isEmpty()) { + if (cLGuard.getGuards() == null || cLGuard.getGuards().isEmpty()) { throw new BuilderException("No guard policies exist"); } if (id == null) { throw new BuilderException("The id of target guard policy must not be null"); } boolean exist = false; - for (GuardPolicy policy: CLGuard.guards) { - if (policy.id.equals(id)) { + for (GuardPolicy policy: cLGuard.getGuards()) { + if (policy.getId().equals(id)) { exist = true; - policy.limit_constraints.clear(); + policy.getLimit_constraints().clear(); } } - if (exist == false) { + if (!exist) { throw new BuilderException("No existing guard policy matching the id: " + id); } return this; @@ -180,7 +188,7 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { private class BuilderCompilerCallback implements ControlLoopCompilerCallback { - public ResultsImpl results = new ResultsImpl(); + private ResultsImpl results = new ResultsImpl(); @Override public boolean onWarning(String message) { @@ -197,8 +205,7 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { @Override public ControlLoopGuard getControlLoopGuard() { - ControlLoopGuard guard = new ControlLoopGuard(this.CLGuard); - return guard; + return new ControlLoopGuard(this.cLGuard); } @@ -211,7 +218,7 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { options.setDefaultFlowStyle(FlowStyle.BLOCK); options.setPrettyFlow(true); Yaml yaml = new Yaml(options); - String dumpedYaml = yaml.dump(CLGuard); + String dumpedYaml = yaml.dump(cLGuard); // // This is our callback class for our compiler // @@ -220,7 +227,7 @@ public class ControlLoopGuardBuilderImpl implements ControlLoopGuardBuilder { // Compile it // try { - ControlLoopGuardCompiler.compile(CLGuard, callback); + ControlLoopGuardCompiler.compile(cLGuard, callback); } catch (CompilerException e) { callback.results.addMessage(new MessageImpl(e.getMessage(), MessageLevel.EXCEPTION)); } |