Update the kubernetes service against the cluster instance id
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/de7c53c5 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/de7c53c5 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/de7c53c5 Branch: refs/heads/stratos-4.1.x Commit: de7c53c5c8786f77e34abc2c4a5e7cd771c3930f Parents: 7645bc5 Author: gayangunarathne <[email protected]> Authored: Mon Sep 21 14:42:37 2015 +0530 Committer: gayangunarathne <[email protected]> Committed: Mon Sep 21 14:42:37 2015 +0530 ---------------------------------------------------------------------- .../cloud/controller/domain/ClusterContext.java | 37 +++++++++++++++----- .../iaases/kubernetes/KubernetesIaas.java | 8 ++--- .../messaging/topology/TopologyBuilder.java | 6 ++-- 3 files changed, 36 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/de7c53c5/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 38aa8bf..9e8b7d2 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 @@ -23,9 +23,7 @@ import org.apache.stratos.common.Properties; import org.apache.stratos.messaging.domain.topology.KubernetesService; import java.io.Serializable; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Holds runtime data of a Cluster. @@ -46,7 +44,7 @@ public class ClusterContext implements Serializable { // on an unregistration. private long timeoutInMillis; private Properties properties; - private Map<String, KubernetesService> kubernetesServices; + private Map<String, Map<String,KubernetesService>> kubernetesServices; public ClusterContext(String applicationId, String cartridgeType, String clusterId, String payload, String hostName, boolean isLbCluster, Properties properties) { @@ -117,12 +115,35 @@ public class ClusterContext implements Serializable { this.properties = properties; } - public Collection<KubernetesService> getKubernetesServices() { - return kubernetesServices.values(); + public Collection<KubernetesService> getKubernetesServices(String clusterInstanceId) { + Collection<KubernetesService> arrayKubernetesList = new ArrayList<>(); + if (kubernetesServices.get(clusterInstanceId) != null) { + arrayKubernetesList = kubernetesServices.get(clusterInstanceId).values(); + } + return arrayKubernetesList; } - public void addKubernetesService(KubernetesService kubernetesService) { - this.kubernetesServices.put(kubernetesService.getId(), kubernetesService); + public Collection<KubernetesService> getAllKubernetesServicesForCluster() { + + Collection<KubernetesService> allServices = new ArrayList<>(); + + Iterator<Map.Entry<String, Map<String, KubernetesService>>> kubServicesPerInsatnceEntry = kubernetesServices.entrySet().iterator(); + while (kubServicesPerInsatnceEntry.hasNext()) { + Map.Entry<String, Map<String, KubernetesService>> kubServicePerClusterInstance = kubServicesPerInsatnceEntry.next(); + Iterator<Map.Entry<String, KubernetesService>> kubServiceEntry = kubServicePerClusterInstance.getValue().entrySet().iterator(); + while (kubServiceEntry.hasNext()) { + allServices.add(kubServiceEntry.next().getValue()); + } + + } + return allServices; + + } + + public void addKubernetesService(String clusterInstanceId,KubernetesService kubernetesService) { + HashMap<String, KubernetesService> kubernetesServiceHashMap = new HashMap<>(); + kubernetesServiceHashMap.put(kubernetesService.getId(), kubernetesService); + this.kubernetesServices.put(clusterInstanceId, kubernetesServiceHashMap); } public void removeKubernetesService(String serviceName) { http://git-wip-us.apache.org/repos/asf/stratos/blob/de7c53c5/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 cd009fc..5a32c70 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 @@ -519,7 +519,7 @@ public class KubernetesIaas extends Iaas { if (clusterPortMappings != null) { String serviceName = DigestUtils.md5Hex(clusterId); - Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(); + Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(memberContext.getClusterInstanceId()); for (ClusterPortMapping clusterPortMapping : clusterPortMappings) { // Skip if already created @@ -620,7 +620,7 @@ public class KubernetesIaas extends Iaas { kubernetesService.setContainerPort(containerPort); - clusterContext.addKubernetesService(kubernetesService); + clusterContext.addKubernetesService(memberContext.getClusterInstanceId(),kubernetesService); CloudControllerContext.getInstance().persist(); if (log.isInfoEnabled()) { @@ -856,7 +856,7 @@ public class KubernetesIaas extends Iaas { + clusterId); // Remove kubernetes services - List<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices()); + List<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getAllKubernetesServicesForCluster()); if (kubernetesServices != null) { for (KubernetesService kubernetesService : kubernetesServices) { try { @@ -1076,7 +1076,7 @@ public class KubernetesIaas extends Iaas { if (clusterContext != null) { ArrayList<KubernetesService> kubernetesServices = - Lists.newArrayList(clusterContext.getKubernetesServices()); + Lists.newArrayList(clusterContext.getAllKubernetesServicesForCluster()); for (KubernetesService kubernetesService : kubernetesServices) { KubernetesClusterContext kubernetesClusterContext = http://git-wip-us.apache.org/repos/asf/stratos/blob/de7c53c5/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 528c6ae..e94bb52 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 @@ -454,7 +454,7 @@ public class TopologyBuilder { Cluster cluster = service.getCluster(memberContext.getClusterId()); String clusterId = cluster.getClusterId(); ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); - List<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices()); + List<KubernetesService> kubernetesServices = Lists.newArrayList(clusterContext.getKubernetesServices(memberContext.getClusterInstanceId())); if (!kubernetesServices.isEmpty()) { cluster.setKubernetesServices(kubernetesServices); @@ -605,7 +605,7 @@ public class TopologyBuilder { List<PortMapping> portMappings = Arrays.asList(cartridge.getPortMappings()); String clusterId = cluster.getClusterId(); ClusterContext clusterContext = CloudControllerContext.getInstance().getClusterContext(clusterId); - Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(); + Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(instanceActivatedEvent.getClusterInstanceId()); for (PortMapping portMapping : portMappings) { if (!kubernetesServices.isEmpty()) { @@ -852,7 +852,7 @@ public class TopologyBuilder { clusterStatusClusterActivatedEvent.getInstanceId()); try { TopologyManager.acquireWriteLock(); - Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(); + Collection<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(clusterStatusClusterActivatedEvent.getInstanceId()); if (kubernetesServices != null) {
