You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2014/01/06 14:13:26 UTC

git commit: Rules management code for terminate all rule

Updated Branches:
  refs/heads/master 04a16d02f -> ec0c9a7ff


Rules management code for terminate all rule


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/ec0c9a7f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/ec0c9a7f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/ec0c9a7f

Branch: refs/heads/master
Commit: ec0c9a7ff2e6462fa661fca0995d3b57637cfa01
Parents: 04a16d0
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Mon Jan 6 18:48:03 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Mon Jan 6 18:48:03 2014 +0530

----------------------------------------------------------------------
 .../rule/AutoscalerRuleEvaluator.java           | 31 ++++++++++++++++++++
 1 file changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ec0c9a7f/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 21eedd5..21ab342 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
@@ -45,9 +45,11 @@ public class AutoscalerRuleEvaluator {
 
 	private static final String DRL_FILE_NAME = "mincheck.drl";
 	private static final String SCALING_DRL_FILE_NAME = "scaling.drl";
+	private static final String TERMINATE_ALL_DRL_FILE_NAME = "terminateall.drl";
 
 	private static KnowledgeBase minCheckKbase;
 	private static KnowledgeBase scaleCheckKbase;
+	private static KnowledgeBase terminateAllKbase;
 
     public AutoscalerRuleEvaluator(){
 
@@ -62,6 +64,11 @@ public class AutoscalerRuleEvaluator {
         if (log.isDebugEnabled()) {
             log.debug("Scale check rule is parsed successfully");
         }
+        terminateAllKbase = readKnowledgeBase(TERMINATE_ALL_DRL_FILE_NAME);
+
+        if (log.isDebugEnabled()) {
+            log.debug("Terminate all rule is parsed successfully");
+        }
     }
 
     
@@ -101,6 +108,24 @@ public class AutoscalerRuleEvaluator {
 
 
 
+    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 StatefulKnowledgeSession getMinCheckStatefulSession() {
         StatefulKnowledgeSession ksession;
         ksession = minCheckKbase.newStatefulKnowledgeSession();
@@ -113,6 +138,12 @@ public class AutoscalerRuleEvaluator {
         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(PartitionContext partitionContext, NetworkPartitionContext ctxt) {
         Properties props = partitionContext.getProperties();