You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/02/26 11:51:22 UTC

stratos git commit: Updating pod query logic in pod activation wait method

Repository: stratos
Updated Branches:
  refs/heads/master-deployment-policy-fix-merge 5415c2120 -> 63dbb277d


Updating pod query logic in pod activation wait method


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

Branch: refs/heads/master-deployment-policy-fix-merge
Commit: 63dbb277d5f073529111248033cdf79d8b166dcb
Parents: 5415c21
Author: Imesh Gunaratne <im...@apache.org>
Authored: Thu Feb 26 15:40:41 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Thu Feb 26 16:21:05 2015 +0530

----------------------------------------------------------------------
 .../iaases/kubernetes/KubernetesIaas.java       | 16 ++-------
 .../live/KubernetesApiClientLiveTest.java       | 35 ++++++++++++++++----
 2 files changed, 30 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/63dbb277/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
index 36cd3f3..7ea0f4a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaas.java
@@ -40,7 +40,6 @@ import org.apache.stratos.kubernetes.client.KubernetesApiClient;
 import org.apache.stratos.kubernetes.client.KubernetesConstants;
 import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
 import org.apache.stratos.kubernetes.client.model.EnvironmentVariable;
-import org.apache.stratos.kubernetes.client.model.Labels;
 import org.apache.stratos.kubernetes.client.model.Pod;
 import org.apache.stratos.kubernetes.client.model.Service;
 import org.apache.stratos.messaging.domain.topology.KubernetesService;
@@ -278,25 +277,14 @@ public class KubernetesIaas extends Iaas {
     private Pod waitForPodToBeActivated(MemberContext memberContext, KubernetesApiClient kubernetesApi)
             throws KubernetesClientException, InterruptedException {
 
-        Labels labels = new Labels();
-        String podName = memberContext.getKubernetesPodName();
-        labels.setName(podName);
-
         Pod pod;
-        List<Pod> pods;
         boolean podCreated = false;
         boolean podRunning = false;
         long startTime = System.currentTimeMillis();
 
         while (!podRunning) {
-            pods = kubernetesApi.queryPods(new Labels[]{labels});
-            if ((pods != null) && (pods.size() > 0)) {
-                if (pods.size() > 1) {
-                    throw new RuntimeException("System error, more than one pod found with the same pod name: "
-                            + podName);
-                }
-
-                pod = pods.get(0);
+            pod = kubernetesApi.getPod(memberContext.getKubernetesPodId());
+            if (pod != null) {
                 podCreated = true;
                 if (pod.getCurrentState().getStatus().equals(KubernetesConstants.POD_STATUS_RUNNING)) {
                     log.info(String.format("Pod status changed to running: [application] %s [cartridge] %s [member] %s " +

http://git-wip-us.apache.org/repos/asf/stratos/blob/63dbb277/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java b/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
index 710e8e6..2d48724 100644
--- a/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
+++ b/components/org.apache.stratos.kubernetes.client/src/test/java/org/apache/stratos/kubernetes/client/live/KubernetesApiClientLiveTest.java
@@ -27,7 +27,9 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.kubernetes.client.KubernetesApiClient;
 import org.apache.stratos.kubernetes.client.KubernetesConstants;
 import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
-import org.apache.stratos.kubernetes.client.model.*;
+import org.apache.stratos.kubernetes.client.model.Pod;
+import org.apache.stratos.kubernetes.client.model.Port;
+import org.apache.stratos.kubernetes.client.model.Service;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -56,6 +58,7 @@ public class KubernetesApiClientLiveTest extends TestCase{
     private static final int DEFAULT_CONTAINER_PORT = 6379; //80;
     private static final int SERVICE_PORT = 4500;
     private static final String DEFAULT_KUBERNETES_MASTER_IP = "172.17.8.100";
+    private static final int KUBERNETES_API_PORT = 8080;
     private static final String DEFAULT_DOCKER_IMAGE =  "gurpartap/redis"; //"stratos/php:4.1.0-alpha";
     private static final int POD_ACTIVATION_WAIT_TIME = 10000; // 10 seconds
 
@@ -71,7 +74,7 @@ public class KubernetesApiClientLiveTest extends TestCase{
         log.info("Setting up live test...");
         endpoint = System.getProperty("kubernetes.api.endpoint");
         if (endpoint == null) {
-            endpoint = "http://" + DEFAULT_KUBERNETES_MASTER_IP + ":8080/api/" + KubernetesConstants.KUBERNETES_API_VERSION + "/";
+            endpoint = "http://" + DEFAULT_KUBERNETES_MASTER_IP + ":" + KUBERNETES_API_PORT + "/api/" + KubernetesConstants.KUBERNETES_API_VERSION + "/";
         }
         log.info("Kubernetes endpoint: " + endpoint);
         client = new KubernetesApiClient(endpoint);
@@ -214,13 +217,21 @@ public class KubernetesApiClientLiveTest extends TestCase{
 
     public void deleteServices() {
         try {
+            int count = 0;
             List<Service> services = client.getServices();
-            if(services != null) {
+            while((services != null) && (services.size() > 0)) {
                 for (Service service : services) {
-                    if (!service.getId().contains("kubernetes")) {
+                    if ((StringUtils.isNotBlank(service.getId())) && (!service.getId().contains("kubernetes"))) {
                         client.deleteService(service.getId());
+                        count++;
+                        log.info(String.format("Service deleted: [service] %s", service.getId()));
                     }
                 }
+                services = client.getServices();
+            }
+
+            if(count > 0) {
+                log.info(String.format("%d services deleted", count));
             }
         } catch (KubernetesClientException e) {
             log.error("Could not delete services", e);
@@ -229,11 +240,21 @@ public class KubernetesApiClientLiveTest extends TestCase{
 
     public void deletePods() {
         try {
+            int count = 0;
             List<Pod> pods = client.getPods();
-            if(pods != null) {
-                for (Pod replicationController : pods) {
-                    client.deletePod(replicationController.getId());
+            while ((pods != null) || (pods.size() > 0)) {
+                for (Pod pod : pods) {
+                    if (StringUtils.isNotBlank(pod.getId())) {
+                        client.deletePod(pod.getId());
+                        count++;
+                        log.info(String.format("Pod deleted: [pod] %s", pod.getId()));
+                    }
                 }
+                pods = client.getPods();
+            }
+
+            if(count > 0) {
+                log.info(String.format("%d pods deleted", count));
             }
         } catch (KubernetesClientException e) {
             log.error("Could not delete pods", e);