You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/09/07 18:51:37 UTC
stratos git commit: Adding the missing changes
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 <ga...@wso2.com>
Authored: Mon Sep 7 22:21:08 2015 +0530
Committer: gayangunarathne <ga...@wso2.com>
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;