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/09/20 20:55:28 UTC

stratos git commit: Renaming kubernetes service selector label to serviceSelector and refining service & pod labels

Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x 500e9c2f7 -> c12e1508b


Renaming kubernetes service selector label to serviceSelector and refining service & pod labels


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

Branch: refs/heads/stratos-4.1.x
Commit: c12e1508b56f045fa4e37b4f24ac151d3f303a48
Parents: 500e9c2
Author: Imesh Gunaratne <im...@apache.org>
Authored: Mon Sep 21 00:18:00 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Mon Sep 21 00:24:51 2015 +0530

----------------------------------------------------------------------
 .../iaases/kubernetes/KubernetesIaas.java       | 47 ++++++++++++++------
 .../util/CloudControllerConstants.java          |  1 +
 .../kubernetes/client/KubernetesApiClient.java  |  2 +-
 .../kubernetes/client/KubernetesConstants.java  |  3 +-
 4 files changed, 38 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c12e1508/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 a462923..1b51d6c 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
@@ -434,15 +434,23 @@ public class KubernetesIaas extends Iaas {
                 memberContext.getMemberId(), cpu, memory));
 
         Map<String, String> podLabels = new HashMap<>();
-        podLabels
-                .put(CloudControllerConstants.MD5_HEX_MEMBER_ID_LABEL, DigestUtils.md5Hex(memberContext.getMemberId()));
+        podLabels.put(KubernetesConstants.SERVICE_SELECTOR_LABEL, podName);
+
+        podLabels.put(CloudControllerConstants.APPLICATION_ID_LABEL,
+                trimLabel(CloudControllerConstants.APPLICATION_ID_LABEL, memberContext.getApplicationId()));
+
+        podLabels.put(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL,
+                trimLabel(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL, memberContext.getClusterInstanceId()));
+
+        podLabels.put(CloudControllerConstants.MEMBER_ID_LABEL,
+                trimLabel(CloudControllerConstants.MEMBER_ID_LABEL, memberContext.getMemberId()));
 
         Map<String, String> podAnnotations = new HashMap<>();
-        podAnnotations.put(CloudControllerConstants.MEMBER_ID_LABEL, memberContext.getMemberId());
-        podAnnotations.put(CloudControllerConstants.CARTRIDGE_TYPE_LABEL, memberContext.getCartridgeType());
         podAnnotations.put(CloudControllerConstants.APPLICATION_ID_LABEL, memberContext.getApplicationId());
+        podAnnotations.put(CloudControllerConstants.CARTRIDGE_TYPE_LABEL, memberContext.getCartridgeType());
         podAnnotations.put(CloudControllerConstants.CLUSTER_ID_LABEL, memberContext.getClusterId());
         podAnnotations.put(CloudControllerConstants.CLUSTER_INSTANCE_ID_LABEL, memberContext.getClusterInstanceId());
+        podAnnotations.put(CloudControllerConstants.MEMBER_ID_LABEL, memberContext.getMemberId());
 
         kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports,
                 environmentVariables);
