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/a381f825
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a381f825
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a381f825

Branch: refs/heads/container-autoscaling
Commit: a381f8251fd196abf1b8c5bdf7e0e296c656d3a9
Parents: fbb8eb9
Author: Nirmal Fernando <[email protected]>
Authored: Wed Oct 8 19:11:43 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Wed Oct 8 22:21:30 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/a381f825/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/a381f825/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) {
+            }
         }
     }
 

Reply via email to