Adjust AutoscalerRuleEvaluator to use it for building any new drls file
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6cda475d Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6cda475d Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6cda475d Branch: refs/heads/master Commit: 6cda475d456f684417249786cc8e0339934e9036 Parents: b5f992b Author: Lahiru Sandaruwan <[email protected]> Authored: Wed Dec 3 20:05:02 2014 +0530 Committer: Lahiru Sandaruwan <[email protected]> Committed: Wed Dec 3 20:06:00 2014 +0530 ---------------------------------------------------------------------- .../rule/AutoscalerRuleEvaluator.java | 291 ++++++++++--------- 1 file changed, 150 insertions(+), 141 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/6cda475d/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java index 7c7f70a..57fd4a0 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/AutoscalerRuleEvaluator.java @@ -35,6 +35,8 @@ import org.drools.runtime.rule.FactHandle; import org.wso2.carbon.utils.CarbonUtils; import java.io.File; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; /** @@ -45,174 +47,181 @@ public class AutoscalerRuleEvaluator { private static final Log log = LogFactory.getLog(AutoscalerRuleEvaluator.class); - //vm drool files as default - private String minCheckDroolFileName = StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE; - private String obsoleteCheckDroolFileName = StratosConstants.CONTAINER_OBSOLETE_CHECK_DROOL_FILE; - private String scaleCheckDroolFileName = StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE; - private String terminateAllDroolFileName = "terminateall.drl"; - - private static KnowledgeBase minCheckKbase; - private static KnowledgeBase obsoleteCheckKbase; - private static KnowledgeBase scaleCheckKbase; - @SuppressWarnings("unused") - private static KnowledgeBase terminateAllKbase; - - public AutoscalerRuleEvaluator(String minCheckDroolFileName, String obsoleteCheckDroolFileName, String scaleCheckDroolFileName){ - - if (minCheckDroolFileName != null && !minCheckDroolFileName.isEmpty()) { - this.minCheckDroolFileName = minCheckDroolFileName; - } - - if (obsoleteCheckDroolFileName != null && !obsoleteCheckDroolFileName.isEmpty()) { - this.obsoleteCheckDroolFileName = obsoleteCheckDroolFileName; - } - - if (scaleCheckDroolFileName != null && !scaleCheckDroolFileName.isEmpty()) { - this.scaleCheckDroolFileName = scaleCheckDroolFileName; - } - - minCheckKbase = readKnowledgeBase(this.minCheckDroolFileName); +// //vm drool files as default +// private String minCheckDroolFileName = StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE; +// private String obsoleteCheckDroolFileName = StratosConstants.CONTAINER_OBSOLETE_CHECK_DROOL_FILE; +// private String scaleCheckDroolFileName = StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE; +// +// private static KnowledgeBase minCheckKbase; +// private static KnowledgeBase obsoleteCheckKbase; +// private static KnowledgeBase scaleCheckKbase; - if (log.isDebugEnabled()) { - log.debug("Minimum check rule is parsed successfully : " + this.minCheckDroolFileName); - } - - obsoleteCheckKbase = readKnowledgeBase(this.obsoleteCheckDroolFileName); + private static Map<String, KnowledgeBase> knowledgeBases; - if (log.isDebugEnabled()) { - log.debug("Obsolete check rule is parsed successfully : " + this.obsoleteCheckDroolFileName); - } + public AutoscalerRuleEvaluator(){ - scaleCheckKbase = readKnowledgeBase(this.scaleCheckDroolFileName); + knowledgeBases = new HashMap<String, KnowledgeBase>(); +// if (minCheckDroolFileName != null && !minCheckDroolFileName.isEmpty()) { +// this.minCheckDroolFileName = minCheckDroolFileName; +// } +// +// if (obsoleteCheckDroolFileName != null && !obsoleteCheckDroolFileName.isEmpty()) { +// this.obsoleteCheckDroolFileName = obsoleteCheckDroolFileName; +// } +// +// if (scaleCheckDroolFileName != null && !scaleCheckDroolFileName.isEmpty()) { +// this.scaleCheckDroolFileName = scaleCheckDroolFileName; +// } +// +// minCheckKbase = readKnowledgeBase(this.minCheckDroolFileName); +// +// if (log.isDebugEnabled()) { +// log.debug("Minimum check rule is parsed successfully : " + this.minCheckDroolFileName); +// } +// +// obsoleteCheckKbase = readKnowledgeBase(this.obsoleteCheckDroolFileName); +// +// if (log.isDebugEnabled()) { +// log.debug("Obsolete check rule is parsed successfully : " + this.obsoleteCheckDroolFileName); +// } +// +// scaleCheckKbase = readKnowledgeBase(this.scaleCheckDroolFileName); +// +// if (log.isDebugEnabled()) { +// log.debug("Scale check rule is parsed successfully : " + this.scaleCheckDroolFileName); +// } +// + } - if (log.isDebugEnabled()) { - log.debug("Scale check rule is parsed successfully : " + this.scaleCheckDroolFileName); - } - - terminateAllKbase = readKnowledgeBase(this.terminateAllDroolFileName); + public void parseAndBuildKnowledgeBaseForDroolsFile(String drlFileName){ + + knowledgeBases.put(drlFileName, readKnowledgeBase(drlFileName)); if (log.isDebugEnabled()) { - log.debug("Terminate all rule is parsed successfully : " + this.terminateAllDroolFileName); + log.debug("Drools file is parsed successfully : " + drlFileName); } + } - public static FactHandle evaluateMinCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { - if (handle == null) { - ksession.setGlobal("$delegator", new RuleTasksDelegator()); - handle = ksession.insert(obj); - } else { - ksession.update(handle, obj); - } - ksession.fireAllRules(); - if(log.isDebugEnabled()){ - log.debug(String.format("Minimum check executed for : %s ", obj)); - } - return handle; - } - - public static FactHandle evaluateObsoleteCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { - if (handle == null) { - ksession.setGlobal("$delegator", new RuleTasksDelegator()); - handle = ksession.insert(obj); - } else { - ksession.update(handle, obj); - } - ksession.fireAllRules(); - if(log.isDebugEnabled()){ - log.debug(String.format("Obsolete check executed for : %s ", obj)); - } - return handle; - } + public static FactHandle evaluate(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { - public static FactHandle evaluateScaleCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { - if (handle == null) { - ksession.setGlobal("$delegator", new RuleTasksDelegator()); - handle = ksession.insert(obj); - } else { - ksession.update(handle, obj); - } - ksession.fireAllRules(); - if(log.isDebugEnabled()){ - log.debug(String.format("Scale check executed for : %s ", obj)); - } - return handle; - } - public static FactHandle evaluateDependentScaleCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { if (handle == null) { - ksession.setGlobal("$delegator", new RuleTasksDelegator()); + ksession.setGlobal("delegator", new RuleTasksDelegator()); handle = ksession.insert(obj); } else { ksession.update(handle, obj); } ksession.fireAllRules(); if(log.isDebugEnabled()){ - log.debug(String.format("Dependent scale check executed for : %s ", obj)); - } - return handle; - } - - public static FactHandle evaluateTerminateAll(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { - if (handle == null) { - ksession.setGlobal("$delegator", new RuleTasksDelegator()); - handle = ksession.insert(obj); - } else { - ksession.update(handle, obj); - } - ksession.fireAllRules(); - if(log.isDebugEnabled()){ - log.debug(String.format("Terminate all check executed for : %s ", obj)); - } - return handle; - } - - public static FactHandle evaluateTerminateDependency(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { - if(log.isDebugEnabled()){ - log.debug(String.format("Terminate dependency check executing for : %s ", obj)); - } - if (handle == null) { - ksession.setGlobal("$delegator", new RuleTasksDelegator()); - handle = ksession.insert(obj); - } else { - ksession.update(handle, obj); - } - if(log.isDebugEnabled()){ - log.debug(String.format("Terminate dependency check firing rules for : %s ", ksession)); - } - ksession.fireAllRules(); - if(log.isDebugEnabled()){ - log.debug(String.format("Terminate dependency check executed for : %s ", obj)); + log.debug(String.format("Minimum check executed for : %s ", obj)); } return handle; } +// +// public static FactHandle evaluateObsoleteCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { +// if (handle == null) { +// ksession.setGlobal("delegator", new RuleTasksDelegator()); +// handle = ksession.insert(obj); +// } else { +// ksession.update(handle, obj); +// } +// ksession.fireAllRules(); +// if(log.isDebugEnabled()){ +// log.debug(String.format("Obsolete check executed for : %s ", obj)); +// } +// return handle; +// } +// +// public static FactHandle evaluateScaleCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { +// if (handle == null) { +// ksession.setGlobal("delegator", new RuleTasksDelegator()); +// handle = ksession.insert(obj); +// } else { +// ksession.update(handle, obj); +// } +// ksession.fireAllRules(); +// if(log.isDebugEnabled()){ +// log.debug(String.format("Scale check executed for : %s ", obj)); +// } +// return handle; +// } +// +// public static FactHandle evaluateDependentScaleCheck(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { +// if (handle == null) { +// ksession.setGlobal("delegator", new RuleTasksDelegator()); +// handle = ksession.insert(obj); +// } else { +// ksession.update(handle, obj); +// } +// ksession.fireAllRules(); +// if(log.isDebugEnabled()){ +// log.debug(String.format("Dependent scale check executed for : %s ", obj)); +// } +// return handle; +// } +// +// public static FactHandle evaluateTerminateAll(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { +// if (handle == null) { +// ksession.setGlobal("delegator", new RuleTasksDelegator()); +// handle = ksession.insert(obj); +// } else { +// ksession.update(handle, obj); +// } +// ksession.fireAllRules(); +// if(log.isDebugEnabled()){ +// log.debug(String.format("Terminate all check executed for : %s ", obj)); +// } +// return handle; +// } +// +// public static FactHandle evaluateTerminateDependency(StatefulKnowledgeSession ksession, FactHandle handle, Object obj) { +// if(log.isDebugEnabled()){ +// log.debug(String.format("Terminate dependency check executing for : %s ", obj)); +// } +// if (handle == null) { +// ksession.setGlobal("delegator", new RuleTasksDelegator()); +// handle = ksession.insert(obj); +// } else { +// ksession.update(handle, obj); +// } +// if(log.isDebugEnabled()){ +// log.debug(String.format("Terminate dependency check firing rules for : %s ", ksession)); +// } +// ksession.fireAllRules(); +// if(log.isDebugEnabled()){ +// log.debug(String.format("Terminate dependency check executed for : %s ", obj)); +// } +// return handle; +// } - public StatefulKnowledgeSession getMinCheckStatefulSession() { - StatefulKnowledgeSession ksession; - ksession = minCheckKbase.newStatefulKnowledgeSession(); - ksession.setGlobal("log", RuleLog.getInstance()); - return ksession; - } - - public StatefulKnowledgeSession getObsoleteCheckStatefulSession() { - StatefulKnowledgeSession ksession; - ksession = obsoleteCheckKbase.newStatefulKnowledgeSession(); - ksession.setGlobal("log", RuleLog.getInstance()); - return ksession; - } - - public StatefulKnowledgeSession getScaleCheckStatefulSession() { + public StatefulKnowledgeSession getStatefulSession(String drlFileName) { StatefulKnowledgeSession ksession; - ksession = scaleCheckKbase.newStatefulKnowledgeSession(); + ksession = knowledgeBases.get(drlFileName).newStatefulKnowledgeSession(); ksession.setGlobal("log", RuleLog.getInstance()); return ksession; } - public StatefulKnowledgeSession getTerminateAllStatefulSession() { - StatefulKnowledgeSession ksession; - ksession = scaleCheckKbase.newStatefulKnowledgeSession(); - ksession.setGlobal("log", RuleLog.getInstance()); - return ksession; - } +// public StatefulKnowledgeSession getObsoleteCheckStatefulSession() { +// StatefulKnowledgeSession ksession; +// ksession = obsoleteCheckKbase.newStatefulKnowledgeSession(); +// ksession.setGlobal("log", RuleLog.getInstance()); +// return ksession; +// } +// +// public StatefulKnowledgeSession getScaleCheckStatefulSession() { +// StatefulKnowledgeSession ksession; +// ksession = scaleCheckKbase.newStatefulKnowledgeSession(); +// ksession.setGlobal("log", RuleLog.getInstance()); +// return ksession; +// } +// +// public StatefulKnowledgeSession getTerminateAllStatefulSession() { +// StatefulKnowledgeSession ksession; +// ksession = scaleCheckKbase.newStatefulKnowledgeSession(); +// ksession.setGlobal("log", RuleLog.getInstance()); +// return ksession; +// } // public static String getLbClusterId(ClusterLevelPartitionContext clusterMonitorPartitionContext, String nwpartitionId) { // Properties props = clusterMonitorPartitionContext.getProperties();
