aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/common/policy-yaml/src/main/java
diff options
context:
space:
mode:
authorMichael Borokhovich <michael@research.att.com>2017-07-20 09:53:57 -0400
committerMichael Borokhovich <michael@research.att.com>2017-07-20 12:11:23 -0400
commitfa09813ca39cbdb7a0ac6a38507d4ea96e28879f (patch)
treec9b2cc4bdf2c109ab43f79afd1af4909f813636b /controlloop/common/policy-yaml/src/main/java
parentd3c335e97b9d262588696784551e8bd02ce8331f (diff)
[POLICY-80] Adding the Policy Guard features
Two Policy Guard features added: Frequency-limiter and Blacklist. Change-Id: I48184ab0ae9760c9ea7594cd7346b456aa964d48 Signed-off-by: Michael Borokhovich <michael@research.att.com>
Diffstat (limited to 'controlloop/common/policy-yaml/src/main/java')
-rw-r--r--controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/Constraint.java78
-rw-r--r--controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/GuardPolicy.java73
-rw-r--r--controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/MatchParameters.java138
3 files changed, 213 insertions, 76 deletions
diff --git a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/Constraint.java b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/Constraint.java
index 54f230876..e13318089 100644
--- a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/Constraint.java
+++ b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/Constraint.java
@@ -27,10 +27,9 @@ import java.util.Map;
public class Constraint {
- public Integer num;
- //public String duration;
- public Map<String, String> duration;
- public Map<String, String> time_in_range;
+ public Integer freq_limit_per_target;
+ public Map<String, String> time_window;
+ public Map<String, String> active_time_range;
public LinkedList<String> blacklist;
@@ -38,9 +37,11 @@ public class Constraint {
}
- public Constraint(Integer num, Map<String, String> duration) {
- this.num = num;
- this.duration = duration;
+ public Constraint(Integer freq_limit_per_target, Map<String, String> time_window) {
+ this.freq_limit_per_target = freq_limit_per_target;
+ if (time_window != null) {
+ this.time_window = Collections.unmodifiableMap(time_window);
+ }
}
public Constraint(List<String> blacklist) {
@@ -48,38 +49,43 @@ public class Constraint {
}
- public Constraint(Integer num, Map<String, String> duration, List<String> blacklist) {
- this.num = num;
- this.duration = Collections.unmodifiableMap(duration);
+ public Constraint(Integer freq_limit_per_target, Map<String, String> time_window, List<String> blacklist) {
+ this.freq_limit_per_target = freq_limit_per_target;
+ this.time_window = Collections.unmodifiableMap(time_window);
this.blacklist = new LinkedList<String>(blacklist);
}
- public Constraint(Integer num, Map<String, String> duration, Map<String, String> time_in_range, List<String> blacklist) {
- //this(num, duration);
- if (duration != null) {
- this.duration = Collections.unmodifiableMap(duration);
- }
- if (time_in_range != null) {
- this.time_in_range = Collections.unmodifiableMap(time_in_range);
+ public Constraint(Integer freq_limit_per_target, Map<String, String> time_window, Map<String, String> active_time_range, List<String> blacklist) {
+ this(freq_limit_per_target, time_window);
+ if (active_time_range != null) {
+ this.active_time_range = Collections.unmodifiableMap(active_time_range);
}
this.blacklist = new LinkedList<String>(blacklist);
}
+ public Constraint(Integer freq_limit_per_target, Map<String, String> time_window, Map<String, String> active_time_range) {
+ this(freq_limit_per_target, time_window);
+ if (active_time_range != null) {
+ this.active_time_range = Collections.unmodifiableMap(active_time_range);
+ }
+ }
+
public Constraint(Constraint constraint) {
- this.num = constraint.num;
- this.duration = constraint.duration;
- if (constraint.time_in_range != null) {
- this.time_in_range = Collections.unmodifiableMap(constraint.time_in_range);
+ this.freq_limit_per_target = constraint.freq_limit_per_target;
+ this.time_window = constraint.time_window;
+ if (constraint.active_time_range != null) {
+ this.active_time_range = Collections.unmodifiableMap(constraint.active_time_range);
}
this.blacklist = new LinkedList<String>(constraint.blacklist);
}
public boolean isValid() {
+ //System.out.println("freq_limit_per_target: " + freq_limit_per_target + " time_window" + time_window );
try {
- if (num == null && duration != null) {
+ if (freq_limit_per_target == null && time_window != null) {
throw new NullPointerException();
}
- if (duration == null && num != null) {
+ if (time_window == null && freq_limit_per_target != null) {
throw new NullPointerException();
}
} catch (Exception e) {
@@ -90,16 +96,16 @@ public class Constraint {
@Override
public String toString() {
- return "Constraint [num=" + num + ", duration=" + duration + ", time_in_range=" + time_in_range + ", blacklist=" + blacklist + "]";
+ return "Constraint [freq_limit_per_target=" + freq_limit_per_target + ", time_window=" + time_window + ", active_time_range=" + active_time_range + ", blacklist=" + blacklist + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((num == null) ? 0 : num.hashCode());
- result = prime * result + ((duration == null) ? 0 : duration.hashCode());
- result = prime * result + ((time_in_range == null) ? 0 : time_in_range.hashCode());
+ result = prime * result + ((freq_limit_per_target == null) ? 0 : freq_limit_per_target.hashCode());
+ result = prime * result + ((time_window == null) ? 0 : time_window.hashCode());
+ result = prime * result + ((active_time_range == null) ? 0 : active_time_range.hashCode());
result = prime * result + ((blacklist == null) ? 0 : blacklist.hashCode());
return result;
}
@@ -113,20 +119,20 @@ public class Constraint {
if (getClass() != obj.getClass())
return false;
Constraint other = (Constraint) obj;
- if (num == null) {
- if (other.num != null)
+ if (freq_limit_per_target == null) {
+ if (other.freq_limit_per_target != null)
return false;
- } else if (!num.equals(other.num))
+ } else if (!freq_limit_per_target.equals(other.freq_limit_per_target))
return false;
- if (duration == null) {
- if (other.duration != null)
+ if (time_window == null) {
+ if (other.time_window != null)
return false;
- } else if (!duration.equals(other.duration))
+ } else if (!time_window.equals(other.time_window))
return false;
- if (time_in_range == null) {
- if (other.time_in_range != null)
+ if (active_time_range == null) {
+ if (other.active_time_range != null)
return false;
- } else if (!time_in_range.equals(other.time_in_range))
+ } else if (!active_time_range.equals(other.active_time_range))
return false;
if (blacklist == null) {
if (other.blacklist != null)
diff --git a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/GuardPolicy.java b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/GuardPolicy.java
index a850b36ed..f0267b3ad 100644
--- a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/GuardPolicy.java
+++ b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/GuardPolicy.java
@@ -30,11 +30,11 @@ public class GuardPolicy {
public String id = UUID.randomUUID().toString();
public String name;
public String description;
- public String actor;
- public String recipe;
+ public MatchParameters match_parameters;
public LinkedList<Constraint> limit_constraints;
- public GuardPolicy() {
+
+public GuardPolicy() {
}
@@ -42,41 +42,45 @@ public class GuardPolicy {
this.id = id;
}
- public GuardPolicy(String name, String actor, String recipe) {
+ public GuardPolicy(String name, MatchParameters match_parameters) {
this.name = name;
- this.actor = actor;
- this.recipe = recipe;
+ System.out.println("match_parameters: " + match_parameters);
+ this.match_parameters = new MatchParameters(match_parameters);
}
- public GuardPolicy(String id, String name, String description, String actor, String recipe) {
- this(name, actor, recipe);
+ public GuardPolicy(String id, String name, String description, MatchParameters match_parameters) {
+ this(name, match_parameters);
this.id = id;
this.description = description;
}
- public GuardPolicy(String name, String actor, String recipe, List<Constraint> limit_constraints) {
- this(name, actor, recipe);
+ public GuardPolicy(String name, MatchParameters match_parameters, List<Constraint> limit_constraints) {
+ this(name, match_parameters);
if (limit_constraints != null) {
this.limit_constraints = (LinkedList<Constraint>) Collections.unmodifiableList(limit_constraints);
}
}
- public GuardPolicy(String name, String description, String actor, String recipe, List<Constraint> limit_constraints) {
- this(name, actor, recipe, limit_constraints);
+ public GuardPolicy(String name, String description, MatchParameters match_parameters, List<Constraint> limit_constraints) {
+ this(name, match_parameters, limit_constraints);
this.description = description;
}
- public GuardPolicy(String id, String name, String description, String actor, String recipe, List<Constraint> limit_constraints) {
- this(name, description, actor, recipe, limit_constraints);
+ public GuardPolicy(String id, String name, String description, MatchParameters match_parameters, List<Constraint> limit_constraints) {
+ this(name, description, match_parameters, limit_constraints);
this.id = id;
}
+
+
+
+
+
public GuardPolicy(GuardPolicy policy) {
this.id = policy.id;
this.name = policy.name;
this.description = policy.description;
- this.actor = policy.actor;
- this.recipe = policy.recipe;
+ this.match_parameters = new MatchParameters(policy.match_parameters);
if (policy.limit_constraints != null) {
this.limit_constraints = (LinkedList<Constraint>) Collections.unmodifiableList(policy.limit_constraints);
}
@@ -90,12 +94,7 @@ public class GuardPolicy {
if (name == null) {
throw new NullPointerException();
}
- if (actor == null) {
- throw new NullPointerException();
- }
- if (recipe == null) {
- throw new NullPointerException();
- }
+
} catch (Exception e) {
return false;
}
@@ -104,20 +103,19 @@ public class GuardPolicy {
@Override
public String toString() {
- return "Policy [id=" + id + ", name=" + name + ", description=" + description + ", actor=" + actor + ", recipe="
- + recipe + ", limit_constraints=" + limit_constraints + "]";
+ return "GuardPolicy [id=" + id + ", name=" + name + ", description=" + description + ", match_parameters="
+ + match_parameters + ", limit_constraints=" + limit_constraints + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((actor == null) ? 0 : actor.hashCode());
result = prime * result + ((description == null) ? 0 : description.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((limit_constraints == null) ? 0 : limit_constraints.hashCode());
- result = prime * result + ((recipe == null) ? 0 : recipe.hashCode());
+ result = prime * result + ((match_parameters == null) ? 0 : match_parameters.hashCode());
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@@ -130,11 +128,6 @@ public class GuardPolicy {
if (getClass() != obj.getClass())
return false;
GuardPolicy other = (GuardPolicy) obj;
- if (actor == null) {
- if (other.actor != null)
- return false;
- } else if (!actor.equals(other.actor))
- return false;
if (description == null) {
if (other.description != null)
return false;
@@ -145,20 +138,20 @@ public class GuardPolicy {
return false;
} else if (!id.equals(other.id))
return false;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
if (limit_constraints == null) {
if (other.limit_constraints != null)
return false;
} else if (!limit_constraints.equals(other.limit_constraints))
return false;
- if (recipe == null) {
- if (other.recipe != null)
+ if (match_parameters == null) {
+ if (other.match_parameters != null)
+ return false;
+ } else if (!match_parameters.equals(other.match_parameters))
+ return false;
+ if (name == null) {
+ if (other.name != null)
return false;
- } else if (!recipe.equals(other.recipe))
+ } else if (!name.equals(other.name))
return false;
return true;
}
diff --git a/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/MatchParameters.java b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/MatchParameters.java
new file mode 100644
index 000000000..c96ecf710
--- /dev/null
+++ b/controlloop/common/policy-yaml/src/main/java/org/onap/policy/controlloop/policy/guard/MatchParameters.java
@@ -0,0 +1,138 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * policy-yaml
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.controlloop.policy.guard;
+
+import java.util.LinkedList;
+
+
+public class MatchParameters {
+
+ //public ControlLoopParameter controlLoop;
+ public String controlLoopName;
+ public String actor;
+ public String recipe;
+ public LinkedList<String> targets;
+
+
+ public MatchParameters() {
+
+ }
+
+ public MatchParameters(String actor, String recipe) {
+ this.actor = actor;
+ this.recipe = recipe;
+ }
+
+ public MatchParameters(String actor, String recipe, LinkedList<String> targets) {
+ this(actor, recipe);
+ if (targets != null) {
+ this.targets = new LinkedList<String>(targets);
+ }
+ }
+
+
+ public MatchParameters(String controlLoopName, String actor, String recipe, LinkedList<String> targets) {
+ this(actor, recipe, targets);
+ this.controlLoopName = controlLoopName;
+ }
+
+
+
+
+
+ public MatchParameters(MatchParameters matchParameters) {
+
+ this.controlLoopName = matchParameters.controlLoopName;
+ this.actor = matchParameters.actor;
+ this.recipe = matchParameters.recipe;
+ if (matchParameters.targets != null) {
+ //this.targets = (LinkedList<String>) Collections.unmodifiableList(matchParameters.targets);
+ this.targets = new LinkedList<String>(matchParameters.targets);
+ }
+ }
+
+ /*
+ public boolean isValid() {
+ try {
+ if (actor == null) {
+ throw new NullPointerException();
+ }
+ if (recipe == null) {
+ throw new NullPointerException();
+ }
+ } catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+ */
+
+ @Override
+ public String toString() {
+ return "MatchParameters [controlLoopName=" + controlLoopName + ", actor=" + actor + ", recipe=" + recipe
+ + ", targets=" + targets + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((actor == null) ? 0 : actor.hashCode());
+ result = prime * result + ((controlLoopName == null) ? 0 : controlLoopName.hashCode());
+ result = prime * result + ((recipe == null) ? 0 : recipe.hashCode());
+ result = prime * result + ((targets == null) ? 0 : targets.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ MatchParameters other = (MatchParameters) obj;
+ if (actor == null) {
+ if (other.actor != null)
+ return false;
+ } else if (!actor.equals(other.actor))
+ return false;
+ if (controlLoopName == null) {
+ if (other.controlLoopName != null)
+ return false;
+ } else if (!controlLoopName.equals(other.controlLoopName))
+ return false;
+ if (recipe == null) {
+ if (other.recipe != null)
+ return false;
+ } else if (!recipe.equals(other.recipe))
+ return false;
+ if (targets == null) {
+ if (other.targets != null)
+ return false;
+ } else if (!targets.equals(other.targets))
+ return false;
+ return true;
+ }
+
+
+}