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:30 UTC
[2/2] stratos git commit: Adding scaling logic to dependent-scaling
rule in then section
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