Repository: stratos Updated Branches: refs/heads/master 12fdfb087 -> fa985691e
Adding the missing changes Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fa985691 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fa985691 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fa985691 Branch: refs/heads/master Commit: fa985691e5d6a105290717ba1adb2c4de51d969c Parents: 12fdfb0 Author: gayangunarathne <[email protected]> Authored: Mon Sep 7 22:21:08 2015 +0530 Committer: gayangunarathne <[email protected]> Committed: Mon Sep 7 22:21:08 2015 +0530 ---------------------------------------------------------------------- .../messaging/topology/TopologyBuilder.java | 34 +++++++++++++++++++- .../rest/endpoint/api/StratosApiV41Utils.java | 16 ++++----- .../util/converter/ObjectConverter.java | 1 + 3 files changed, 42 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/fa985691/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 0e5c4a5..c4c2df9 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 @@ -31,6 +31,7 @@ import org.apache.stratos.cloud.controller.messaging.publisher.TopologyEventPubl import org.apache.stratos.cloud.controller.statistics.publisher.BAMUsageDataPublisher; import org.apache.stratos.cloud.controller.util.CloudControllerUtil; import org.apache.stratos.common.Property; +import org.apache.stratos.kubernetes.client.KubernetesConstants; import org.apache.stratos.messaging.domain.application.ClusterDataHolder; import org.apache.stratos.messaging.domain.instance.ClusterInstance; import org.apache.stratos.messaging.domain.topology.*; @@ -44,6 +45,8 @@ import org.apache.stratos.messaging.event.topology.*; import org.apache.stratos.metadata.client.defaults.DefaultMetaDataServiceClient; import org.apache.stratos.metadata.client.defaults.MetaDataServiceClient; +import java.net.URI; +import java.net.URISyntaxException; import java.util.*; /** @@ -857,8 +860,37 @@ public class TopologyBuilder { try { TopologyManager.acquireWriteLock(); List<KubernetesService> kubernetesServices = clusterContext.getKubernetesServices(); - cluster.setKubernetesServices(kubernetesServices); + if (kubernetesServices != null) { + + try { + // Generate access URLs for kubernetes services + for (KubernetesService kubernetesService : kubernetesServices) { + + if (kubernetesService.getServiceType().equals(KubernetesConstants.NODE_PORT)) { + // Public IP = Kubernetes minion public IP + String[] publicIPs = kubernetesService.getPublicIPs(); + if ((publicIPs != null) && (publicIPs.length > 0)) { + for (String publicIP : publicIPs) { + // There can be a String array with null values + if (publicIP != null) { + // Using type URI since only http, https, ftp, file, jar protocols are supported in URL + URI accessURL = new URI(kubernetesService.getProtocol(), null, publicIP, + kubernetesService.getPort(), null, null, null); + cluster.addAccessUrl(accessURL.toString()); + clusterInstanceActivatedEvent.addAccessUrl(accessURL.toString()); + } else { + log.error(String.format("Could not create access URL for [Kubernetes-service] %s , " + + "since Public IP is not available", kubernetesService.getId())); + } + } + } + } + } + } catch (URISyntaxException e) { + log.error("Could not create access URLs for Kubernetes services", e); + } + } ClusterInstance context = cluster.getInstanceContexts(clusterStatusClusterActivatedEvent.getInstanceId()); if (context == null) { http://git-wip-us.apache.org/repos/asf/stratos/blob/fa985691/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java index 629fdb5..761c9f1 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java @@ -65,6 +65,7 @@ import org.apache.stratos.common.client.StratosManagerServiceClient; import org.apache.stratos.common.exception.InvalidEmailException; import org.apache.stratos.common.util.ClaimsMgtUtil; import org.apache.stratos.common.util.CommonUtil; +import org.apache.stratos.kubernetes.client.KubernetesConstants; import org.apache.stratos.manager.service.stub.StratosManagerServiceApplicationSignUpExceptionException; import org.apache.stratos.manager.service.stub.StratosManagerServiceDomainMappingExceptionException; import org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp; @@ -158,14 +159,13 @@ public class StratosApiV41Utils { String type = portMapping.getKubernetesPortType(); if (isKubernetesIaasProviderAvailable) { - if (type == null) { - throw new RestAPIException((String.format("Type is not found in portmapping: %s - Possible " + - "values - %s and %s", portMapping.getName(), KUBERNETES_SERVICE_TYPE_NODEPORT, - KUBERNETES_SERVICE_TYPE_CLUSTERIP))); - } else if (!type.equals(KUBERNETES_SERVICE_TYPE_NODEPORT) && !type.equals(KUBERNETES_SERVICE_TYPE_CLUSTERIP)) { - throw new RestAPIException((String.format("Type is not found in portmapping: %s - Possible " + - "values - %s and %s", portMapping.getName(), KUBERNETES_SERVICE_TYPE_NODEPORT, - KUBERNETES_SERVICE_TYPE_CLUSTERIP))); + if (type == null || type.equals("")) { + portMapping.setKubernetesPortType(KubernetesConstants.NODE_PORT); + } else if (!type.equals(KubernetesConstants.NODE_PORT) && !type.equals + (KubernetesConstants.CLUSTER_IP)) { + throw new RestAPIException((String.format("Kubernetes" + + "PortType is invalid : %s - Possible values - %s and %s", portMapping.getName(), + KubernetesConstants.NODE_PORT, KubernetesConstants.CLUSTER_IP))); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/fa985691/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java index eea8434..b2d76ef 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java @@ -168,6 +168,7 @@ public class ObjectConverter { portMappingBean.setProtocol(portMapping.getProtocol()); portMappingBean.setPort(portMapping.getPort()); portMappingBean.setProxyPort(portMapping.getProxyPort()); + portMappingBean.setKubernetesPortType(portMapping.getKubernetesPortType()); portMappingBeans.add(portMappingBean); } return portMappingBeans;
