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 <[email protected]> Authored: Sat Sep 19 23:15:07 2015 +0530 Committer: gayangunarathne <[email protected]> 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; + } }
