Adding https kubernetes endpoint support

Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a4c516ea
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a4c516ea
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a4c516ea

Branch: refs/heads/stratos-4.1.x
Commit: a4c516eaad75a466bd4a9449ee5f87821c3b126b
Parents: 6ee5045
Author: anuruddhal <[email protected]>
Authored: Thu Apr 28 19:23:24 2016 +0530
Committer: anuruddhal <[email protected]>
Committed: Thu Apr 28 19:23:24 2016 +0530

----------------------------------------------------------------------
 .../kubernetes/KubernetesClusterContext.java    |  49 +-
 .../domain/kubernetes/KubernetesMaster.java     |  13 +-
 .../iaases/kubernetes/KubernetesIaas.java       |  49 +-
 .../impl/CloudControllerServiceImpl.java        |  15 +-
 .../controller/util/CloudControllerUtil.java    |  25 +-
 .../beans/kubernetes/KubernetesMasterBean.java  |  11 +-
 .../schema/configure/kubernetes-clusters.json   |  12 +-
 .../rest/endpoint/api/StratosApiV41.java        |   8 +-
 .../util/converter/ObjectConverter.java         |   2 +
 .../main/resources/CloudControllerService.wsdl  | 690 ++++++++++---------
 10 files changed, 472 insertions(+), 402 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
index d22f977..cc2c1a4 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesClusterContext.java
@@ -23,11 +23,16 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.kubernetes.client.KubernetesApiClient;
 
 import java.io.Serializable;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.common.constants.StratosConstants;
+
 /**
  * Holds information about a Kubernetes Cluster.
  */
