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/12/05 08:02:29 UTC

[1/2] stratos git commit: Adding hasPrimary to drools files correctly

Repository: stratos
Updated Branches:
  refs/heads/master 4c8649743 -> a4b70dec0


Adding hasPrimary to drools files correctly


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

Branch: refs/heads/master
Commit: a4b70dec06af247f9d26de97fa925be86ccaf3ce
Parents: 1d32adc
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Dec 5 12:33:58 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Dec 5 12:34:06 2014 +0530

----------------------------------------------------------------------
 .../stratos/autoscaler/monitor/cluster/VMClusterMonitor.java      | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a4b70dec/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
index 4fb2457..989aa62 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/VMClusterMonitor.java
@@ -252,7 +252,7 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
                                 getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
                                 getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
                                 getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
-                                getScaleCheckKnowledgeSession().setGlobal("isPrimary", false);
+                                getScaleCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
                                 getScaleCheckKnowledgeSession().setGlobal("primaryMembers", primaryMemberListInClusterInstance);
                                 getMinCheckKnowledgeSession().setGlobal("algorithmName",
                                         instanceContext.getPartitionAlgorithm());
@@ -378,6 +378,7 @@ public class VMClusterMonitor extends AbstractClusterMonitor {
         getDependentScaleCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
         getDependentScaleCheckKnowledgeSession().setGlobal("roundedRequiredInstanceCount", roundedRequiredInstanceCount);
         getDependentScaleCheckKnowledgeSession().setGlobal("algorithmName", clusterInstanceContext.getPartitionAlgorithm());
+        getDependentScaleCheckKnowledgeSession().setGlobal("isPrimary", hasPrimary);
 
         dependentScaleCheckFactHandle = AutoscalerRuleEvaluator.evaluate(getScaleCheckKnowledgeSession()
                 , scaleCheckFactHandle, clusterInstanceContext);


[2/2] stratos git commit: Adding scaling logic to dependent-scaling rule in then section

Posted by la...@apache.org.
Adding scaling logic to dependent-scaling rule in then section


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

Branch: refs/heads/master
Commit: 1d32adcc7d519dc5018d83c3399a81aa1b84360d
Parents: 4c86497
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Fri Dec 5 12:32:20 2014 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Fri Dec 5 12:34:06 2014 +0530

----------------------------------------------------------------------
 .../src/main/conf/drools/dependent-scaling.drl  | 38 ++++++++++++++++++++
 1 file changed, 38 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/1d32adcc/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
index 6bf9904..6aaf925 100644
--- a/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
+++ b/products/stratos/modules/distribution/src/main/conf/drools/dependent-scaling.drl
@@ -21,12 +21,14 @@ package org.apache.stratos.autoscaler.rule;
 
 import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
 import org.apache.stratos.autoscaler.algorithm.AutoscaleAlgorithm;
+import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
 
 global org.apache.stratos.autoscaler.rule.RuleLog log;
 global java.lang.String clusterId;
 global Integer roundedRequiredInstanceCount;
 global org.apache.stratos.autoscaler.rule.RuleTasksDelegator delegator;
 global java.lang.String algorithmName;
+global java.lang.Boolean isPrimary;
 
 rule "Dependent Scaling Rule"
 dialect "mvel"
@@ -41,6 +43,42 @@ dialect "mvel"
 
 	then
 
+        if(scaleUp) {
+
+            int additionalInstances = roundedRequiredInstanceCount - clusterInstanceContext.getNonTerminatedMemberCount();
+            int count = 0;
+
+            while(count != additionalInstances){
+            ClusterLevelPartitionContext partitionContext =  (ClusterLevelPartitionContext)autoscaleAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
+                if(partitionContext != null){
+                    log.info("[scale-up] Partition available, hence trying to spawn an instance to scale up!" );
+                    log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
+                    delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary);
+                    count++;
+                }
+//                else {
+//                    break;
+//                }
+            }
+        } else if (scaleDown) {
+
+            int redundantInstances = clusterInstanceContext.getNonTerminatedMemberCount() - roundedRequiredInstanceCount;
+
+            int count = 0;
+
+            while(count != redundantInstances){
+                ClusterLevelPartitionContext partitionContext =  (ClusterLevelPartitionContext)autoscaleAlgorithm.getNextScaleDownPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
+                if(partitionContext != null){
+                    log.info("[scale-down] Partition available to scale down, hence trying to terminate an instance to scale down!" );
+                    log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
+                    delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId(), isPrimary);
+                    count++;
+                }
+//                else {
+//                    break;
+//                }
+            }
+        }
 
 end