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 04:21:04 UTC
git commit: Return terminated members when scaling down and also send
member terminated event.
Repository: stratos
Updated Branches:
refs/heads/container-autoscaling df586b415 -> cdfbb6128
Return terminated members when scaling down and also send member terminated event.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/cdfbb612
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/cdfbb612
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/cdfbb612
Branch: refs/heads/container-autoscaling
Commit: cdfbb61282683e7f9a4bf988433210b833786646
Parents: df586b4
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Sat Oct 11 07:50:29 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 07:50:41 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 27 +++++++++++++++++---
.../runtime/FasterLookUpDataHolder.java | 1 +
2 files changed, 25 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/cdfbb612/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index a9a72cb..6717f74 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -21,7 +21,9 @@ package org.apache.stratos.cloud.controller.impl;
import com.google.common.collect.ImmutableSet;
import com.google.common.net.InetAddresses;
+import org.apache.commons.collections.ListUtils;
import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable;
@@ -1674,6 +1676,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
KubernetesApiClient kubApi = kubClusterContext.getKubApi();
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+
+ // get the current pods - useful when scale down
+ Pod[] previousStatePods = kubApi.getSelectedPods(new Label[]{l});
// update the replication controller - cluster id = replication controller id
if (LOG.isDebugEnabled()) {
@@ -1688,9 +1696,6 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ clusterId + " via Kubernetes layer.");
}
- // create a label query
- Label l = new Label();
- l.setName(clusterId);
// execute the label query
Pod[] allPods = new Pod[0];
@@ -1719,6 +1724,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// generate Member Contexts
for (Pod pod : allPods) {
MemberContext context;
+ // if member context does not exist -> a new member (scale up)
if ((context = dataHolder.getMemberContextOfMemberId(pod.getId())) == null) {
context = podToMemberContextFunc.apply(pod);
@@ -1737,6 +1743,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
dataHolder.addScheduledFutureJob(context.getMemberId(), exec.schedule(new PodActivationWatcher(pod.getId(), context, kubApi), 5000));
memberContexts.add(context);
+
}
// publish data
// TODO
@@ -1744,6 +1751,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
+ if (memberContexts.isEmpty()) {
+ // terminated members
+ @SuppressWarnings("unchecked")
+ List<Pod> difference = ListUtils.subtract(Arrays.asList(previousStatePods), Arrays.asList(allPods));
+ for (Pod pod : difference) {
+ if (pod != null) {
+ MemberContext context = dataHolder.getMemberContextOfMemberId(pod.getId());
+ logTermination(context);
+ memberContexts.add(context);
+ }
+ }
+ }
+
+
// persist in registry
persist();
http://git-wip-us.apache.org/repos/asf/stratos/blob/cdfbb612/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
index 2a83908..199f9c8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/runtime/FasterLookUpDataHolder.java
@@ -338,6 +338,7 @@ public class FasterLookUpDataHolder implements Serializable{
if (task != null) {
task.cancel(true);
+ log.info("Scheduled Pod Activation Watcher task canceled.");
}
}