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) { + } } }
