Repository: stratos Updated Branches: refs/heads/master 0eacfad93 -> ab9fed70a
STRATOS-1495 - create kubernetes services and port mappings once Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ab9fed70 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ab9fed70 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ab9fed70 Branch: refs/heads/master Commit: ab9fed70a2cab054d33e346aa0930d3ce1570a17 Parents: 0eacfad Author: lasinducharith <[email protected]> Authored: Wed Aug 12 16:57:16 2015 +0530 Committer: lasinducharith <[email protected]> Committed: Wed Aug 12 16:57:16 2015 +0530 ---------------------------------------------------------------------- .../iaases/kubernetes/KubernetesIaas.java | 39 +++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ab9fed70/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 820140b..149ac42 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 @@ -525,9 +525,18 @@ public class KubernetesIaas extends Iaas { String containerPortName = KubernetesIaasUtil.preparePortNameFromPortMapping(clusterPortMapping); try { - // Services need to use minions private IP addresses for creating iptable rules - kubernetesApi.createService(serviceId, serviceLabel, servicePort, serviceType, containerPortName, - containerPort, sessionAffinity); + // If kubernetes service is already created, skip creating a new one + if (kubernetesApi.getService(serviceId) == null) { + // Services need to use minions private IP addresses for creating iptable rules + kubernetesApi.createService(serviceId, serviceLabel, servicePort, serviceType, containerPortName, + containerPort, sessionAffinity); + } else { + if (log.isDebugEnabled()) { + log.debug(String.format("Kubernetes service is already created: [cluster] %s [service] %s " + + "[protocol] %s [service-port] %d [container-port] %d", clusterId, + serviceId, clusterPortMapping.getProtocol(), servicePort, containerPort)); + } + } } finally { // Persist kubernetes service sequence no CloudControllerContext.getInstance().persist(); @@ -622,15 +631,25 @@ public class KubernetesIaas extends Iaas { String serviceType = portMapping.getKubernetesPortType(); clusterPortMapping.setKubernetesServiceType(serviceType); - if (serviceType.equals(KubernetesConstants.NODE_PORT)) { - int nextServicePort = kubernetesClusterContext.getNextServicePort(); - if (nextServicePort == -1) { - throw new RuntimeException(String.format("Could not generate service port: [cluster-id] %s " + - "[port] %d", clusterId, portMapping.getPort())); + //If kubernetes service port is already set, skip setting a new one + if (clusterPortMapping.getKubernetesServicePort() == 0) { + if (serviceType.equals(KubernetesConstants.NODE_PORT)) { + int nextServicePort = kubernetesClusterContext.getNextServicePort(); + if (nextServicePort == -1) { + throw new RuntimeException(String.format("Could not generate service port: [cluster-id] %s " + + "[port] %d", clusterId, portMapping.getPort())); + } + clusterPortMapping.setKubernetesServicePort(nextServicePort); + } else { + clusterPortMapping.setKubernetesServicePort(portMapping.getPort()); } - clusterPortMapping.setKubernetesServicePort(nextServicePort); } else { - clusterPortMapping.setKubernetesServicePort(portMapping.getPort()); + if (log.isDebugEnabled()) { + log.debug(String.format("Kubernetes service port is already set: [application-id] %s " + + "[cluster-id] %s [port] %d [service-port] %d", + applicationId, clusterId, clusterPortMapping.getPort(), + clusterPortMapping.getKubernetesServicePort())); + } } // Add port mappings to payload
