Fixing kub cluster update issue and hostname issue, fixing STRATOS-1653
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..27d019e 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
@@ -18,16 +18,16 @@
*/
package org.apache.stratos.cloud.controller.domain.kubernetes;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.kubernetes.client.KubernetesApiClient;
-
import java.io.Serializable;
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;
+import org.apache.stratos.kubernetes.client.KubernetesApiClient;
+
/**
* Holds information about a Kubernetes Cluster.
*/
@@ -35,8 +35,6 @@
private static final long serialVersionUID = -802025758806195791L;
- private static final Log log = LogFactory.getLog(KubernetesClusterContext.class);
-
private String kubernetesClusterId;
private int upperPort;
private int lowerPort;
@@ -66,7 +64,11 @@
}
private String getEndpoint(String ip, String port) {
- return "http://" + ip + ":" + port + "/api/v1beta1/";
+ StringBuffer endPoint = new StringBuffer().append("http://").append(ip);
+ if(port != null) {
+ endPoint.append(":").append(port);
+ }
+ return endPoint.toString();
}
public String getKubernetesClusterId() {
@@ -171,6 +173,16 @@
}
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.kubApi = new KubernetesApiClient(getEndpoint(masterIp, masterPort));
+ }
+
@Override
public int hashCode() {
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 66e76a0..261980d 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
@@ -199,7 +199,7 @@
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()
@@ -929,14 +929,6 @@
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);
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 9352220..22f3232 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.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.*;
@@ -1280,6 +1281,7 @@
}
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) {
@@ -1306,6 +1308,12 @@
// Updating the information model
CloudControllerContext.getInstance().updateKubernetesCluster(kubernetesCluster);
+ KubernetesClusterContext kubClusterContext = CloudControllerContext.getInstance().
+ getKubernetesClusterContext(kubernetesCluster.getClusterId());
+
+ // Update necessary parameters of kubClusterContext using the updated kubCluster
+ kubClusterContext.updateKubClusterContextParams(kubernetesCluster);
+ CloudControllerContext.getInstance().updateKubernetesClusterContext(kubClusterContext);
CloudControllerContext.getInstance().persist();
if (log.isInfoEnabled()) {
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..81b0a24 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
@@ -18,13 +18,24 @@
*/
package org.apache.stratos.cloud.controller.util;
-import com.google.common.net.InetAddresses;
+import java.lang.reflect.Constructor;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.Cartridge;
+import org.apache.stratos.cloud.controller.domain.IaasConfig;
+import org.apache.stratos.cloud.controller.domain.IaasProvider;
+import org.apache.stratos.cloud.controller.domain.NetworkInterface;
+import org.apache.stratos.cloud.controller.domain.NetworkInterfaces;
+import org.apache.stratos.cloud.controller.domain.Partition;
import org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesCluster;
import org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesHost;
import org.apache.stratos.cloud.controller.domain.kubernetes.KubernetesMaster;
@@ -38,13 +49,6 @@
import org.apache.stratos.common.domain.LoadBalancingIPType;
import org.apache.stratos.messaging.domain.topology.Topology;
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-
public class CloudControllerUtil {
private static final Log log = LogFactory.getLog(CloudControllerUtil.class);
@@ -258,16 +262,6 @@
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)