You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2014/10/10 13:45:22 UTC
[03/14] git commit: making drool files as arguments to
AutoscalerRuleEvaluator
making drool files as arguments to AutoscalerRuleEvaluator
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7d8acf3e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7d8acf3e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7d8acf3e
Branch: refs/heads/container-autoscaling
Commit: 7d8acf3e8c44f71704152a1634285f099f4da552
Parents: 5db40af
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Oct 9 10:55:15 2014 +0530
Committer: R-Rajkumar <rr...@gmail.com>
Committed: Thu Oct 9 10:55:15 2014 +0530
----------------------------------------------------------------------
.../KubernetesServiceClusterMonitor.java | 54 +++++++++++++++++++-
.../autoscaler/monitor/VMLbClusterMonitor.java | 6 ++-
.../monitor/VMServiceClusterMonitor.java | 5 +-
.../rule/AutoscalerRuleEvaluator.java | 24 +++++----
4 files changed, 75 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/7d8acf3e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index 6e14ce0..1688df1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -52,7 +52,10 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
String serviceClusterID, String serviceId,
AutoscalePolicy autoscalePolicy) {
super(serviceClusterID, serviceId, kubernetesClusterCtxt,
- new AutoscalerRuleEvaluator(), autoscalePolicy);
+ new AutoscalerRuleEvaluator(
+ StratosConstants.CONTAINER_MIN_CHECK_DROOL_FILE,
+ StratosConstants.CONTAINER_SCALE_CHECK_DROOL_FILE),
+ autoscalePolicy);
readConfigurations();
}
@@ -135,9 +138,56 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
}
}
}
+
+ minCheck();
+ scaleCheck();
}
- @Override
+ private void scaleCheck() {
+ boolean rifReset = getKubernetesClusterCtxt().isRifReset();
+ boolean memoryConsumptionReset = getKubernetesClusterCtxt().isMemoryConsumptionReset();
+ boolean loadAverageReset = getKubernetesClusterCtxt().isLoadAverageReset();
+ if (log.isDebugEnabled()) {
+ log.debug("flag of rifReset : " + rifReset
+ + " flag of memoryConsumptionReset : "
+ + memoryConsumptionReset + " flag of loadAverageReset : "
+ + loadAverageReset);
+ }
+ String kubernetesClusterID = getKubernetesClusterCtxt().getKubernetesClusterID();
+ String clusterId = getClusterId();
+ if (rifReset || memoryConsumptionReset || loadAverageReset) {
+ getScaleCheckKnowledgeSession().setGlobal("clusterId", clusterId);
+ getScaleCheckKnowledgeSession().setGlobal("autoscalePolicy", autoscalePolicy);
+ getScaleCheckKnowledgeSession().setGlobal("rifReset", rifReset);
+ getScaleCheckKnowledgeSession().setGlobal("mcReset", memoryConsumptionReset);
+ getScaleCheckKnowledgeSession().setGlobal("laReset", loadAverageReset);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format(
+ "Running scale check for kub-cluster %s ", kubernetesClusterID));
+ }
+ scaleCheckFactHandle = AutoscalerRuleEvaluator.evaluateScaleCheck(
+ getScaleCheckKnowledgeSession(), scaleCheckFactHandle, getKubernetesClusterCtxt());
+ getKubernetesClusterCtxt().setRifReset(false);
+ getKubernetesClusterCtxt().setMemoryConsumptionReset(false);
+ getKubernetesClusterCtxt().setLoadAverageReset(false);
+ } else if (log.isDebugEnabled()) {
+ log.debug(String.format("Scale check will not run since none of the statistics have not received yet for "
+ + "[kub-cluster] %s [cluster] %s", kubernetesClusterID, clusterId));
+ }
+ }
+
+ private void minCheck() {
+ getMinCheckKnowledgeSession().setGlobal("clusterId", getClusterId());
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Running minimum check for cluster %s ",
+ getClusterId()));
+ }
+ minCheckFactHandle = AutoscalerRuleEvaluator.evaluateMinCheck(
+ getMinCheckKnowledgeSession(), minCheckFactHandle,
+ getKubernetesClusterCtxt());
+ }
+
+ @Override
public void destroy() {
getMinCheckKnowledgeSession().dispose();
getScaleCheckKnowledgeSession().dispose();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7d8acf3e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
index 1c27380..8e7d0e1 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMLbClusterMonitor.java
@@ -34,6 +34,7 @@ import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
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.topology.ClusterRemovedEvent;
@@ -48,7 +49,10 @@ public class VMLbClusterMonitor extends VMClusterMonitor {
public VMLbClusterMonitor(String clusterId, String serviceId, DeploymentPolicy deploymentPolicy,
AutoscalePolicy autoscalePolicy) {
- super(clusterId, serviceId, new AutoscalerRuleEvaluator(),
+ super(clusterId, serviceId,
+ new AutoscalerRuleEvaluator(
+ StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+ StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
deploymentPolicy, autoscalePolicy,
new ConcurrentHashMap<String, NetworkPartitionContext>());
readConfigurations();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7d8acf3e/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
index 6f9fb26..adf750d 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/VMServiceClusterMonitor.java
@@ -35,6 +35,7 @@ import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
import org.apache.stratos.cloud.controller.stub.pojo.Properties;
import org.apache.stratos.cloud.controller.stub.pojo.Property;
+import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.messaging.domain.topology.ClusterStatus;
/**
@@ -51,7 +52,9 @@ public class VMServiceClusterMonitor extends VMClusterMonitor {
public VMServiceClusterMonitor(String clusterId, String serviceId,
DeploymentPolicy deploymentPolicy,
AutoscalePolicy autoscalePolicy) {
- super(clusterId, serviceId, new AutoscalerRuleEvaluator(),
+ super(clusterId, serviceId,
+ new AutoscalerRuleEvaluator(StratosConstants.VM_MIN_CHECK_DROOL_FILE,
+ StratosConstants.VM_SCALE_CHECK_DROOL_FILE),
deploymentPolicy, autoscalePolicy,
new ConcurrentHashMap<String, NetworkPartitionContext>());
readConfigurations();
http://git-wip-us.apache.org/repos/asf/stratos/blob/7d8acf3e/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 4bf9207..a402ab4 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
@@ -44,32 +44,36 @@ public class AutoscalerRuleEvaluator {
private static final Log log = LogFactory.getLog(AutoscalerRuleEvaluator.class);
- 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";
+ //vm drool files as default
+ private String minCheckDroolFileName = "mincheck.drl";
+ private String scaleCheckDroolFileName = "scaling.drl";
+ private String terminateAllDroolFileName = "terminateall.drl";
private static KnowledgeBase minCheckKbase;
private static KnowledgeBase scaleCheckKbase;
@SuppressWarnings("unused")
private static KnowledgeBase terminateAllKbase;
- public AutoscalerRuleEvaluator(){
+ public AutoscalerRuleEvaluator(String minCheckDroolFileName, String scaleCheckDroolFileName){
+
+ this.minCheckDroolFileName = minCheckDroolFileName;
+ this.scaleCheckDroolFileName = scaleCheckDroolFileName;
- minCheckKbase = readKnowledgeBase(DRL_FILE_NAME);
+ minCheckKbase = readKnowledgeBase(this.minCheckDroolFileName);
if (log.isDebugEnabled()) {
- log.debug("Minimum check rule is parsed successfully");
+ log.debug("Minimum check rule is parsed successfully : " + this.minCheckDroolFileName);
}
- scaleCheckKbase = readKnowledgeBase(SCALING_DRL_FILE_NAME);
+ scaleCheckKbase = readKnowledgeBase(this.scaleCheckDroolFileName);
if (log.isDebugEnabled()) {
- log.debug("Scale check rule is parsed successfully");
+ log.debug("Scale check rule is parsed successfully : " + this.scaleCheckDroolFileName);
}
- terminateAllKbase = readKnowledgeBase(TERMINATE_ALL_DRL_FILE_NAME);
+ terminateAllKbase = readKnowledgeBase(this.terminateAllDroolFileName);
if (log.isDebugEnabled()) {
- log.debug("Terminate all rule is parsed successfully");
+ log.debug("Terminate all rule is parsed successfully : " + this.terminateAllDroolFileName);
}
}