calling createContainers() from drool
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0724bdc2 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0724bdc2 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0724bdc2 Branch: refs/heads/container-autoscaling Commit: 0724bdc2df9e8dcf070a472685dd2e49a7cf0189 Parents: 3a1e2f1 Author: R-Rajkumar <[email protected]> Authored: Thu Oct 9 18:57:43 2014 +0530 Committer: R-Rajkumar <[email protected]> Committed: Thu Oct 9 18:57:43 2014 +0530 ---------------------------------------------------------------------- .../KubernetesServiceClusterMonitor.java | 50 +------------------- .../autoscaler/rule/RuleTasksDelegator.java | 10 ++-- .../src/main/conf/container-mincheck.drl | 14 ++++-- .../src/main/conf/container-scaling.drl | 4 +- 4 files changed, 19 insertions(+), 59 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/0724bdc2/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 068f21e..fdff259 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 @@ -22,13 +22,10 @@ import org.apache.commons.configuration.XMLConfiguration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.KubernetesClusterContext; -import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient; -import org.apache.stratos.autoscaler.exception.SpawningException; 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.cloud.controller.stub.pojo.MemberContext; import org.apache.stratos.common.constants.StratosConstants; import org.apache.stratos.messaging.domain.topology.ClusterStatus; @@ -75,51 +72,8 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni @Override protected void monitor() { - - String kubernetesClusterId = getKubernetesClusterCtxt().getKubernetesClusterID(); - int activeMembers = getKubernetesClusterCtxt().getActiveMembers().size(); - int pendingMembers = getKubernetesClusterCtxt().getPendingMembers().size(); - int nonTerminatedMembers = getKubernetesClusterCtxt().getNonTerminatedMemberCount(); - log.info(KubernetesServiceClusterMonitor.class.getName()+" is running.... Active Members: "+activeMembers - + " Pending Members: "+pendingMembers); - - if (nonTerminatedMembers == 0) { - try { - CloudControllerClient ccClient = CloudControllerClient.getInstance(); - MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId, - getClusterId()); - for (MemberContext memberContext : memberContexts) { - - if (null != memberContext) { - getKubernetesClusterCtxt().addPendingMember(memberContext); - if (log.isDebugEnabled()) { - log.debug(String.format( - "Pending member added, [member] %s [kub cluster] %s", - memberContext.getMemberId(), kubernetesClusterId)); - } - } else { - if (log.isDebugEnabled()) { - log.debug("Returned member context is null, did not add to pending members"); - } - } - } - } catch (SpawningException spawningException) { - if (log.isDebugEnabled()) { - String message = "Cannot create containers, will retry in " - + (getMonitorIntervalMilliseconds() / 1000) + "s"; - log.debug(message, spawningException); - } - } catch (Exception exception) { - if (log.isDebugEnabled()) { - String message = "Error while creating containers, will retry in " - + (getMonitorIntervalMilliseconds() / 1000) + "s"; - log.debug(message, exception); - } - } - } else { - minCheck(); - scaleCheck(); - } + minCheck(); + scaleCheck(); } private void scaleCheck() { http://git-wip-us.apache.org/repos/asf/stratos/blob/0724bdc2/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java index b062913..416aa31 100644 --- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java +++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java @@ -202,12 +202,11 @@ public class RuleTasksDelegator { public void delegateCreateContainers(KubernetesClusterContext kubernetesClusterContext) { try { + String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID(); + String clusterId = kubernetesClusterContext.getClusterId(); CloudControllerClient ccClient = CloudControllerClient.getInstance(); - String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID(); - String clusterId = kubernetesClusterContext.getClusterId(); MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId, clusterId); for (MemberContext memberContext : memberContexts) { - if (null != memberContext) { kubernetesClusterContext.addPendingMember(memberContext); if (log.isDebugEnabled()) { @@ -221,12 +220,13 @@ public class RuleTasksDelegator { } } } - } catch (Exception e) { + } catch (Throwable e) { log.error("Cannot create containers ", e); } } - public void delegateExpandCluster(String clusterId, int replicas) { + public void delegateExpandCluster(KubernetesClusterContext kubernetesClusterContext, int replicas) { + String clusterId = kubernetesClusterContext.getClusterId(); try { CloudControllerClient.getInstance().updateKubernetesController(clusterId, replicas); } catch (Throwable e) { http://git-wip-us.apache.org/repos/asf/stratos/blob/0724bdc2/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl index edea3cf..9c3cf0f 100644 --- a/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl +++ b/products/stratos/modules/distribution/src/main/conf/container-mincheck.drl @@ -39,10 +39,16 @@ dialect "mvel" + " [cluster] " + clusterId + " Non terminated member count: " + nonTerminatedReplicas)) eval(log.debug("[min-check] [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId + " Minimum member count: " + minReplicas)) - eval (nonTerminatedReplicas < minReplicas) + eval(nonTerminatedReplicas < minReplicas) then - log.info("[min-check] [kub-cluster] " + kubernetesClusterId - + " [cluster] " + clusterId + " : min-rule not satisfied, creating more containers") - $delegator.delegateExpandCluster($kubernetesClusterContext.getClusterId(), minReplicas); + if (nonTerminatedReplicas == 0) { + log.info("[min-check] [kub-cluster] " + kubernetesClusterId + + " [cluster] " + clusterId + " : min-rule not satisfied, no containers created yet, creating minReplicas : " + minReplicas); + $delegator.delegateCreateContainers($kubernetesClusterContext); + } else { + log.info("[min-check] [kub-cluster] " + kubernetesClusterId + + " [cluster] " + clusterId + " : min-rule not satisfied, expanding cluster to minReplicas : " + minReplicas); + $delegator.delegateExpandCluster($kubernetesClusterContext, minReplicas); + } end http://git-wip-us.apache.org/repos/asf/stratos/blob/0724bdc2/products/stratos/modules/distribution/src/main/conf/container-scaling.drl ---------------------------------------------------------------------- diff --git a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl index c773264..6f20274 100644 --- a/products/stratos/modules/distribution/src/main/conf/container-scaling.drl +++ b/products/stratos/modules/distribution/src/main/conf/container-scaling.drl @@ -136,11 +136,11 @@ dialect "mvel" } //expand the cluster log.info("[scaling] " + " [cluster] " + clusterId + " valid number of replicas to expand : " + requiredReplicas); - $delegator.delegateExpandCluster(clusterId, requiredReplicas); + $delegator.delegateExpandCluster($kubernetesClusterContext, requiredReplicas); } else if (scaleDown) { log.debug("[scale-down] Decided to scale down : [kub-cluster] " + kubernetesClusterId + " [cluster] " + clusterId); //shrink the cluster to minReplicas - $delegator.delegateExpandCluster(clusterId, minReplicas); + $delegator.delegateExpandCluster($kubernetesClusterContext, minReplicas); } else { log.debug("[scaling] No decision made to either scale up or down ... "); }
