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 
... ");
         }

Reply via email to