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/03/15 10:28:57 UTC

[2/2] stratos git commit: Introducing new logic to generate kubernetes pod id and store it in kubernetes cluster context

Introducing new logic to generate kubernetes pod id and store it in kubernetes cluster context


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

Branch: refs/heads/master
Commit: 210b825fe5ec887de14849e82dd4292bdb41faed
Parents: ae7b94c
Author: Imesh Gunaratne <im...@apache.org>
Authored: Sun Mar 15 14:58:33 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Sun Mar 15 14:58:33 2015 +0530

----------------------------------------------------------------------
 .../context/CloudControllerContext.java         |    9 -
 .../kubernetes/KubernetesClusterContext.java    |   24 +-
 .../iaases/kubernetes/KubernetesIaas.java       |   32 +-
 .../main/resources/CloudControllerService.wsdl  | 2514 +++++++++---------
 4 files changed, 1288 insertions(+), 1291 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/210b825f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
index ac3997d..8543810 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
@@ -168,7 +168,6 @@ public class CloudControllerContext implements Serializable {
 
     private transient AsyncDataPublisher dataPublisher;
     private boolean coordinator;
-    private int kubernetesServiceSeqNo;
 
     private CloudControllerContext() {
         // Check clustering status
@@ -730,12 +729,4 @@ public class CloudControllerContext implements Serializable {
             destinationList.add(item);
         }
     }
-
-    public int getKubernetesServiceSeqNo() {
-        return kubernetesServiceSeqNo;
-    }
-
-    public void setKubernetesServiceSeqNo(int kubernetesServiceSeqNo) {
-        this.kubernetesServiceSeqNo = kubernetesServiceSeqNo;
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/210b825f/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
index 0132475..2a8bc23 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
@@ -18,14 +18,15 @@
  */
 package org.apache.stratos.cloud.controller.domain.kubernetes;
 
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.kubernetes.client.KubernetesApiClient;
 
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
+
 /**
  * Holds information about a Kubernetes Cluster.
  *
@@ -47,7 +48,9 @@ public class KubernetesClusterContext implements Serializable {
     private List<Integer> servicePorts;
     // kubernetes client API instance
     private transient KubernetesApiClient kubApi;
-    
+    private AtomicLong serviceSeqNo;
+    private AtomicLong podSeqNo;
+
     public KubernetesClusterContext(String id, String masterIp, String masterPort, int lowerPort, int upperPort) {
     	servicePorts = new ArrayList<Integer>();
         this.lowerPort = lowerPort;
@@ -58,6 +61,8 @@ public class KubernetesClusterContext implements Serializable {
     	this.masterIp = masterIp;
     	this.masterPort = masterPort;
     	this.setKubApi(new KubernetesApiClient(getEndpoint(masterIp, masterPort)));
+        this.serviceSeqNo = new AtomicLong();
+        this.podSeqNo = new AtomicLong();
     	
 	}
     
@@ -136,6 +141,14 @@ public class KubernetesClusterContext implements Serializable {
         this.lowerPort = lowerPort;
     }
 
+    public AtomicLong getServiceSeqNo() {
+        return serviceSeqNo;
+    }
+
+    public AtomicLong getPodSeqNo() {
+        return podSeqNo;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -184,5 +197,4 @@ public class KubernetesClusterContext implements Serializable {
             return false;
         return true;
     }
-
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/210b825f/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 c6064fe..f6ef684 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
@@ -41,8 +41,8 @@ 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.Pod;
-import org.apache.stratos.kubernetes.client.model.Service;
 import org.apache.stratos.kubernetes.client.model.Port;
+import org.apache.stratos.kubernetes.client.model.Service;
 import org.apache.stratos.messaging.domain.topology.KubernetesService;
 
 import java.util.ArrayList;
@@ -202,19 +202,19 @@ public class KubernetesIaas extends Iaas {
                 }
             }
 
-            KubernetesClusterContext kubClusterContext = getKubernetesClusterContext(kubernetesClusterId,
+            KubernetesClusterContext kubernetesClusterContext = getKubernetesClusterContext(kubernetesClusterId,
                     kubernetesMasterIp, kubernetesMasterPort, kubernetesPortRange.getUpper(),
                     kubernetesPortRange.getLower());
 
             // Generate kubernetes service ports and update port mappings in cartridge
-            generateKubernetesServicePorts(kubClusterContext, clusterContext.getClusterId(), cartridge);
+            generateKubernetesServicePorts(kubernetesClusterContext, clusterContext.getClusterId(), cartridge);
 
             // Create kubernetes services for port mappings
-            KubernetesApiClient kubernetesApi = kubClusterContext.getKubApi();
-            createKubernetesServices(kubernetesApi, clusterContext, kubernetesCluster);
+            KubernetesApiClient kubernetesApi = kubernetesClusterContext.getKubApi();
+            createKubernetesServices(kubernetesApi, clusterContext, kubernetesCluster, kubernetesClusterContext);
 
             // Create pod
-            createPod(clusterContext, memberContext, kubernetesApi);
+            createPod(clusterContext, memberContext, kubernetesApi, kubernetesClusterContext);
 
             // Wait for pod status to be changed to running
             Pod pod = waitForPodToBeActivated(memberContext, kubernetesApi);
@@ -338,10 +338,11 @@ public class KubernetesIaas extends Iaas {
      *
      * @param memberContext
      * @param kubernetesApi
+     * @param kubernetesClusterContext
      * @throws KubernetesClientException
      */
     private void createPod(ClusterContext clusterContext, MemberContext memberContext,
-                           KubernetesApiClient kubernetesApi)
+                           KubernetesApiClient kubernetesApi, KubernetesClusterContext kubernetesClusterContext)
             throws KubernetesClientException {
 
         String applicationId = memberContext.getApplicationId();
@@ -381,7 +382,8 @@ public class KubernetesIaas extends Iaas {
         memberContext.setDynamicPayload(payload.toArray(new NameValuePair[payload.size()]));
 
         // Create pod
-        String podId = KubernetesIaasUtil.fixSpecialCharacters(memberId);
+        long podSeqNo = kubernetesClusterContext.getPodSeqNo().incrementAndGet();
+        String podId = "pod" + "-" + podSeqNo;
         String podLabel = KubernetesIaasUtil.fixSpecialCharacters(clusterId);
         String dockerImage = iaasProvider.getImage();
         EnvironmentVariable[] environmentVariables = KubernetesIaasUtil.prepareEnvironmentVariables(
@@ -390,9 +392,10 @@ public class KubernetesIaas extends Iaas {
         List<Port> ports = KubernetesIaasUtil.convertPortMappings(cartridge.getPortMappings());
         kubernetesApi.createPod(podId, podLabel, dockerImage, ports, environmentVariables);
 
-        // Add pod id to member context and persist
+        // Add pod id to member context
         memberContext.setKubernetesPodId(podId);
         memberContext.setKubernetesPodLabel(podLabel);
+        // Persist cloud controller context
         CloudControllerContext.getInstance().persist();
 
         if (log.isInfoEnabled()) {
@@ -408,10 +411,12 @@ public class KubernetesIaas extends Iaas {
      * @param kubernetesApi
      * @param clusterContext
      * @param kubernetesCluster
+     * @param kubernetesClusterContext
      * @throws KubernetesClientException
      */
     private void createKubernetesServices(KubernetesApiClient kubernetesApi, ClusterContext clusterContext,
-                                                             KubernetesCluster kubernetesCluster)
+                                          KubernetesCluster kubernetesCluster,
+                                          KubernetesClusterContext kubernetesClusterContext)
             throws KubernetesClientException {
 
         String clusterId = clusterContext.getClusterId();
@@ -446,7 +451,6 @@ public class KubernetesIaas extends Iaas {
             log.debug(String.format("Minion public IPs: %s", minionPublicIPs));
         }
 
-        int kubernetesServiceSeqNo = CloudControllerContext.getInstance().getKubernetesServiceSeqNo();
         for (PortMapping portMapping : cartridge.getPortMappings()) {
 
             // Skip if already created
@@ -455,8 +459,9 @@ public class KubernetesIaas extends Iaas {
                 continue;
             }
 
-            // Service id = cluster id + kubernetes service seq number of cluster
-            String serviceId = KubernetesIaasUtil.fixSpecialCharacters("service" + "-" + (++kubernetesServiceSeqNo));
+            // Find next service sequence no
+            long serviceSeqNo = kubernetesClusterContext.getServiceSeqNo().incrementAndGet();
+            String serviceId = KubernetesIaasUtil.fixSpecialCharacters("service" + "-" + (serviceSeqNo));
             String serviceLabel = KubernetesIaasUtil.fixSpecialCharacters(clusterId);
 
             if (log.isInfoEnabled()) {
@@ -475,7 +480,6 @@ public class KubernetesIaas extends Iaas {
                         minionPublicIPs.toArray(new String[minionPublicIPs.size()]));
             } finally {
                 // Persist kubernetes service sequence no
-                CloudControllerContext.getInstance().setKubernetesServiceSeqNo(kubernetesServiceSeqNo);
                 CloudControllerContext.getInstance().persist();
             }