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 <[email protected]> Authored: Mon Sep 21 00:18:00 2015 +0530 Committer: Imesh Gunaratne <[email protected]> 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; }
