You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/10/11 06:12:49 UTC

[03/50] [abbrv] git commit: Temporarily fixing Kubernetes cluster monitor to work with new CC APIs.

Temporarily fixing Kubernetes cluster monitor to work with new CC APIs.


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c02907b7
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c02907b7
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c02907b7

Branch: refs/heads/master
Commit: c02907b7b172611d42dafaa2a149d7f0e7994b1a
Parents: faf532c
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:11:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 2014 +0530

----------------------------------------------------------------------
 .../cloud/controller/CloudControllerClient.java |  2 +-
 .../KubernetesServiceClusterMonitor.java        | 61 +++++++++++---------
 2 files changed, 36 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c02907b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index 296182f..eaa80c4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -238,7 +238,7 @@ public class CloudControllerClient {
      * @return
      * @throws SpawningException
      */
-    public synchronized MemberContext[] createContainer(String kubernetesClusterId, String clusterId) throws SpawningException {
+    public synchronized MemberContext[] createContainers(String kubernetesClusterId, String clusterId) throws SpawningException {
         try {
         	
         	KubernetesManager kubernetesManager = KubernetesManager.getInstance();

http://git-wip-us.apache.org/repos/asf/stratos/blob/c02907b7/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..6362fc4 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
@@ -91,49 +91,58 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
             TopologyManager.releaseReadLock();
         }
 
-        // is container created successfully?
-        boolean success = false;
         String kubernetesClusterId = getKubernetesClusterCtxt().getKubernetesClusterID();
         int activeMembers = getKubernetesClusterCtxt().getActiveMembers().size();
         int pendingMembers = getKubernetesClusterCtxt().getPendingMembers().size();
         int nonTerminatedMembers = activeMembers + pendingMembers;
+        log.info(KubernetesServiceClusterMonitor.class.getName()+" is running.... Active Members: "+activeMembers
+                + " Pending Members: "+pendingMembers);
+
+        if (nonTerminatedMembers > 0 && nonTerminatedMembers < minReplicas) {
+            // update
+            int requiredReplicas = minReplicas - nonTerminatedMembers;
+            log.info("Required replicas : "+requiredReplicas);
+
+        } else if (nonTerminatedMembers >= minReplicas) {
+            // TODO autoscale
+            log.info("Current member count : "+nonTerminatedMembers);
+        } else {
+            try {
+                CloudControllerClient ccClient = CloudControllerClient.getInstance();
+                MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId,
+                        getClusterId());
+                for (MemberContext memberContext : memberContexts) {
 
-        if (nonTerminatedMembers == 0) {
-            while (!success) {
-                try {
-                    CloudControllerClient ccClient = CloudControllerClient.getInstance();
-                    MemberContext memberContext = ccClient.createContainer(kubernetesClusterId, getClusterId());
                     if (null != memberContext) {
                         getKubernetesClusterCtxt().addPendingMember(memberContext);
-                        success = true;
-                        numberOfReplicasInServiceCluster = minReplicas;
                         if (log.isDebugEnabled()) {
-                            log.debug(String.format("Pending member added, [member] %s [kub cluster] %s",
-                                                    memberContext.getMemberId(), kubernetesClusterId));
+                            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 "
-                                         + (retryInterval / 1000) + "s";
-                        log.debug(message, spawningException);
-                    }
-                } catch (Exception exception) {
-                    if (log.isDebugEnabled()) {
-                        String message = "Error while creating containers, will retry in "
-                                         + (retryInterval / 1000) + "s";
-                        log.debug(message, exception);
-                    }
                 }
-                try {
-                    Thread.sleep(retryInterval);
-                } catch (InterruptedException ignored) {
+            } catch (SpawningException spawningException) {
+                if (log.isDebugEnabled()) {
+                    String message = "Cannot create containers, will retry in "
+                            + (retryInterval / 1000) + "s";
+                    log.debug(message, spawningException);
+                }
+            } catch (Exception exception) {
+                if (log.isDebugEnabled()) {
+                    String message = "Error while creating containers, will retry in "
+                            + (retryInterval / 1000) + "s";
+                    log.debug(message, exception);
                 }
             }
+            try {
+                Thread.sleep(retryInterval);
+            } catch (InterruptedException ignored) {
+            }
         }
     }