Repository: stratos
Updated Branches:
  refs/heads/docker-grouping-merge 9af8798c5 -> 4d39532f4


moving obsolete-check rule from min-check drool file to a different drool file


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

Branch: refs/heads/docker-grouping-merge
Commit: 80855b748ad0565bf9d888c57cd60f287d6bca6c
Parents: 87908a4
Author: R-Rajkumar <[email protected]>
Authored: Wed Nov 5 14:05:06 2014 +0530
Committer: R-Rajkumar <[email protected]>
Committed: Wed Nov 5 14:05:06 2014 +0530

----------------------------------------------------------------------
 .../monitor/cluster/AbstractClusterMonitor.java | 22 +++++-
 .../KubernetesServiceClusterMonitor.java        | 17 ++++-
 .../monitor/cluster/VMLbClusterMonitor.java     |  8 ++-
 .../cluster/VMServiceClusterMonitor.java        | 15 +++--
 .../rule/AutoscalerRuleEvaluator.java           | 70 +++++++++++++-------
 .../common/constants/StratosConstants.java      |  2 +
 .../src/main/conf/drools/container-mincheck.drl | 19 ------
 .../conf/drools/container-obsoletecheck.drl     | 46 +++++++++++++
 .../src/main/conf/drools/mincheck.drl           | 14 ----
 .../src/main/conf/drools/obsoletecheck.drl      | 66 ++++++++++++++++++
 10 files changed, 211 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
index 55748e1..1fd9124 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/AbstractClusterMonitor.java
@@ -36,7 +36,6 @@ import 
org.apache.stratos.messaging.domain.topology.ClusterStatus;
 import org.apache.stratos.messaging.event.health.stat.AverageLoadAverageEvent;
 import 
org.apache.stratos.messaging.event.health.stat.AverageMemoryConsumptionEvent;
 import 
org.apache.stratos.messaging.event.health.stat.AverageRequestsInFlightEvent;
-import 
org.apache.stratos.messaging.event.health.stat.AverageRequestsServingCapabilityEvent;
 import 
org.apache.stratos.messaging.event.health.stat.GradientOfLoadAverageEvent;
 import 
org.apache.stratos.messaging.event.health.stat.GradientOfMemoryConsumptionEvent;
 import 
org.apache.stratos.messaging.event.health.stat.GradientOfRequestsInFlightEvent;
@@ -73,8 +72,10 @@ public abstract class AbstractClusterMonitor extends Monitor 
implements Runnable
     private int monitoringIntervalMilliseconds;
 
     protected FactHandle minCheckFactHandle;
+    protected FactHandle obsoleteCheckFactHandle;
     protected FactHandle scaleCheckFactHandle;
     private StatefulKnowledgeSession minCheckKnowledgeSession;
+    private StatefulKnowledgeSession obsoleteCheckKnowledgeSession;
     private StatefulKnowledgeSession scaleCheckKnowledgeSession;
     private boolean isDestroyed;
 
@@ -236,11 +237,19 @@ public abstract class AbstractClusterMonitor extends 
Monitor implements Runnable
     public void setMinCheckFactHandle(FactHandle minCheckFactHandle) {
         this.minCheckFactHandle = minCheckFactHandle;
     }
+    
+    public FactHandle getObsoleteCheckFactHandle() {
+        return obsoleteCheckFactHandle;
+    }
+    
+    public void setObsoleteCheckFactHandle(FactHandle obsoleteCheckFactHandle) 
{
+        this.obsoleteCheckFactHandle = obsoleteCheckFactHandle;
+    }
 
     public FactHandle getScaleCheckFactHandle() {
         return scaleCheckFactHandle;
     }
-
+    
     public void setScaleCheckFactHandle(FactHandle scaleCheckFactHandle) {
         this.scaleCheckFactHandle = scaleCheckFactHandle;
     }
@@ -253,6 +262,15 @@ public abstract class AbstractClusterMonitor extends 
Monitor implements Runnable
             StatefulKnowledgeSession minCheckKnowledgeSession) {
         this.minCheckKnowledgeSession = minCheckKnowledgeSession;
     }