@@ -35,13 +40,12 @@ public class KubernetesClusterContext implements 
Serializable {
 
     private static final long serialVersionUID = -802025758806195791L;
 
-    private static final Log log = 
LogFactory.getLog(KubernetesClusterContext.class);
-
     private String kubernetesClusterId;
     private int upperPort;
     private int lowerPort;
     private String masterIp;
     private String masterPort;
+    private String endpoint;
     private List<Integer> servicePortSequence;
 
     private AtomicLong serviceSeqNo;
@@ -50,7 +54,8 @@ public class KubernetesClusterContext implements Serializable 
{
     public static final long MAX_POD_ID = 99999999999999L;
     public static final long MAX_SERVICE_ID = 99999999999999L;
 
-    public KubernetesClusterContext(String id, String masterIp, String 
masterPort, int lowerPort, int upperPort) {
+    public KubernetesClusterContext(String id, String masterIp, String 
masterPort, int lowerPort, int upperPort,
+                                    String endpoint) {
         this.servicePortSequence = new ArrayList<>();
         serviceSeqNo = new AtomicLong(0);
         podSeqNo = new AtomicLong(0);
@@ -62,11 +67,25 @@ public class KubernetesClusterContext implements 
Serializable {
         this.kubernetesClusterId = id;
         this.masterIp = masterIp;
         this.masterPort = masterPort;
-        this.setKubApi(new KubernetesApiClient(getEndpoint(masterIp, 
masterPort)));
+        this.endpoint = endpoint;
+        this.setKubApi(new KubernetesApiClient(prepareEndpoint()));
     }
 
-    private String getEndpoint(String ip, String port) {
-        return "http://"; + ip + ":" + port + "/api/v1beta1/";
+    private String prepareEndpoint() {
+        if (endpoint != null) {
+            return endpoint;
+        }
+        URL endpointURL = null;
+        try {
+            if (this.masterPort != null) {
+                endpointURL = new URL("http", this.masterIp, 
Integer.parseInt(masterPort), "");
+            } else {
+                endpointURL = new URL("http", this.masterIp, "");
+            }
+        } catch (MalformedURLException e) {
+            throw new RuntimeException(e.getMessage());
+        }
+        return endpointURL.toString();
     }
 
     public String getKubernetesClusterId() {
@@ -131,7 +150,7 @@ public class KubernetesClusterContext implements 
Serializable {
 
     public KubernetesApiClient getKubApi() {
         if (kubApi == null) {
-            kubApi = new KubernetesApiClient(getEndpoint(masterIp, 
masterPort));
+            kubApi = new KubernetesApiClient(prepareEndpoint());
         }
         return kubApi;
     }
@@ -172,6 +191,15 @@ public class KubernetesClusterContext implements 
Serializable {
         return podSeqNo.incrementAndGet();
     }
 
+    public void updateKubClusterContextParams(KubernetesCluster 
kubernetesCluster) {
+        this.masterIp = 
kubernetesCluster.getKubernetesMaster().getPrivateIPAddress();
+        this.masterPort = CloudControllerUtil
+                
.getProperty(kubernetesCluster.getKubernetesMaster().getProperties(),
+                        StratosConstants.KUBERNETES_MASTER_PORT);
+        this.endpoint = kubernetesCluster.getKubernetesMaster().getEndpoint();
+        this.kubApi = new KubernetesApiClient(prepareEndpoint());
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
@@ -228,6 +256,13 @@ public class KubernetesClusterContext implements 
Serializable {
         } else if (!masterPort.equals(other.masterPort)) {
             return false;
         }
+        if (endpoint == null) {
+            if (other.endpoint != null) {
+                return false;
+            }
+        } else if (!endpoint.equals(other.endpoint)) {
+            return false;
+        }
         if (upperPort != other.upperPort) {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesMaster.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesMaster.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesMaster.java
index 84e28c3..aa38d58 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesMaster.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/domain/kubernetes/KubernetesMaster.java
@@ -29,7 +29,7 @@ import java.io.Serializable;
 public class KubernetesMaster extends KubernetesHost implements Serializable {
 
     private static final long serialVersionUID = -4369535909362724532L;
-
+    private String endpoint;
     public KubernetesMaster() {
     }
 
@@ -42,6 +42,7 @@ public class KubernetesMaster extends KubernetesHost 
implements Serializable {
         return "KubernetesMaster [hostId=" + getHostId() +
                 " hostname=" + getHostname() +
                 " privateIPAddress=" + getPrivateIPAddress() +
+                " endpoint= "+getEndpoint() +
                 " properties=" + getProperties() + "]";
     }
 
@@ -68,4 +69,12 @@ public class KubernetesMaster extends KubernetesHost 
implements Serializable {
         result = prime * result;
         return result;
     }
-}
+
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/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 4048390..55533e6 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
@@ -76,7 +76,7 @@ public class KubernetesIaas extends Iaas {
     public KubernetesIaas(IaasProvider iaasProvider) {
         super(iaasProvider);
         partitionValidator = new KubernetesPartitionValidator();
-        payload = new ArrayList<NameValuePair>();
+        payload = new ArrayList<>();
 
         podActivationTimeout = Long.getLong("stratos.pod.activation.timeout");
         if (podActivationTimeout == null) {
@@ -104,14 +104,12 @@ public class KubernetesIaas extends Iaas {
         if (payloadByteArray != null) {
             String payloadString = new String(payloadByteArray);
             String[] parameterArray = 
payloadString.split(PAYLOAD_PARAMETER_SEPARATOR);
-            if (parameterArray != null) {
-                for (String parameter : parameterArray) {
-                    if (parameter != null) {
-                        String[] nameValueArray = 
parameter.split(PAYLOAD_PARAMETER_NAME_VALUE_SEPARATOR, 2);
-                        if ((nameValueArray != null) && (nameValueArray.length 
== 2)) {
-                            NameValuePair nameValuePair = new 
NameValuePair(nameValueArray[0], nameValueArray[1]);
-                            payload.add(nameValuePair);
-                        }
+            for (String parameter : parameterArray) {
+                if (parameter != null) {
+                    String[] nameValueArray = 
parameter.split(PAYLOAD_PARAMETER_NAME_VALUE_SEPARATOR, 2);
+                    if (nameValueArray.length == 2) {
+                        NameValuePair nameValuePair = new 
NameValuePair(nameValueArray[0], nameValueArray[1]);
+                        payload.add(nameValuePair);
                     }
                 }
                 if (log.isDebugEnabled()) {
@@ -196,10 +194,11 @@ public class KubernetesIaas extends Iaas {
 
             // Prepare kubernetes context
             String kubernetesMasterIp = 
kubernetesCluster.getKubernetesMaster().getPrivateIPAddress();
+            String kuberneteEndPoint = 
kubernetesCluster.getKubernetesMaster().getEndpoint();
             PortRange kubernetesPortRange = kubernetesCluster.getPortRange();
             String kubernetesMasterPort = CloudControllerUtil
                     
.getProperty(kubernetesCluster.getKubernetesMaster().getProperties(),
-                            StratosConstants.KUBERNETES_MASTER_PORT, 
StratosConstants.KUBERNETES_MASTER_DEFAULT_PORT);
+                            StratosConstants.KUBERNETES_MASTER_PORT);
 
             // Add kubernetes cluster payload parameters to payload
             if ((kubernetesCluster.getProperties() != null) && 
(kubernetesCluster.getProperties().getProperties()
@@ -216,7 +215,7 @@ public class KubernetesIaas extends Iaas {
 
             KubernetesClusterContext kubernetesClusterContext = 
getKubernetesClusterContext(kubernetesClusterId,
                     kubernetesMasterIp, kubernetesMasterPort, 
kubernetesPortRange.getUpper(),
-                    kubernetesPortRange.getLower());
+                    kubernetesPortRange.getLower(), kuberneteEndPoint);
 
             // Generate kubernetes service ports and update port mappings in 
cartridge
             generateKubernetesServicePorts(clusterContext.getApplicationId(), 
clusterContext.getClusterId(),
@@ -270,9 +269,9 @@ public class KubernetesIaas extends Iaas {
 
         memberContext.setInstanceId(pod.getMetadata().getName());
         memberContext.setDefaultPrivateIP(memberPrivateIPAddress);
-        memberContext.setPrivateIPs(new String[] { memberPrivateIPAddress });
+        memberContext.setPrivateIPs(new String[]{memberPrivateIPAddress});
         memberContext.setDefaultPublicIP(memberPublicIPAddress);
-        memberContext.setPublicIPs(new String[] { memberPublicIPAddress });
+        memberContext.setPublicIPs(new String[]{memberPublicIPAddress});
         memberContext.setInitTime(memberContext.getInitTime());
         memberContext.setProperties(memberContext.getProperties());
     }
@@ -803,7 +802,8 @@ public class KubernetesIaas extends Iaas {
 
         for (Service service : services) {
             for (ServicePort servicePort : service.getSpec().getPorts()) {
-                if (servicePort.getNodePort() == nodePort) {
+                // Need to check node port is null here to avoid unboxing 
errors
+                if ((servicePort.getNodePort() != null) && 
(servicePort.getNodePort() == nodePort)) {
                     return false;
                 }
             }
@@ -819,7 +819,7 @@ public class KubernetesIaas extends Iaas {
      * @return
      */
     private ClusterPortMapping 
findClusterPortMapping(Collection<ClusterPortMapping> clusterPortMappings,
-            PortMapping portMapping) {
+                                                      PortMapping portMapping) 
{
         for (ClusterPortMapping clusterPortMapping : clusterPortMappings) {
             if (clusterPortMapping.getName().equals(portMapping.getName())) {
                 return clusterPortMapping;
@@ -901,28 +901,23 @@ public class KubernetesIaas extends Iaas {
      * @return
      */
     private KubernetesClusterContext getKubernetesClusterContext(String 
kubernetesClusterId, String kubernetesMasterIp,
-            String kubernetesMasterPort, int upperPort, int lowerPort) {
+            String kubernetesMasterPort, int upperPort, int lowerPort, String 
kubernetesEndpoint) {
 
         KubernetesClusterContext kubernetesClusterContext = 
CloudControllerContext.getInstance().
                 getKubernetesClusterContext(kubernetesClusterId);
         if (kubernetesClusterContext != null) {
             return kubernetesClusterContext;
         }
-
+        log.info("[Kuberentes cluster id]" + kubernetesClusterId);
+        log.info("[Kuberentes cluster master IP]" + kubernetesMasterIp);
+        log.info("[Kuberentes master port]" + kubernetesMasterPort);
+        log.info("[Kuberentes master endpoint]" + kubernetesEndpoint);
         kubernetesClusterContext = new 
KubernetesClusterContext(kubernetesClusterId, kubernetesMasterIp,
-                kubernetesMasterPort, lowerPort, upperPort);
+                kubernetesMasterPort, lowerPort, upperPort, 
kubernetesEndpoint);
         
CloudControllerContext.getInstance().addKubernetesClusterContext(kubernetesClusterContext);
         return kubernetesClusterContext;
     }
 
-    private String readProperty(String property, 
org.apache.stratos.common.Properties properties, String object) {
-        String propVal = CloudControllerUtil.getProperty(properties, property);
-        handleNullObject(propVal,
-                "Property validation failed. Could not find property: '" + 
property + " in " + object);
-        return propVal;
-
-    }
-
     private void handleNullObject(Object obj, String errorMsg) {
         if (obj == null) {
             log.error(errorMsg);
@@ -1015,4 +1010,4 @@ public class KubernetesIaas extends Iaas {
         }
 
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index 4bbffbf..900bc32 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -25,6 +25,7 @@ import 
org.apache.stratos.cloud.controller.config.CloudControllerConfig;
 import org.apache.stratos.cloud.controller.context.CloudControllerContext;
 import org.apache.stratos.cloud.controller.domain.*;
 import org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesCluster;
+import 
org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesClusterContext;
 import org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesHost;
 import org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesMaster;
 import org.apache.stratos.cloud.controller.exception.*;
@@ -44,6 +45,7 @@ import 
org.wso2.carbon.registry.core.exceptions.RegistryException;
 import java.util.*;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.locks.Lock;
 
@@ -516,7 +518,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
     }
 
     private MemberContext createMemberContext(String applicationId, String 
cartridgeType, String memberId,
-            LoadBalancingIPType loadBalancingIPType, InstanceContext 
instanceContext) {
+                                              LoadBalancingIPType 
loadBalancingIPType, InstanceContext instanceContext) {
         MemberContext memberContext = new MemberContext(applicationId, 
cartridgeType, instanceContext.getClusterId(),
                 memberId);
 
@@ -1289,6 +1291,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             }
             return true;
         } catch (Exception e) {
+            log.error("Error occurred when adding kubernetes cluster. " + 
e.getMessage(), e);
             throw new InvalidKubernetesClusterException(e.getMessage(), e);
         } finally {
             if (lock != null) {
@@ -1315,6 +1318,14 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
             // Updating the information model
             
CloudControllerContext.getInstance().updateKubernetesCluster(kubernetesCluster);
+            KubernetesClusterContext kubClusterContext = 
CloudControllerContext.getInstance().
+                    
getKubernetesClusterContext(kubernetesCluster.getClusterId());
+
+            // Update necessary parameters of kubClusterContext using the 
updated kubCluster
+            if (kubClusterContext != null) {
+                
kubClusterContext.updateKubClusterContextParams(kubernetesCluster);
+                
CloudControllerContext.getInstance().updateKubernetesClusterContext(kubClusterContext);
+            }
             CloudControllerContext.getInstance().persist();
 
             if (log.isInfoEnabled()) {
@@ -1765,4 +1776,4 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             throw new CloudControllerException(message, e);
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index 54cde0b..873c127 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -258,25 +258,22 @@ public class CloudControllerUtil {
             throw new InvalidKubernetesHostException("Kubernetes host private 
IP address has not been set: " +
                     "[host-id] " + kubernetesHost.getHostId());
         }
-        if 
(!InetAddresses.isInetAddress(kubernetesHost.getPrivateIPAddress())) {
-            throw new InvalidKubernetesHostException(
-                    "Kubernetes host private IP address is invalid: " + 
kubernetesHost.getPrivateIPAddress());
-        }
-        if (StringUtils.isNotBlank(kubernetesHost.getPublicIPAddress())) {
-            if 
(!InetAddresses.isInetAddress(kubernetesHost.getPublicIPAddress())) {
-                throw new InvalidKubernetesHostException(
-                        "Kubernetes host public IP address is invalid: " + 
kubernetesHost.getPrivateIPAddress());
-            }
-        }
     }
 
     public static void validateKubernetesMaster(KubernetesMaster 
kubernetesMaster)
             throws InvalidKubernetesMasterException {
-        try {
-            validateKubernetesHost(kubernetesMaster);
-        } catch (InvalidKubernetesHostException e) {
-            throw new InvalidKubernetesMasterException(e.getMessage());
+
+        if (StringUtils.isBlank(kubernetesMaster.getEndpoint()) &&
+                StringUtils.isBlank(kubernetesMaster.getPrivateIPAddress())) {
+            throw new InvalidKubernetesMasterException("Kubernetes master 
private IP address or endpoint has not " +
+                    "been set.");
+        }
+        if (StringUtils.isNotBlank(kubernetesMaster.getEndpoint()) &&
+                
StringUtils.isNotBlank(kubernetesMaster.getPrivateIPAddress())) {
+            throw new InvalidKubernetesMasterException("Both kubenretes master 
private IP address and " +
+                    "endpoint has been set. Please set either endpoint or 
private ip.");
         }
+
     }
 
     public static LoadBalancingIPType 
getLoadBalancingIPTypeEnumFromString(String loadBalancingIPType) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/kubernetes/KubernetesMasterBean.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/kubernetes/KubernetesMasterBean.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/kubernetes/KubernetesMasterBean.java
index bc698f0..3eb4d8e 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/kubernetes/KubernetesMasterBean.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/kubernetes/KubernetesMasterBean.java
@@ -33,6 +33,8 @@ public class KubernetesMasterBean {
     private String hostname;
     private String privateIPAddress;
     private String publicIPAddress;
+    private String endpoint;
+
     private List<PropertyBean> property;
 
     public String getHostId() {
@@ -75,4 +77,11 @@ public class KubernetesMasterBean {
         this.property = property;
     }
 
-}
+    public String getEndpoint() {
+        return endpoint;
+    }
+
+    public void setEndpoint(String endpoint) {
+        this.endpoint = endpoint;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/kubernetes-clusters.json
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/kubernetes-clusters.json
 
b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/kubernetes-clusters.json
index fe0334d..a440df6 100644
--- 
a/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/kubernetes-clusters.json
+++ 
b/components/org.apache.stratos.manager.console/console/controllers/forms/schema/configure/kubernetes-clusters.json
@@ -41,7 +41,7 @@
                     "type":"string",
                     "id": "root/kubernetesMaster/privateIPAddress",
                     "default": "172.17.8.100",
-                    "required":true,
+                    "required":false,
                     "title": "Private IP Address",
                     "name": "Private IP Address"
                 },
@@ -61,6 +61,14 @@
                     "title": "Hostname",
                     "name": "Hostname"
                 },
+                "endpoint": {
+                    "type":"string",
+                    "id": "root/kubernetesMaster/endpoint",
+                    "default": "https://master.dev.kubernetes.example.org";,
+                    "required":false,
+                    "title": "Endpoint",
+                    "name": "Endpoint"
+                },
                 "property": {
                     "id": "root/kubernetesMaster/property",
                     "type": "array",
@@ -204,4 +212,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index 1dad693..ace1e5a 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -1191,7 +1191,7 @@ public class StratosApiV41 extends AbstractApi {
     @Consumes("application/json")
     @AuthorizationAction("/permission/admin/stratos/domainMappings/manage")
     public Response removeDomainMappings(@PathParam("applicationId") String 
applicationId,
-            @PathParam("domainName") String domainName) throws 
RestAPIException {
+                                         @PathParam("domainName") String 
domainName) throws RestAPIException {
         try {
             StratosApiV41Utils.removeApplicationDomainMapping(applicationId, 
domainName);
         } catch (StratosManagerServiceDomainMappingExceptionException e) {
@@ -1851,7 +1851,8 @@ public class StratosApiV41 extends AbstractApi {
                     .build();
         } catch 
(CloudControllerServiceInvalidKubernetesClusterExceptionException e) {
             return Response.status(Response.Status.BAD_REQUEST)
-                    .entity(new ResponseMessageBean(ResponseMessageBean.ERROR, 
"Kubernetes cluster is invalid"))
+                    .entity(new ResponseMessageBean(ResponseMessageBean.ERROR, 
"Kubernetes cluster is invalid "+
+                            
e.getFaultMessage().getInvalidKubernetesClusterException().getMessage()))
                     .build();
         }
     }
@@ -1879,7 +1880,8 @@ public class StratosApiV41 extends AbstractApi {
             throw e;
         } catch 
(CloudControllerServiceInvalidKubernetesClusterExceptionException e) {
             return Response.status(Response.Status.BAD_REQUEST)
-                    .entity(new ResponseMessageBean(ResponseMessageBean.ERROR, 
"Kubernetes cluster is invalid"))
+                    .entity(new ResponseMessageBean(ResponseMessageBean.ERROR, 
"Kubernetes cluster is invalid. " +
+                            
e.getFaultMessage().getInvalidKubernetesClusterException().getMessage()))
                     .build();
         }
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a4c516ea/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 d1307eb..1277bfb 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
@@ -999,6 +999,7 @@ public class ObjectConverter {
         kubernetesMaster.setHostId(kubernetesMasterBean.getHostId());
         
kubernetesMaster.setPrivateIPAddress(kubernetesMasterBean.getPrivateIPAddress());
         
kubernetesMaster.setPublicIPAddress(kubernetesMasterBean.getPublicIPAddress());
+        kubernetesMaster.setEndpoint(kubernetesMasterBean.getEndpoint());
         kubernetesMaster.setHostname(kubernetesMasterBean.getHostname());
         
kubernetesMaster.setProperties(convertPropertyBeansToCCStubProperties(kubernetesMasterBean.getProperty()));
 
@@ -1045,6 +1046,7 @@ public class ObjectConverter {
         kubernetesMasterBean.setHostname(kubernetesMaster.getHostname());
         
kubernetesMasterBean.setPrivateIPAddress(kubernetesMaster.getPrivateIPAddress());
         
kubernetesMasterBean.setPublicIPAddress(kubernetesMaster.getPublicIPAddress());
+        kubernetesMasterBean.setEndpoint(kubernetesMaster.getEndpoint());
         
kubernetesMasterBean.setProperty(convertCCStubPropertiesToPropertyBeans(kubernetesMaster.getProperties()));
         return kubernetesMasterBean;
     }

Reply via email to