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:28 UTC

[09/14] git commit: calling createContainers() from drool

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 <rr...@gmail.com>
Authored: Thu Oct 9 18:57:43 2014 +0530
Committer: R-Rajkumar <rr...@gmail.com>
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 ... ");
         }