@@ -531,13 +539,11 @@ public class KubernetesIaas extends Iaas {
                         KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
                 while (kubernetesApi.getService(serviceId) != null) {
                     serviceSeqNo = kubernetesClusterContext.getNextServiceSeqNo();
-                    serviceId =
-                            KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
+                    serviceId = KubernetesIaasUtil.fixSpecialCharacters(prepareServiceName(serviceSeqNo));
                 }
 
                 if (log.isInfoEnabled()) {
-                    log.info(
-                            String.format("Creating kubernetes service: [cluster] %s [service-id] %s [service-name] " +
+                    log.info(String.format("Creating kubernetes service: [cluster] %s [service-id] %s [service-name] " +
                                             "%s " + "[protocol] %s [service-port] %d [container-port] %s", clusterId,
                                     serviceId, serviceName, clusterPortMapping.getProtocol(),
                                     clusterPortMapping.getKubernetesServicePort(), containerPort));
@@ -549,15 +555,20 @@ public class KubernetesIaas extends Iaas {
                 String containerPortName = KubernetesIaasUtil.preparePortNameFromPortMapping(clusterPortMapping);
 
                 Map<String, String> serviceLabels = new HashMap<>();
-                serviceLabels.put(CloudControllerConstants.MD5_HEX_APPLICATION_ID_LABEL,
-                        DigestUtils.md5Hex(clusterContext.getApplicationId()));
-                serviceLabels.put(CloudControllerConstants.MD5_HEX_CLUSTER_ID_LABEL,
-                        DigestUtils.md5Hex(clusterContext.getClusterId()));
+                serviceLabels.put(CloudControllerConstants.APPLICATION_ID_LABEL,
+                        trimLabel(CloudControllerConstants.APPLICATION_ID_LABEL, clusterContext.getApplicationId()));
+
+                serviceLabels.put(CloudControllerConstants.CLUSTER_ID_LABEL,
+                        trimLabel(CloudControllerConstants.CLUSTER_ID_LABEL, clusterContext.getClusterId()));
+
+                serviceLabels.put(CloudControllerConstants.PORT_NAME_LABEL,
+                        trimLabel(CloudControllerConstants.PORT_NAME_LABEL, clusterPortMapping.getName()));
 
                 Map<String, String> serviceAnnotations = new HashMap<>();
                 serviceAnnotations
                         .put(CloudControllerConstants.APPLICATION_ID_LABEL, clusterContext.getApplicationId());
                 serviceAnnotations.put(CloudControllerConstants.CLUSTER_ID_LABEL, clusterContext.getClusterId());
+                serviceAnnotations.put(CloudControllerConstants.PORT_NAME_LABEL, clusterPortMapping.getName());
                 serviceAnnotations.put(CloudControllerConstants.PROTOCOL_LABEL, clusterPortMapping.getProtocol());
                 serviceAnnotations.put(CloudControllerConstants.PORT_TYPE_LABEL,
                         clusterPortMapping.getKubernetesPortType());
@@ -578,7 +589,7 @@ public class KubernetesIaas extends Iaas {
 
                 Service service = kubernetesApi.getService(serviceId);
                 if (service == null) {
-                    throw new KubernetesClientException("Kubernetes service not found: [service-id] " + serviceId);
+                    throw new KubernetesClientException("Kubernetes service was not created: [service] " + serviceId);
                 }
 
                 KubernetesService kubernetesService = new KubernetesService();
@@ -615,6 +626,16 @@ public class KubernetesIaas extends Iaas {
         }
     }
 
+    private String trimLabel(String key, String value) {
+        if(StringUtils.isNotEmpty(value) && (value.length() > KubernetesConstants.MAX_LABEL_LENGTH)) {
+            String trimmed = value.substring(0, KubernetesConstants.MAX_LABEL_LENGTH - 2);
+            log.warn(String.format("Kubernetes label trimmed: [key] %s [original] %s [trimmed] %s",
+                    key, value, trimmed));
+            return trimmed;
+        }
+        return value;
+    }
+
     private String prepareServiceName(long serviceSeqNo) {
         return SERVICE_NAME_PREFIX + "-" + (serviceSeqNo);
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/c12e1508/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
index a29c755..a2f5bab 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
@@ -309,4 +309,5 @@ public final class CloudControllerConstants {
     public static final String LOADBALANCING_IP_TYPE_PRIVATE = "private";
     public static final String LOADBALANCING_IP_TYPE_PUBLIC = "public";
 
+    public static final String PORT_NAME_LABEL = "portName";
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/c12e1508/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
index 978273c..b231736 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
@@ -213,7 +213,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
 
             // Set service selector
             Map<String, String> selector = new HashMap<String, String>();
-            selector.put(KubernetesConstants.LABEL_NAME, serviceName);
+            selector.put(KubernetesConstants.SERVICE_SELECTOR_LABEL, serviceName);
             service.getSpec().setSelector(selector);
 
             // Invoke the api to create the service

http://git-wip-us.apache.org/repos/asf/stratos/blob/c12e1508/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesConstants.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesConstants.java
index d4dd02c..2a4a8dd 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesConstants.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesConstants.java
@@ -29,9 +29,10 @@ public class KubernetesConstants {
     public static final String SESSION_AFFINITY_CLIENT_IP = "ClientIP";
     public static final String KIND_POD = "Pod";
     public static final String KIND_SERVICE = "Service";
-    public static final String LABEL_NAME = "name";
+    public static final String SERVICE_SELECTOR_LABEL = "serviceSelector";
     public static final String RESOURCE_CPU = "cpu";
     public static final String RESOURCE_MEMORY = "memory";
     public static final String NODE_PORT = "NodePort";
     public static final String CLUSTER_IP = "ClusterIP";
+    public static final int MAX_LABEL_LENGTH = 63;
 }