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();

Reply via email to