You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/09/19 19:47:40 UTC

stratos git commit: Remove kubernetes cluster id from cluster context and added it to kubernetes services

Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x 8c784dff9 -> 07bd140ca


Remove kubernetes cluster id from cluster context and added it to kubernetes services


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

Branch: refs/heads/stratos-4.1.x
Commit: 07bd140ca2e15286b7a73decbbe8874edd3e3633
Parents: 8c784df
Author: gayangunarathne <ga...@wso2.com>
Authored: Sat Sep 19 23:15:07 2015 +0530
Committer: gayangunarathne <ga...@wso2.com>
Committed: Sat Sep 19 23:15:07 2015 +0530

----------------------------------------------------------------------
 .../cloud/controller/domain/ClusterContext.java |  8 --
 .../iaases/kubernetes/KubernetesIaas.java       | 79 +++++++++-----------
 .../iaases/kubernetes/KubernetesIaasUtil.java   |  2 +-
 .../messaging/topology/TopologyBuilder.java     |  7 +-
 .../domain/topology/KubernetesService.java      |  9 +++
 5 files changed, 50 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/07bd140c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/ClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/ClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/ClusterContext.java
index a559a1e..38aa8bf 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/ClusterContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/ClusterContext.java
@@ -47,7 +47,6 @@ public class ClusterContext implements Serializable {
     private long timeoutInMillis;
     private Properties properties;
     private Map<String, KubernetesService> kubernetesServices;
-    private String kubernetesClusterId;
 
     public ClusterContext(String applicationId, String cartridgeType, String clusterId, String payload, String hostName,
                           boolean isLbCluster, Properties properties) {
@@ -130,11 +129,4 @@ public class ClusterContext implements Serializable {
         kubernetesServices.remove(serviceName);
     }
 
-    public void setKubernetesClusterId(String kubernetesClusterId) {
-        this.kubernetesClusterId = kubernetesClusterId;
-    }
-
-    public String getKubernetesClusterId() {
-        return kubernetesClusterId;
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/07bd140c/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 e92f68b..44d8d1d 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
@@ -44,7 +44,10 @@ import org.apache.stratos.kubernetes.client.KubernetesConstants;
 import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
 import org.apache.stratos.messaging.domain.topology.KubernetesService;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import java.util.concurrent.locks.Lock;
 
 /**
@@ -181,7 +184,7 @@ public class KubernetesIaas extends Iaas {
             }
 
             String kubernetesClusterId = partition.getKubernetesClusterId();
-            clusterContext.setKubernetesClusterId(kubernetesClusterId);
+
             KubernetesCluster kubernetesCluster = CloudControllerContext.getInstance().
                     getKubernetesCluster(kubernetesClusterId);
             handleNullObject(kubernetesCluster, "kubernetes cluster not found: " +
@@ -218,7 +221,7 @@ public class KubernetesIaas extends Iaas {
 
             // Create kubernetes services for port mappings
             KubernetesApiClient kubernetesApi = kubernetesClusterContext.getKubApi();
-            createKubernetesServices(kubernetesApi, clusterContext, kubernetesCluster, kubernetesClusterContext);
+            createKubernetesServices(kubernetesApi, clusterContext, kubernetesCluster, kubernetesClusterContext,memberContext);
 
             // Create pod
             createPod(clusterContext, memberContext, kubernetesApi, kubernetesClusterContext);
@@ -460,7 +463,7 @@ public class KubernetesIaas extends Iaas {
      */
     private void createKubernetesServices(KubernetesApiClient kubernetesApi, ClusterContext clusterContext,
                                           KubernetesCluster kubernetesCluster,
-                                          KubernetesClusterContext kubernetesClusterContext)
+                                          KubernetesClusterContext kubernetesClusterContext,MemberContext memberContext)
             throws KubernetesClientException {
 
         String applicationId = clusterContext.getApplicationId();
@@ -558,6 +561,7 @@ public class KubernetesIaas extends Iaas {
 
                 String kubernetesServiceType = service.getSpec().getType();
                 kubernetesService.setServiceType(kubernetesServiceType);
+                kubernetesService.setKubernetesClusterId(memberContext.getPartition().getKubernetesClusterId());
 
                 if (kubernetesServiceType.equals(KubernetesConstants.NODE_PORT)) {
                     kubernetesService.setPort(service.getSpec().getPorts().get(0).getNodePort());
@@ -755,22 +759,21 @@ public class KubernetesIaas extends Iaas {
             handleNullObject(clusterContext, "Could not terminate containers, cluster not found: [cluster-id] "
                     + clusterId);
 
-            String kubernetesClusterId = clusterContext.getKubernetesClusterId();
-            handleNullObject(kubernetesClusterId, "Could not terminate containers, kubernetes cluster id not found: " +
-                    "[cluster-id] " + clusterId);
-
-            KubernetesClusterContext kubClusterContext = CloudControllerContext.getInstance().
-                    getKubernetesClusterContext(kubernetesClusterId);
-            handleNullObject(kubClusterContext, "Could not terminate containers, kubernetes cluster not found: " +
-                    "[kubernetes-cluster-id] " + kubernetesClusterId);
-
-            KubernetesApiClient kubApi = kubClusterContext.getKubApi();
-
             // Remove kubernetes services
             List<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices());
             if (kubernetesServices != null) {
                 for (KubernetesService kubernetesService : kubernetesServices) {
                     try {
+                        String kubernetesClusterId=kubernetesService.getKubernetesClusterId();
+                        handleNullObject(kubernetesClusterId, "Could not terminate containers, kubernetes cluster id not found: " +
+                                "[cluster-id] " + clusterId);
+                        KubernetesClusterContext kubClusterContext = CloudControllerContext.getInstance().
+                                getKubernetesClusterContext(kubernetesClusterId);
+                        handleNullObject(kubClusterContext, "Could not terminate containers, kubernetes cluster not found: " +
+                                "[kubernetes-cluster-id] " + kubernetesClusterId);
+
+                        KubernetesApiClient kubApi = kubClusterContext.getKubApi();
+
                         String serviceId = kubernetesService.getId();
                         kubApi.deleteService(serviceId);
 
@@ -957,41 +960,33 @@ public class KubernetesIaas extends Iaas {
     /**
      * Remove kubernetes services if available for application cluster.
      *
-     * @param applicationId
-     * @param clusterId
+     * @param clusterContext
+     *
      */
-    public static void removeKubernetesServices(String applicationId, String clusterId) {
-
-        ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId);
+    public static void removeKubernetesServices(ClusterContext clusterContext) {
 
         if (clusterContext != null) {
-            String kubernetesClusterId = clusterContext.getKubernetesClusterId();
+            ArrayList<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices());
 
-            if (org.apache.commons.lang3.StringUtils.isNotBlank(kubernetesClusterId)) {
+            for (KubernetesService kubernetesService : kubernetesServices) {
                 KubernetesClusterContext kubernetesClusterContext =
-                        CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesClusterId);
+                        CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesService.getKubernetesClusterId());
+                KubernetesApiClient kubernetesApiClient = kubernetesClusterContext.getKubApi();
+                String serviceId = kubernetesService.getId();
+                log.info(String.format("Deleting kubernetes service: [application-id] %s " +
+                        "[service-id] %s", clusterContext.getApplicationId(), serviceId));
 
-                if (kubernetesClusterContext != null) {
-                    KubernetesApiClient kubernetesApiClient = kubernetesClusterContext.getKubApi();
-                    ArrayList<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices());
-
-                    for (KubernetesService kubernetesService : kubernetesServices) {
-                        String serviceId = kubernetesService.getId();
-                        log.info(String.format("Deleting kubernetes service: [application-id] %s " +
-                                "[service-id] %s", applicationId, serviceId));
-
-                        try {
-                            kubernetesApiClient.deleteService(serviceId);
-                            kubernetesClusterContext.deallocatePort(kubernetesService.getPort());
-                            kubernetesClusterContext.removeKubernetesService(serviceId);
-                            clusterContext.removeKubernetesService(serviceId);
-                        } catch (KubernetesClientException e) {
-                            log.error(String.format("Could not delete kubernetes service: [application-id] %s " +
-                                    "[service-id] %s", applicationId, serviceId));
-                        }
-                    }
+                try {
+                    kubernetesApiClient.deleteService(serviceId);
+                    kubernetesClusterContext.deallocatePort(kubernetesService.getPort());
+                    kubernetesClusterContext.removeKubernetesService(serviceId);
+                    clusterContext.removeKubernetesService(serviceId);
+                } catch (KubernetesClientException e) {
+                    log.error(String.format("Could not delete kubernetes service: [application-id] %s " +
+                            "[service-id] %s", clusterContext.getApplicationId(), serviceId));
                 }
             }
         }
+
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/07bd140c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaasUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaasUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaasUtil.java
index cbf28ae..6caadb6 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaasUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/kubernetes/KubernetesIaasUtil.java
@@ -60,7 +60,7 @@ public class KubernetesIaasUtil {
      */
     public static List<EnvVar> prepareEnvironmentVariables(ClusterContext clusterContext, MemberContext memberContext) {
 
-        String kubernetesClusterId = clusterContext.getKubernetesClusterId();
+        String kubernetesClusterId = memberContext.getPartition().getKubernetesClusterId();
         List<EnvVar> environmentVariables = new ArrayList<EnvVar>();
 
         // Set dynamic payload

http://git-wip-us.apache.org/repos/asf/stratos/blob/07bd140c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
index 808ff16..851d334 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
@@ -19,7 +19,6 @@
 package org.apache.stratos.cloud.controller.messaging.topology;
 
 import com.google.common.collect.Lists;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.cloud.controller.context.CloudControllerContext;
@@ -1065,9 +1064,9 @@ public class TopologyBuilder {
                 // Remove kubernetes services if available
                 ClusterContext clusterContext =
                         CloudControllerContext.getInstance().getClusterContext(event.getClusterId());
-                if (StringUtils.isNotBlank(clusterContext.getKubernetesClusterId())) {
-                    KubernetesIaas.removeKubernetesServices(event.getAppId(), event.getClusterId());
-                }
+
+                KubernetesIaas.removeKubernetesServices(clusterContext);
+
             } else {
                 log.error(String.format("Cluster state transition is not valid: [cluster-id] %s " +
                                 " [instance-id] %s [current-status] %s [status-requested] %s",

http://git-wip-us.apache.org/repos/asf/stratos/blob/07bd140c/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/KubernetesService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/KubernetesService.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/KubernetesService.java
index a00809b..abac376 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/KubernetesService.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/KubernetesService.java
@@ -36,6 +36,7 @@ public class KubernetesService implements Serializable {
     private int containerPort;
     private String serviceType;
     private String portName;
+    private String kubernetesClusterId;
 
     public String getPortName() {
         return portName;
@@ -99,4 +100,12 @@ public class KubernetesService implements Serializable {
     public int getContainerPort() {
         return containerPort;
     }
+
+    public String getKubernetesClusterId() {
+        return kubernetesClusterId;
+    }
+
+    public void setKubernetesClusterId(String kubernetesClusterId) {
+        this.kubernetesClusterId = kubernetesClusterId;
+    }
 }