I have added few comments on this commit: https://github.com/apache/stratos/commit/fe4205989905679f392b238f167c07a98900c57f
Thanks ---------- Forwarded message ---------- From: <raviha...@apache.org> Date: Sun, Sep 20, 2015 at 12:01 PM Subject: [15/17] stratos git commit: Adding annotations in K8s when creating services and pods To: comm...@stratos.apache.org Adding annotations in K8s when creating services and pods Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fe420598 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fe420598 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fe420598 Branch: refs/heads/stratos-4.1.x Commit: fe4205989905679f392b238f167c07a98900c57f Parents: 5e4d3f0 Author: Akila Perera <ravihansa3...@gmail.com> Authored: Sun Sep 20 11:10:22 2015 +0530 Committer: Akila Perera <ravihansa3...@gmail.com> Committed: Sun Sep 20 11:10:22 2015 +0530 ---------------------------------------------------------------------- .../iaases/kubernetes/KubernetesIaas.java | 57 ++++++++++++-------- .../kubernetes/client/KubernetesApiClient.java | 12 +++-- .../KubernetesAPIClientInterface.java | 10 ++-- 3 files changed, 47 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/fe420598/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 060d39a..d4a0e6c 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 @@ -433,13 +433,17 @@ public class KubernetesIaas extends Iaas { memberContext.getMemberId(), cpu, memory)); Map<String, String> podLabels = new HashMap<>(); - podLabels.put("applicationId", memberContext.getApplicationId()); - podLabels.put("clusterId", memberContext.getClusterId()); - podLabels.put("clusterInstanceId", memberContext.getClusterInstanceId()); - podLabels.put("memberId", memberContext.getMemberId()); - podLabels.put("cartridgeType", memberContext.getCartridgeType()); + podLabels.put("md5Hex-memberId", DigestUtils.md5Hex(memberContext.getMemberId())); - kubernetesApi.createPod(podId, podName, podLabels, dockerImage, cpu, memory, ports, environmentVariables); + Map<String, String> podAnnotations = new HashMap<>(); + podAnnotations.put("memberId", memberContext.getMemberId()); + podAnnotations.put("cartridgeType", memberContext.getCartridgeType()); + podAnnotations.put("applicationId", memberContext.getApplicationId()); + podAnnotations.put("clusterId", memberContext.getClusterId()); + podAnnotations.put("clusterInstanceId", memberContext.getClusterInstanceId()); + + kubernetesApi.createPod(podId, podName, podLabels, podAnnotations, dockerImage, cpu, memory, ports, + environmentVariables); log.info(String.format("Pod started successfully: [application] %s [cartridge] %s [member] %s " + "[pod] %s [pod-label] %s [cpu] %s [memory] %s", @@ -502,7 +506,6 @@ public class KubernetesIaas extends Iaas { Collection<ClusterPortMapping> clusterPortMappings = CloudControllerContext.getInstance() .getClusterPortMappings(clusterContext.getApplicationId(), clusterId); - Map<String, String> serviceLabels = new HashMap<>(); if (clusterPortMappings != null) { String serviceName = DigestUtils.md5Hex(clusterId); @@ -542,18 +545,24 @@ public class KubernetesIaas extends Iaas { int servicePort = clusterPortMapping.getKubernetesServicePort(); String serviceType = clusterPortMapping.getKubernetesServiceType(); String containerPortName = KubernetesIaasUtil.preparePortNameFromPortMapping(clusterPortMapping); - serviceLabels.put("applicationId", clusterPortMapping.getApplicationId()); - serviceLabels.put("clusterId", clusterPortMapping.getClusterId()); - serviceLabels.put("name", clusterPortMapping.getName()); - serviceLabels.put("protocol", clusterPortMapping.getProtocol()); - serviceLabels.put("serviceType", clusterPortMapping.getKubernetesServiceType()); - serviceLabels.put("portType", clusterPortMapping.getKubernetesPortType()); - serviceLabels.put("servicePort", String.valueOf(clusterPortMapping.getKubernetesServicePort())); - serviceLabels.put("port", String.valueOf(clusterPortMapping.getPort())); - serviceLabels.put("proxyPort", String.valueOf(clusterPortMapping.getProxyPort())); - - kubernetesApi.createService(serviceId, serviceName, serviceLabels, servicePort, serviceType, - containerPortName, containerPort, sessionAffinity); + + Map<String, String> serviceLabels = new HashMap<>(); + serviceLabels.put("applicationId", DigestUtils.md5Hex(clusterContext.getApplicationId())); + serviceLabels.put("clusterId", DigestUtils.md5Hex(clusterContext.getClusterId())); + + Map<String, String> serviceAnnotations = new HashMap<>(); + serviceAnnotations.put("applicationId", clusterContext.getApplicationId()); + serviceAnnotations.put("clusterId", clusterContext.getClusterId()); + serviceAnnotations.put("name", clusterPortMapping.getName()); + serviceAnnotations.put("protocol", clusterPortMapping.getProtocol()); + serviceAnnotations.put("serviceType", clusterPortMapping.getKubernetesServiceType()); + serviceAnnotations.put("portType", clusterPortMapping.getKubernetesPortType()); + serviceAnnotations.put("servicePort", String.valueOf(clusterPortMapping.getKubernetesServicePort())); + serviceAnnotations.put("port", String.valueOf(clusterPortMapping.getPort())); + serviceAnnotations.put("proxyPort", String.valueOf(clusterPortMapping.getProxyPort())); + + kubernetesApi.createService(serviceId, serviceName, serviceLabels, serviceAnnotations, servicePort, + serviceType, containerPortName, containerPort, sessionAffinity); try { Thread.sleep(1000); } @@ -995,16 +1004,17 @@ public class KubernetesIaas extends Iaas { * Remove kubernetes services if available for application cluster. * * @param clusterContext - * */ public static void removeKubernetesServices(ClusterContext clusterContext) { if (clusterContext != null) { - ArrayList<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices()); + ArrayList<KubernetesService> kubernetesServices = + Lists.newArrayList(clusterContext.getKubernetesServices()); for (KubernetesService kubernetesService : kubernetesServices) { KubernetesClusterContext kubernetesClusterContext = - CloudControllerContext.getInstance().getKubernetesClusterContext(kubernetesService.getKubernetesClusterId()); + CloudControllerContext.getInstance() + .getKubernetesClusterContext(kubernetesService.getKubernetesClusterId()); KubernetesApiClient kubernetesApiClient = kubernetesClusterContext.getKubApi(); String serviceId = kubernetesService.getId(); log.info(String.format("Deleting kubernetes service: [application-id] %s " + @@ -1015,7 +1025,8 @@ public class KubernetesIaas extends Iaas { kubernetesClusterContext.deallocatePort(kubernetesService.getPort()); kubernetesClusterContext.removeKubernetesService(serviceId); clusterContext.removeKubernetesService(serviceId); - } catch (KubernetesClientException e) { + } + 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/fe420598/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 5d0aff1..fe94d39 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 @@ -56,7 +56,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface { * @throws KubernetesClientException */ @Override - public void createPod(String podId, String podName, Map<String, String> podLabels, String dockerImage, String cpu, + public void createPod(String podId, String podName, Map<String, String> podLabels, Map<String, String> annotations, + String dockerImage, String cpu, String memory, List<ContainerPort> ports, List<EnvVar> environmentVariables) throws KubernetesClientException { @@ -75,6 +76,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface { pod.setMetadata(new ObjectMeta()); pod.getMetadata().setName(podId); pod.getMetadata().setLabels(podLabels); + pod.getMetadata().setAnnotations(annotations); // Set container template Container containerTemplate = new Container(); @@ -163,8 +165,9 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface { * @throws KubernetesClientException */ @Override - public void createService(String serviceId, String serviceName, Map<String, String> serviceLabels, int servicePort, - String serviceType, String containerPortName, int containerPort, String sessionAffinity) + public void createService(String serviceId, String serviceName, Map<String, String> serviceLabels, Map<String, + String> annotations, int servicePort, String serviceType, String containerPortName, int containerPort, + String sessionAffinity) throws KubernetesClientException { try { @@ -179,12 +182,11 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface { Service service = new Service(); service.setSpec(new ServiceSpec()); service.setMetadata(new ObjectMeta()); - service.setApiVersion(Service.ApiVersion.V_1); service.setKind(KubernetesConstants.KIND_SERVICE); - service.getMetadata().setName(serviceId); service.getSpec().setSessionAffinity(sessionAffinity); + service.getMetadata().setAnnotations(annotations); if (serviceType.equals(KubernetesConstants.NODE_PORT)) { service.getSpec().setType(KubernetesConstants.NODE_PORT); http://git-wip-us.apache.org/repos/asf/stratos/blob/fe420598/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java index 95ea1e7..f1d6566 100644 --- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java +++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java @@ -45,8 +45,9 @@ public interface KubernetesAPIClientInterface { * @param environmentVariables environment variables * @throws KubernetesClientException */ - public void createPod(String podId, String podName, Map<String, String> podLabels, String dockerImage, String cpu, - String memory, List<ContainerPort> ports, List<EnvVar> environmentVariables) + public void createPod(String podId, String podName, Map<String, String> podLabels, Map<String, String> annotations, + String dockerImage, String cpu, String memory, List<ContainerPort> ports, + List<EnvVar> environmentVariables) throws KubernetesClientException; /** @@ -87,8 +88,9 @@ public interface KubernetesAPIClientInterface { * @param sessionAffinity * @throws KubernetesClientException */ - public void createService(String serviceId, String serviceName, Map<String, String> podLabels, int servicePort, - String serviceType, String containerPortName, int containerPort, String sessionAffinity) + public void createService(String serviceId, String serviceName, Map<String, String> podLabels, Map<String, + String> annotations, int servicePort, String serviceType, String containerPortName, int containerPort, + String sessionAffinity) throws KubernetesClientException; /** -- Imesh Gunaratne Senior Technical Lead, WSO2 Committer & PMC Member, Apache Stratos