+    
+    public StatefulKnowledgeSession getObsoleteCheckKnowledgeSession() {
+        return obsoleteCheckKnowledgeSession;
+    }
+
+    public void setObsoleteCheckKnowledgeSession(
+            StatefulKnowledgeSession obsoleteCheckKnowledgeSession) {
+        this.obsoleteCheckKnowledgeSession = obsoleteCheckKnowledgeSession;
+    }
 
     public StatefulKnowledgeSession getScaleCheckKnowledgeSession() {
         return scaleCheckKnowledgeSession;

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
index 1f17daa..85c71fd 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/KubernetesServiceClusterMonitor.java
@@ -47,8 +47,9 @@ public final class KubernetesServiceClusterMonitor extends 
KubernetesClusterMoni
                                            String serviceClusterID, String 
serviceId,
                                            String autoscalePolicyId) {
         super(serviceClusterID, serviceId, kubernetesClusterCtxt,
-              new AutoscalerRuleEvaluator(
+                       new AutoscalerRuleEvaluator(
                       StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE,
+                      StratosConstants.CONTAINER_OBSOLETE_CHECK_DROOL_FILE,
                       StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE),
               autoscalePolicyId);
         readConfigurations();
@@ -78,6 +79,7 @@ public final class KubernetesServiceClusterMonitor extends 
KubernetesClusterMoni
     @Override
     protected void monitor() {
         minCheck();
+        obsoleteCheck();
         scaleCheck();
     }
 
@@ -125,10 +127,23 @@ public final class KubernetesServiceClusterMonitor 
extends KubernetesClusterMoni
                                getMinCheckKnowledgeSession(), 
minCheckFactHandle,
                                getKubernetesClusterCtxt());
        }
+       
+       private void obsoleteCheck() {
+               getMinCheckKnowledgeSession().setGlobal("clusterId", 
getClusterId());
+               String kubernetesClusterID = 
getKubernetesClusterCtxt().getKubernetesClusterID();
+        if (log.isDebugEnabled()) {
+            log.debug(String.format(
+                    "Running obsolete check for [kub-cluster] : %s [cluster] : 
%s ", kubernetesClusterID, getClusterId()));
+        }
+               obsoleteCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateMinCheck(
+                               getObsoleteCheckKnowledgeSession(), 
obsoleteCheckFactHandle,
+                               getKubernetesClusterCtxt());
+       }
 
        @Override
     public void destroy() {
         getMinCheckKnowledgeSession().dispose();
+        getObsoleteCheckKnowledgeSession().dispose();
         getScaleCheckKnowledgeSession().dispose();
         setDestroyed(true);
         stopScheduler();

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
index 386197c..b9abc50 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMLbClusterMonitor.java
@@ -27,16 +27,15 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.autoscaler.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
 import org.apache.stratos.autoscaler.PartitionContext;
-import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.autoscaler.util.ConfUtil;
 import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import 
org.apache.stratos.messaging.event.health.stat.AverageRequestsServingCapabilityEvent;
 import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
 
 /**
@@ -53,6 +52,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
         super(clusterId, serviceId,
               new AutoscalerRuleEvaluator(
                       StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+                      StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE,
                       StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
               deploymentPolicy, autoscalePolicy,
               new ConcurrentHashMap<String, NetworkPartitionContext>());
@@ -107,6 +107,9 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
                             
AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession(),
                                                                      
minCheckFactHandle,
                                                                      
partitionContext);
+                    obsoleteCheckFactHandle = 
+                               
AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
 
+                                               obsoleteCheckFactHandle, 
partitionContext);
                     // start only in the first partition context
                     break;
                 }
@@ -119,6 +122,7 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
     @Override
     public void destroy() {
         getMinCheckKnowledgeSession().dispose();
+        getObsoleteCheckKnowledgeSession().dispose();
         getMinCheckKnowledgeSession().dispose();
         setDestroyed(true);
         stopScheduler();

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
index e5e8fe4..4a4926b 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMServiceClusterMonitor.java
@@ -25,13 +25,12 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.AutoscalerContext;
 import org.apache.stratos.autoscaler.NetworkPartitionContext;
 import org.apache.stratos.autoscaler.PartitionContext;
-import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.monitor.events.MonitorStatusEvent;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
 import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.autoscaler.util.ConfUtil;
@@ -42,7 +41,6 @@ import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.messaging.domain.applications.ApplicationStatus;
 import org.apache.stratos.messaging.domain.applications.GroupStatus;
 import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import 
org.apache.stratos.messaging.event.health.stat.AverageRequestsServingCapabilityEvent;
 
 /**
  * Is responsible for monitoring a service cluster. This runs periodically
@@ -58,9 +56,10 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
     public VMServiceClusterMonitor(String clusterId, String serviceId,
                                    DeploymentPolicy deploymentPolicy,
                                    AutoscalePolicy autoscalePolicy) {
-        super(clusterId, serviceId,
-              new 
AutoscalerRuleEvaluator(StratosConstants.VM_MIN_CHECK_DROOL_FILE,
-                                          
StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
+        super(clusterId, serviceId, new AutoscalerRuleEvaluator(
+                         StratosConstants.VM_MIN_CHECK_DROOL_FILE, 
+                         StratosConstants.VM_OBSOLETE_CHECK_DROOL_FILE, 
+                         StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
               deploymentPolicy, autoscalePolicy,
               new ConcurrentHashMap<String, NetworkPartitionContext>());
         readConfigurations();
@@ -203,6 +202,9 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
 
                 minCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateMinCheck(getMinCheckKnowledgeSession()
                         , minCheckFactHandle, partitionContext);
+                
+                obsoleteCheckFactHandle = 
AutoscalerRuleEvaluator.evaluateObsoleteCheck(getObsoleteCheckKnowledgeSession(),
 
+                               obsoleteCheckFactHandle, partitionContext);
 
                 //checking the status of the cluster
 
@@ -260,6 +262,7 @@ public class VMServiceClusterMonitor extends 
VMClusterMonitor {
     @Override
     public void destroy() {
         getMinCheckKnowledgeSession().dispose();
+        getObsoleteCheckKnowledgeSession().dispose();
         getScaleCheckKnowledgeSession().dispose();
         setDestroyed(true);
         stopScheduler();

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/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 4c32bd3..a66345a 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
@@ -46,44 +46,58 @@ public class AutoscalerRuleEvaluator {
        private static final Log log = 
LogFactory.getLog(AutoscalerRuleEvaluator.class);
 
        //vm drool files as default
-       private String minCheckDroolFileName = "mincheck.drl";
-       private String scaleCheckDroolFileName = "scaling.drl";
+       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 
scaleCheckDroolFileName){
+    public AutoscalerRuleEvaluator(String minCheckDroolFileName, String 
obsoleteCheckDroolFileName, String scaleCheckDroolFileName){
        
-       this.minCheckDroolFileName = minCheckDroolFileName;
-       this.scaleCheckDroolFileName = 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);
 
         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);
         }
+        
         terminateAllKbase = readKnowledgeBase(this.terminateAllDroolFileName);
 
         if (log.isDebugEnabled()) {
             log.debug("Terminate all rule is parsed successfully : " + 
this.terminateAllDroolFileName);
         }
     }
-
-    
     
     public static FactHandle evaluateMinCheck(StatefulKnowledgeSession 
ksession, FactHandle handle, Object obj) {
-
         if (handle == null) {
-
             ksession.setGlobal("$delegator", new RuleTasksDelegator());
             handle = ksession.insert(obj);
         } else {
@@ -95,13 +109,24 @@ public class AutoscalerRuleEvaluator {
         }
         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);
@@ -113,12 +138,8 @@ public class AutoscalerRuleEvaluator {
         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 {
@@ -131,13 +152,11 @@ public class AutoscalerRuleEvaluator {
         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 {
@@ -153,20 +172,27 @@ public class AutoscalerRuleEvaluator {
         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() {
         StatefulKnowledgeSession ksession;
         ksession = scaleCheckKbase.newStatefulKnowledgeSession();
         ksession.setGlobal("log", RuleLog.getInstance());
         return ksession;
     }
+    
     public StatefulKnowledgeSession getTerminateAllStatefulSession() {
         StatefulKnowledgeSession ksession;
         ksession = scaleCheckKbase.newStatefulKnowledgeSession();
@@ -196,7 +222,6 @@ public class AutoscalerRuleEvaluator {
     }
 
     private static KnowledgeBase readKnowledgeBase(String drlFileName) {
-        
         KnowledgeBuilder kbuilder = 
KnowledgeBuilderFactory.newKnowledgeBuilder();
         String configDir = CarbonUtils.getCarbonConfigDirPath();
         String droolsDir = configDir + File.separator + 
StratosConstants.DROOLS_DIR_NAME;
@@ -213,7 +238,4 @@ public class AutoscalerRuleEvaluator {
         kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
         return kbase;
     }
-
-
-
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
index 401e6c0..846f7a4 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/constants/StratosConstants.java
@@ -160,6 +160,8 @@ public class StratosConstants {
     public static final String VM_SCALE_CHECK_DROOL_FILE = "scaling.drl";
     public static final String CONTAINER_MIN_CHECK_DROOL_FILE = 
"container-mincheck.drl";
     public static final String VM_MIN_CHECK_DROOL_FILE = "mincheck.drl";
+    public static final String CONTAINER_OBSOLETE_CHECK_DROOL_FILE = 
"obsoletecheck.drl";
+    public static final String VM_OBSOLETE_CHECK_DROOL_FILE = 
"container-obsoletecheck.drl";
 
     // Policy and definition related constants
     public static final int PUBLIC_DEFINITION = 0;

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/products/stratos/modules/distribution/src/main/conf/drools/container-mincheck.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/container-mincheck.drl
 
b/products/stratos/modules/distribution/src/main/conf/drools/container-mincheck.drl
index f87a556..688b9dc 100644
--- 
a/products/stratos/modules/distribution/src/main/conf/drools/container-mincheck.drl
+++ 
b/products/stratos/modules/distribution/src/main/conf/drools/container-mincheck.drl
@@ -52,22 +52,3 @@ dialect "mvel"
               $delegator.delegateStartContainers($kubernetesClusterContext);
            }
 end
-
-rule "Terminate Obsoleted Containers"
-dialect "mvel"
-        when
-           $kubernetesClusterContext : KubernetesClusterContext ()
-           kubernetesClusterId : String() from 
$kubernetesClusterContext.getKubernetesClusterID()
-           obsoleteReplicas : Integer() from 
$kubernetesClusterContext.getObsoletedMembers().size()
-
-           eval(log.info("Running obsolete containers rule [kub-cluster] : " + 
kubernetesClusterId + " [cluster] : " + clusterId))
-           eval(log.info("[obsolete-check] " + "[cluster] : " + clusterId + " 
[Replicas] obsoleteReplicas : " + obsoleteReplicas))
-           
eval($kubernetesClusterContext.getObsoletedMembers().keySet().size() > 0)
-           memberId : String() from 
$kubernetesClusterContext.getObsoletedMembers().keySet()
-           eval(log.debug("[obsolete-check] [kub-cluster] : " + 
kubernetesClusterId + " [cluster] : " + clusterId + " Member id : " + memberId))
-        then
-           log.info("[obsolete-check] Terminating the obsolete member with id 
: " + memberId + " in the cluster : " + clusterId);
-           $delegator.delegateTerminateContainer($kubernetesClusterContext, 
memberId);
-end
-
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/products/stratos/modules/distribution/src/main/conf/drools/container-obsoletecheck.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/container-obsoletecheck.drl
 
b/products/stratos/modules/distribution/src/main/conf/drools/container-obsoletecheck.drl
new file mode 100644
index 0000000..6af208f
--- /dev/null
+++ 
b/products/stratos/modules/distribution/src/main/conf/drools/container-obsoletecheck.drl
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.stratos.autoscaler.rule;
+
+import org.apache.commons.logging.Log;
+import org.apache.stratos.autoscaler.KubernetesClusterContext;
+
+global org.apache.stratos.autoscaler.rule.RuleLog log;
+global org.apache.stratos.autoscaler.rule.RuleTasksDelegator $delegator;
+global java.lang.String clusterId;
+ 
+rule "Terminate Obsoleted Containers"
+dialect "mvel"
+        when
+           $kubernetesClusterContext : KubernetesClusterContext ()
+           kubernetesClusterId : String() from 
$kubernetesClusterContext.getKubernetesClusterID()
+           obsoleteReplicas : Integer() from 
$kubernetesClusterContext.getObsoletedMembers().size()
+
+           eval(log.info("Running obsolete containers rule [kub-cluster] : " + 
kubernetesClusterId + " [cluster] : " + clusterId))
+           eval(log.info("[obsolete-check] " + "[cluster] : " + clusterId + " 
[Replicas] obsoleteReplicas : " + obsoleteReplicas))
+           
eval($kubernetesClusterContext.getObsoletedMembers().keySet().size() > 0)
+           memberId : String() from 
$kubernetesClusterContext.getObsoletedMembers().keySet()
+           eval(log.debug("[obsolete-check] [kub-cluster] : " + 
kubernetesClusterId + " [cluster] : " + clusterId + " Member id : " + memberId))
+        then
+           log.info("[obsolete-check] Terminating the obsolete member with id 
: " + memberId + " in the cluster : " + clusterId);
+           $delegator.delegateTerminateContainer($kubernetesClusterContext, 
memberId);
+end
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl 
b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
index 29cd987..96d7a09 100755
--- a/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/mincheck.drl
@@ -67,17 +67,3 @@ dialect "mvel"
            }
               $delegator.delegateSpawn($ctxt, clusterId, lbRef, isPrimary);
 end
-
-rule "Terminate Obsoleted Instances"
-dialect "mvel"
-        when
-            $ctxt : PartitionContext ()
-            eval(log.debug("Running obsolete instances rule: [partition] " + 
$ctxt.getPartitionId() + " [network-partition] " + 
$ctxt.getNetworkPartitionId()))
-            eval(log.debug("[obsolete-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() +" 
Obsolete member count: " + $ctxt.getObsoletedMembers().size()))
-            eval($ctxt.getObsoletedMembers().keySet().size() > 0)
-            memberId : String() from $ctxt.getObsoletedMembers().keySet()
-            eval(log.debug("[obsolete-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Member id: " + memberId))
-        then
-           $delegator.terminateObsoleteInstance(memberId);
-end
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/80855b74/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl 
b/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
new file mode 100755
index 0000000..55f80cf
--- /dev/null
+++ 
b/products/stratos/modules/distribution/src/main/conf/drools/obsoletecheck.drl
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+package org.apache.stratos.autoscaler.rule;
+
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.autoscaler.AutoscalerContext;
+import org.apache.stratos.autoscaler.Constants;
+import org.apache.stratos.autoscaler.policy.PolicyManager;
+import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.policy.model.RequestsInFlight;
+import org.apache.stratos.autoscaler.policy.model.LoadThresholds;
+import 
org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
+import org.apache.stratos.autoscaler.algorithm.AutoscaleAlgorithm;
+import org.apache.stratos.autoscaler.algorithm.OneAfterAnother;
+import org.apache.stratos.autoscaler.algorithm.RoundRobin;
+import org.apache.stratos.autoscaler.PartitionContext;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
+import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
+import org.apache.commons.logging.Log;
+import org.apache.stratos.autoscaler.policy.model.DeploymentPolicy;
+import org.apache.stratos.autoscaler.partition.PartitionGroup;
+import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
+import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
+
+global org.apache.stratos.autoscaler.rule.RuleLog log;
+global org.apache.stratos.autoscaler.policy.PolicyManager $manager;
+global org.apache.stratos.autoscaler.AutoscalerContext $context;
+global org.apache.stratos.autoscaler.rule.RuleTasksDelegator $delegator;
+global org.apache.stratos.messaging.domain.topology.Topology $topology;
+global java.util.Map partitionCtxts;
+global java.lang.String clusterId;
+global java.lang.String lbRef;
+global java.lang.Boolean isPrimary;
+global Integer primaryMemberCount;
+
+rule "Terminate Obsoleted Instances"
+dialect "mvel"
+        when
+            $ctxt : PartitionContext ()
+            eval(log.debug("Running obsolete instances rule: [partition] " + 
$ctxt.getPartitionId() + " [network-partition] " + 
$ctxt.getNetworkPartitionId()))
+            eval(log.debug("[obsolete-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() +" 
Obsolete member count: " + $ctxt.getObsoletedMembers().size()))
+            eval($ctxt.getObsoletedMembers().keySet().size() > 0)
+            memberId : String() from $ctxt.getObsoletedMembers().keySet()
+            eval(log.debug("[obsolete-check] [network-partition] " + 
$ctxt.getNetworkPartitionId() + " [partition] " + $ctxt.getPartitionId() + " 
Member id: " + memberId))
+        then
+           $delegator.terminateObsoleteInstance(memberId);
+end
+

Reply via email to