You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/10/08 18:52:55 UTC
[01/27] git commit: Implement new API - getSelectedPods - running a
label query on Kubernetes Pods
Repository: stratos
Updated Branches:
refs/heads/container-autoscaling 7162325f3 -> 30e08c831
Implement new API - getSelectedPods - running a label query on Kubernetes Pods
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a1108949
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a1108949
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a1108949
Branch: refs/heads/container-autoscaling
Commit: a1108949bed4ebb013a221f03cdf799cb041887b
Parents: f5491ff
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Mon Oct 6 16:04:12 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:28 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/KubernetesApiClient.java | 97 +++++++++++++++++---
.../KubernetesAPIClientInterface.java | 8 ++
2 files changed, 90 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/a1108949/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
index 5622967..b20dc9b 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
@@ -24,13 +24,16 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.SocketException;
+import java.net.URI;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
+import org.apache.http.client.utils.URIBuilder;
import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
import org.apache.stratos.kubernetes.client.interfaces.KubernetesAPIClientInterface;
+import org.apache.stratos.kubernetes.client.model.Label;
import org.apache.stratos.kubernetes.client.model.Pod;
import org.apache.stratos.kubernetes.client.model.PodList;
import org.apache.stratos.kubernetes.client.model.ReplicationController;
@@ -46,15 +49,18 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
private static final Log log = LogFactory.getLog(KubernetesApiClient.class);
private RestClient restClient;
+ private String baseURL;
public KubernetesApiClient(String endpointUrl) {
- restClient = new RestClient(endpointUrl);
+ restClient = new RestClient();
+ baseURL = endpointUrl;
}
@Override
public Pod getPod(String podId) throws KubernetesClientException{
try {
- HttpResponse res = restClient.doGet("pods/"+podId);
+ URI uri = new URIBuilder(baseURL+"pods/"+podId).build();
+ HttpResponse res = restClient.doGet(uri);
handleNullResponse("Pod ["+podId+"] retrieval failed.", res);
@@ -84,7 +90,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
public Pod[] getAllPods() throws KubernetesClientException {
try {
- HttpResponse res = restClient.doGet("pods");
+ URI uri = new URIBuilder(baseURL+"pods").build();
+ HttpResponse res = restClient.doGet(uri);
handleNullResponse("Pod retrieval failed.", res);
@@ -116,7 +123,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
if (log.isDebugEnabled()) {
log.debug("CreatePod Request Body : "+content);
}
- HttpResponse res = restClient.doPost("pods", content);
+ URI uri = new URIBuilder(baseURL+"pods").build();
+ HttpResponse res = restClient.doPost(uri, content);
handleNullResponse("Pod "+pod+" creation failed.", res);
@@ -145,7 +153,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
public void deletePod(String podId) throws KubernetesClientException {
try {
- HttpResponse res = restClient.doDelete("pods/"+podId);
+ URI uri = new URIBuilder(baseURL+"pods/"+podId).build();
+ HttpResponse res = restClient.doDelete(uri);
handleNullResponse("Pod ["+podId+"] deletion failed.", res);
@@ -176,7 +185,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throws KubernetesClientException {
try {
- HttpResponse res = restClient.doGet("replicationControllers/"+controllerId);
+ URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
+ HttpResponse res = restClient.doGet(uri);
handleNullResponse("Replication Controller ["+controllerId+"] retrieval failed.", res);
@@ -206,7 +216,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throws KubernetesClientException {
try {
- HttpResponse res = restClient.doGet("replicationControllers");
+ URI uri = new URIBuilder(baseURL+"replicationControllers").build();
+ HttpResponse res = restClient.doGet(uri);
handleNullResponse("Replication Controller retrieval failed.", res);
@@ -240,7 +251,9 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
if (log.isDebugEnabled()) {
log.debug("CreateReplicationController Request Body : "+content);
}
- HttpResponse res = restClient.doPost("replicationControllers", content);
+
+ URI uri = new URIBuilder(baseURL+"replicationControllers").build();
+ HttpResponse res = restClient.doPost(uri, content);
handleNullResponse("Replication Controller "+controller+" creation failed.", res);
@@ -284,8 +297,9 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
log.debug("UpdateReplicationController Request Body : "
+ content);
}
- HttpResponse res = restClient.doPut("replicationControllers/"+controller.getId(),
- content);
+
+ URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
+ HttpResponse res = restClient.doPut(uri, content);
handleNullResponse("Replication Controller ["+controllerId+"] update failed.", res);
@@ -314,7 +328,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throws KubernetesClientException {
try {
- HttpResponse res = restClient.doDelete("replicationControllers/"+controllerId);
+ URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
+ HttpResponse res = restClient.doDelete(uri);
handleNullResponse("Replication Controller ["+controllerId+"] deletion failed.", res);
@@ -344,7 +359,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
public Service getService(String serviceId)
throws KubernetesClientException {
try {
- HttpResponse res = restClient.doGet("services/"+serviceId);
+ URI uri = new URIBuilder(baseURL+"services/"+serviceId).build();
+ HttpResponse res = restClient.doGet(uri);
handleNullResponse("Service ["+serviceId+"] retrieval failed.", res);
@@ -371,7 +387,9 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
@Override
public Service[] getAllServices() throws KubernetesClientException {
try {
- HttpResponse res = restClient.doGet("services");
+
+ URI uri = new URIBuilder(baseURL+"services").build();
+ HttpResponse res = restClient.doGet(uri);
handleNullResponse("Service retrieval failed.", res);
@@ -403,7 +421,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
log.debug("CreateService Request Body : "+content);
}
- HttpResponse res = restClient.doPost("services", content);
+ URI uri = new URIBuilder(baseURL+"services").build();
+ HttpResponse res = restClient.doPost(uri, content);
handleNullResponse("Service "+service+" creation failed.", res);
@@ -429,7 +448,8 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throws KubernetesClientException {
try {
- HttpResponse res = restClient.doDelete("services/"+serviceId);
+ URI uri = new URIBuilder(baseURL+"services/"+serviceId).build();
+ HttpResponse res = restClient.doDelete(uri);
handleNullResponse("Service ["+serviceId+"] deletion failed.", res);
@@ -456,6 +476,45 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
}
+ @Override
+ public Pod[] getSelectedPods(Label[] label) throws KubernetesClientException {
+
+ try {
+ String labelQuery = getLabelQuery(label);
+ URI uri = new URIBuilder(baseURL + "pods").addParameter("labels", labelQuery).build();
+ HttpResponse res = restClient.doGet(uri);
+
+ handleNullResponse("Pod retrieval failed.", res);
+
+ if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ return new Pod[0];
+ }
+
+ String content = getHttpResponseString(res);
+
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ Gson gson = gsonBuilder.create();
+ PodList podList = gson.fromJson(content, PodList.class);
+ if (podList == null || podList.getItems() == null) {
+ return new Pod[0];
+ }
+ return podList.getItems();
+
+ } catch (Exception e) {
+ String msg = "Error while retrieving Pods.";
+ log.error(msg, e);
+ throw new KubernetesClientException(msg, e);
+ }
+ }
+
+ private String getLabelQuery(Label[] label) {
+ String query = "";
+ for (Label l : label) {
+ query = query.concat("name="+l.getName()+",");
+ }
+ return query.endsWith(",") ? query.substring(0, query.length()) : query;
+ }
+
private void handleNullResponse(String message, HttpResponse res)
throws KubernetesClientException {
if (res == null) {
@@ -490,4 +549,12 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
}
+ public String getBaseURL() {
+ return baseURL;
+ }
+
+ public void setBaseURL(String baseURL) {
+ this.baseURL = baseURL;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a1108949/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
index 51570de..e67c256 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/interfaces/KubernetesAPIClientInterface.java
@@ -44,6 +44,14 @@ public interface KubernetesAPIClientInterface {
public Pod[] getAllPods() throws KubernetesClientException;
/**
+ * Run a label query and retrieve a sub set of Pods.
+ * @param array of labels for the label query
+ * @return Pods selected Pods by executing the label query.
+ * @throws KubernetesClientException
+ */
+ public Pod[] getSelectedPods(Label[] label) throws KubernetesClientException;
+
+ /**
* Create a new Pod
* @param pod Pod to be created
* @throws KubernetesClientException
[20/27] git commit: Bundling kubernetes client as an OSGi bundle to
CC feature.
Posted by ni...@apache.org.
Bundling kubernetes client as an OSGi bundle to CC feature.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/b7222b33
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/b7222b33
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/b7222b33
Branch: refs/heads/container-autoscaling
Commit: b7222b33bdd43d271deb29694d159782f4f1ab08
Parents: 87b0ba1
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:06:37 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../pom.xml | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/b7222b33/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
----------------------------------------------------------------------
diff --git a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
index c2e08af..253a8b9 100644
--- a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
+++ b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml
@@ -38,6 +38,21 @@
<artifactId>org.apache.stratos.cloud.controller</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.stratos</groupId>
+ <artifactId>org.apache.stratos.kubernetes.client</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.wso2</groupId>
+ <artifactId>httpcore</artifactId>
+ <version>4.3.0.wso2v1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents.wso2</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.2.5.wso2v1</version>
+ </dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
@@ -273,6 +288,8 @@
<bundles>
<bundleDef>org.apache.stratos:org.apache.stratos.cloud.controller:${project.version}
</bundleDef>
+ <bundleDef>org.apache.stratos:org.apache.stratos.kubernetes.client:${project.version}
+ </bundleDef>
<bundleDef>org.apache.jclouds.driver:jclouds-bouncycastle:${jclouds.version}</bundleDef>
<bundleDef>org.apache.jclouds.driver:jclouds-sshj:${jclouds.version}</bundleDef>
<!--bundleDef>org.apache.jclouds.driver:jclouds-log4j:${jclouds.version}</bundleDef-->
@@ -327,6 +344,8 @@
</bundleDef>
<bundleDef>jdom.wso2:jdom:1.0.0.wso2v1</bundleDef>
<bundleDef>org.json.wso2:json:1.0.0.wso2v1</bundleDef>
+ <bundleDef>org.apache.httpcomponents.wso2:httpcore:4.3.0.wso2v1</bundleDef>
+ <bundleDef>org.apache.httpcomponents.wso2:httpclient:4.2.5.wso2v1</bundleDef>
<!--bundleDef>org.jaggeryjs:0.9.0.ALPHA2-wso2v2</bundleDef-->
<bundleDef>org.apache.jclouds.api:sts:${jclouds.version}</bundleDef>
<bundleDef>javax.ws.rs:jsr311-api:1.1.1</bundleDef>
[12/27] git commit: Refactoring MemberContext ->
ContainerClusterContext
Posted by ni...@apache.org.
Refactoring MemberContext -> ContainerClusterContext
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8d57937e
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8d57937e
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8d57937e
Branch: refs/heads/container-autoscaling
Commit: 8d57937e2585d02862adb83a31e5623fa9aadc83
Parents: 25f0ec6
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 17:55:33 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
...ontainerClusterContextToKubernetesContainer.java | 16 ++++++----------
.../ContainerClusterContextToKubernetesService.java | 7 ++++---
...tainerClusterContextToReplicationController.java | 11 ++++++-----
3 files changed, 16 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/8d57937e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
index dd45b3e..4c892eb 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
@@ -25,6 +25,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.pojo.Cartridge;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.pojo.PortMapping;
import org.apache.stratos.cloud.controller.pojo.Property;
@@ -38,16 +39,16 @@ import org.apache.stratos.kubernetes.client.model.Port;
import com.google.common.base.Function;
/**
- * Is responsible for converting a {@link MemberContext} object to a Kubernetes
+ * Is responsible for converting a {@link ContainerClusterContext} object to a Kubernetes
* {@link Container} Object.
*/
-public class MemberContextToKubernetesContainer implements Function<MemberContext, Container> {
+public class ContainerClusterContextToKubernetesContainer implements Function<ContainerClusterContext, Container> {
- private static final Log log = LogFactory.getLog(MemberContextToKubernetesContainer.class);
+ private static final Log log = LogFactory.getLog(ContainerClusterContextToKubernetesContainer.class);
private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
@Override
- public Container apply(MemberContext memberContext) {
+ public Container apply(ContainerClusterContext memberContext) {
String clusterId = memberContext.getClusterId();
ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
@@ -94,18 +95,13 @@ public class MemberContextToKubernetesContainer implements Function<MemberContex
return portList.toArray(ports);
}
- private EnvironmentVariable[] getEnvironmentVars(MemberContext memberCtxt, ClusterContext ctxt) {
+ private EnvironmentVariable[] getEnvironmentVars(ContainerClusterContext memberCtxt, ClusterContext ctxt) {
String kubernetesClusterId = CloudControllerUtil.getProperty(ctxt.getProperties(),
StratosConstants.KUBERNETES_CLUSTER_ID);
List<EnvironmentVariable> envVars = new ArrayList<EnvironmentVariable>();
addToEnvironment(envVars, ctxt.getPayload());
- // FIXME member id, should it be unique for a container?
- addToEnvironment(envVars, StratosConstants.MEMBER_ID, memberCtxt.getMemberId());
- addToEnvironment(envVars, StratosConstants.LB_CLUSTER_ID, memberCtxt.getLbClusterId());
- addToEnvironment(envVars, StratosConstants.NETWORK_PARTITION_ID,
- memberCtxt.getNetworkPartitionId());
addToEnvironment(envVars, StratosConstants.KUBERNETES_CLUSTER_ID, kubernetesClusterId);
if (memberCtxt.getProperties() != null) {
org.apache.stratos.cloud.controller.pojo.Properties props1 = memberCtxt.getProperties();
http://git-wip-us.apache.org/repos/asf/stratos/blob/8d57937e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
index 724891e..c515a3b 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
@@ -19,6 +19,7 @@
package org.apache.stratos.cloud.controller.functions;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
@@ -30,15 +31,15 @@ import org.apache.stratos.kubernetes.client.model.Service;
import com.google.common.base.Function;
/**
- * Is responsible for converting a {@link MemberContext} object to a Kubernetes
+ * Is responsible for converting a {@link ContainerClusterContext} object to a Kubernetes
* {@link Service} Object.
*/
-public class MemberContextToKubernetesService implements Function<MemberContext, Service> {
+public class ContainerClusterContextToKubernetesService implements Function<ContainerClusterContext, Service> {
private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
@Override
- public Service apply(MemberContext memberContext) {
+ public Service apply(ContainerClusterContext memberContext) {
String clusterId = memberContext.getClusterId();
ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/8d57937e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
index b2805cb..08b7ab5 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
@@ -19,6 +19,7 @@
package org.apache.stratos.cloud.controller.functions;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
@@ -34,16 +35,16 @@ import org.apache.stratos.kubernetes.client.model.State;
import com.google.common.base.Function;
/**
- * Is responsible for converting a {@link MemberContext} object to a Kubernetes
+ * Is responsible for converting a {@link ContainerClusterContext} object to a Kubernetes
* {@link ReplicationController} Object.
*/
-public class MemberContextToReplicationController implements
- Function<MemberContext, ReplicationController> {
+public class ContainerClusterContextToReplicationController implements
+ Function<ContainerClusterContext, ReplicationController> {
private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
@Override
- public ReplicationController apply(MemberContext memberContext) {
+ public ReplicationController apply(ContainerClusterContext memberContext) {
String clusterId = memberContext.getClusterId();
ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
@@ -66,7 +67,7 @@ public class MemberContextToReplicationController implements
manifest.setVersion("v1beta1");
manifest.setId(clusterContext.getClusterId());
- MemberContextToKubernetesContainer containerFunc = new MemberContextToKubernetesContainer();
+ ContainerClusterContextToKubernetesContainer containerFunc = new ContainerClusterContextToKubernetesContainer();
Container container = containerFunc.apply(memberContext);
manifest.setContainers(new Container[] { container });
[19/27] git commit: Adding the default constructor .
Posted by ni...@apache.org.
Adding the default constructor .
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/de8faef9
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/de8faef9
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/de8faef9
Branch: refs/heads/container-autoscaling
Commit: de8faef9eb33a6939dc79ab54f3395856b7a433c
Parents: 54e8408
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:54:09 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/pojo/ContainerClusterContext.java | 3 +++
1 file changed, 3 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/de8faef9/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
index f6c9b31..137488a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
@@ -32,6 +32,9 @@ public class ContainerClusterContext implements Serializable {
// properties
private Properties properties;
+ public ContainerClusterContext() {
+ }
+
public ContainerClusterContext(String clusterId) {
this.clusterId = clusterId;
}
[15/27] git commit: Convert a Pod object to a MemberContext
Posted by ni...@apache.org.
Convert a Pod object to a MemberContext
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/1dddf290
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/1dddf290
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/1dddf290
Branch: refs/heads/container-autoscaling
Commit: 1dddf2902b6432c4c56a27f0a22f2c84223344c0
Parents: c78390b
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 18:13:16 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../functions/PodToMemberContext.java | 45 ++++++++++++++++++++
1 file changed, 45 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/1dddf290/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
new file mode 100644
index 0000000..a1eb1a4
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.functions;
+
+import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import org.apache.stratos.kubernetes.client.model.Pod;
+import com.google.common.base.Function;
+
+/**
+ * Is responsible for converting a {@link Pod} object to a
+ * {@link MemberContext} Object.
+ */
+public class PodToMemberContext implements Function<Pod, MemberContext> {
+
+ @Override
+ public MemberContext apply(Pod pod) {
+
+ if (pod == null) {
+ return null;
+ }
+ MemberContext memberContext = new MemberContext();
+ memberContext.setMemberId(pod.getId());
+ memberContext.setPrivateIpAddress(pod.getCurrentState().getHostIP());
+ memberContext.setPublicIpAddress(pod.getCurrentState().getHostIP());
+
+ return memberContext;
+ }
+
+}
[21/27] git commit: No need to set a host port for a container.
Posted by ni...@apache.org.
No need to set a host port for a container.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d5e497f5
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d5e497f5
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d5e497f5
Branch: refs/heads/container-autoscaling
Commit: d5e497f583fad4875a9b5f66796a8f034d3cbc32
Parents: ed4970d
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:58:10 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../functions/ContainerClusterContextToKubernetesContainer.java | 1 -
1 file changed, 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/d5e497f5/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
index 4c892eb..7b940d9 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
@@ -85,7 +85,6 @@ public class ContainerClusterContextToKubernetesContainer implements Function<Co
for (PortMapping portMapping : cartridge.getPortMappings()) {
Port p = new Port();
p.setContainerPort(Integer.parseInt(portMapping.getPort()));
- p.setHostPort(Integer.parseInt(portMapping.getPort()));
// In kubernetes transport protocol always be 'tcp'
p.setProtocol("tcp");
p.setName(p.getProtocol() + p.getContainerPort());
[07/27] git commit: Renaming transformation functions
Posted by ni...@apache.org.
Renaming transformation functions
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/5bc3a877
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/5bc3a877
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/5bc3a877
Branch: refs/heads/container-autoscaling
Commit: 5bc3a8772327b403284c56782505c1225a9ebb93
Parents: a110894
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 17:33:03 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
...inerClusterContextToKubernetesContainer.java | 147 +++++++++++++++++++
...tainerClusterContextToKubernetesService.java | 65 ++++++++
...erClusterContextToReplicationController.java | 90 ++++++++++++
.../MemberContextToKubernetesContainer.java | 147 -------------------
.../MemberContextToKubernetesService.java | 65 --------
.../MemberContextToReplicationController.java | 90 ------------
6 files changed, 302 insertions(+), 302 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/5bc3a877/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
new file mode 100644
index 0000000..dd45b3e
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
@@ -0,0 +1,147 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.functions;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.pojo.Cartridge;
+import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import org.apache.stratos.cloud.controller.pojo.PortMapping;
+import org.apache.stratos.cloud.controller.pojo.Property;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
+import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.common.constants.StratosConstants;
+import org.apache.stratos.kubernetes.client.model.Container;
+import org.apache.stratos.kubernetes.client.model.EnvironmentVariable;
+import org.apache.stratos.kubernetes.client.model.Port;
+
+import com.google.common.base.Function;
+
+/**
+ * Is responsible for converting a {@link MemberContext} object to a Kubernetes
+ * {@link Container} Object.
+ */
+public class MemberContextToKubernetesContainer implements Function<MemberContext, Container> {
+
+ private static final Log log = LogFactory.getLog(MemberContextToKubernetesContainer.class);
+ private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
+
+ @Override
+ public Container apply(MemberContext memberContext) {
+ String clusterId = memberContext.getClusterId();
+ ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
+
+ Container container = new Container();
+ container.setName(getCompatibleName(clusterContext.getHostName()));
+
+ Cartridge cartridge = dataHolder.getCartridge(clusterContext.getCartridgeType());
+
+ if (cartridge == null) {
+ log.error("Cannot find a Cartridge of type : " + clusterContext.getCartridgeType());
+ return null;
+ }
+
+ container.setImage(cartridge.getContainer().getImageName());
+
+ container.setPorts(getPorts(clusterContext, cartridge));
+
+ container.setEnv(getEnvironmentVars(memberContext, clusterContext));
+
+ return container;
+ }
+
+ private String getCompatibleName(String hostName) {
+ if (hostName.indexOf('.') != -1) {
+ hostName = hostName.replace('.', '-');
+ }
+ return hostName;
+ }
+
+ private Port[] getPorts(ClusterContext ctxt, Cartridge cartridge) {
+ Port[] ports = new Port[cartridge.getPortMappings().size()];
+ List<Port> portList = new ArrayList<Port>();
+
+ for (PortMapping portMapping : cartridge.getPortMappings()) {
+ Port p = new Port();
+ p.setContainerPort(Integer.parseInt(portMapping.getPort()));
+ p.setHostPort(Integer.parseInt(portMapping.getPort()));
+ // In kubernetes transport protocol always be 'tcp'
+ p.setProtocol("tcp");
+ p.setName(p.getProtocol() + p.getContainerPort());
+ portList.add(p);
+ }
+
+ return portList.toArray(ports);
+ }
+
+ private EnvironmentVariable[] getEnvironmentVars(MemberContext memberCtxt, ClusterContext ctxt) {
+
+ String kubernetesClusterId = CloudControllerUtil.getProperty(ctxt.getProperties(),
+ StratosConstants.KUBERNETES_CLUSTER_ID);
+
+ List<EnvironmentVariable> envVars = new ArrayList<EnvironmentVariable>();
+ addToEnvironment(envVars, ctxt.getPayload());
+ // FIXME member id, should it be unique for a container?
+ addToEnvironment(envVars, StratosConstants.MEMBER_ID, memberCtxt.getMemberId());
+ addToEnvironment(envVars, StratosConstants.LB_CLUSTER_ID, memberCtxt.getLbClusterId());
+ addToEnvironment(envVars, StratosConstants.NETWORK_PARTITION_ID,
+ memberCtxt.getNetworkPartitionId());
+ addToEnvironment(envVars, StratosConstants.KUBERNETES_CLUSTER_ID, kubernetesClusterId);
+ if (memberCtxt.getProperties() != null) {
+ org.apache.stratos.cloud.controller.pojo.Properties props1 = memberCtxt.getProperties();
+ if (props1 != null) {
+ for (Property prop : props1.getProperties()) {
+ addToEnvironment(envVars, prop.getName(), prop.getValue());
+ }
+ }
+ }
+
+ EnvironmentVariable[] vars = new EnvironmentVariable[envVars.size()];
+
+ return envVars.toArray(vars);
+
+ }
+
+ private void addToEnvironment(List<EnvironmentVariable> envVars, String payload) {
+
+ if (payload != null) {
+ String[] entries = payload.split(",");
+ for (String entry : entries) {
+ String[] var = entry.split("=");
+ if (var.length != 2) {
+ continue;
+ }
+ addToEnvironment(envVars, var[0], var[1]);
+ }
+ }
+ }
+
+ private void addToEnvironment(List<EnvironmentVariable> envVars, String name, String value) {
+
+ EnvironmentVariable var = new EnvironmentVariable();
+ var.setName(name);
+ var.setValue(value);
+ envVars.add(var);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/5bc3a877/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
new file mode 100644
index 0000000..724891e
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.functions;
+
+import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
+import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
+import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.common.constants.StratosConstants;
+import org.apache.stratos.kubernetes.client.model.Selector;
+import org.apache.stratos.kubernetes.client.model.Service;
+
+import com.google.common.base.Function;
+
+/**
+ * Is responsible for converting a {@link MemberContext} object to a Kubernetes
+ * {@link Service} Object.
+ */
+public class MemberContextToKubernetesService implements Function<MemberContext, Service> {
+
+ private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
+
+ @Override
+ public Service apply(MemberContext memberContext) {
+
+ String clusterId = memberContext.getClusterId();
+ ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
+
+ String kubernetesClusterId = CloudControllerUtil.getProperty(
+ clusterContext.getProperties(), StratosConstants.KUBERNETES_CLUSTER_ID);
+ KubernetesClusterContext kubClusterContext = dataHolder
+ .getKubernetesClusterContext(kubernetesClusterId);
+
+ Service service = new Service();
+ service.setApiVersion("v1beta1");
+ service.setId(CloudControllerUtil.getCompatibleId(clusterId));
+ service.setKind("Service");
+ int hostPort = kubClusterContext.getAnAvailableHostPort();
+ clusterContext.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, hostPort);
+ service.setPort(hostPort);
+ Selector selector = new Selector();
+ selector.setName(clusterId);
+ service.setSelector(selector);
+
+ return service;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/5bc3a877/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
new file mode 100644
index 0000000..b2805cb
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.functions;
+
+import org.apache.stratos.cloud.controller.pojo.ClusterContext;
+import org.apache.stratos.cloud.controller.pojo.MemberContext;
+import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
+import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
+import org.apache.stratos.common.constants.StratosConstants;
+import org.apache.stratos.kubernetes.client.model.Container;
+import org.apache.stratos.kubernetes.client.model.Label;
+import org.apache.stratos.kubernetes.client.model.Manifest;
+import org.apache.stratos.kubernetes.client.model.Pod;
+import org.apache.stratos.kubernetes.client.model.ReplicationController;
+import org.apache.stratos.kubernetes.client.model.Selector;
+import org.apache.stratos.kubernetes.client.model.State;
+
+import com.google.common.base.Function;
+
+/**
+ * Is responsible for converting a {@link MemberContext} object to a Kubernetes
+ * {@link ReplicationController} Object.
+ */
+public class MemberContextToReplicationController implements
+ Function<MemberContext, ReplicationController> {
+
+ private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
+
+ @Override
+ public ReplicationController apply(MemberContext memberContext) {
+
+ String clusterId = memberContext.getClusterId();
+ ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
+
+ ReplicationController contr = new ReplicationController();
+ contr.setId(clusterContext.getClusterId());
+ contr.setKind("ReplicationController");
+ contr.setApiVersion("v1beta1");
+ State desiredState = new State();
+ String minReplicas = CloudControllerUtil.getProperty(clusterContext.getProperties(),
+ StratosConstants.KUBERNETES_MIN_REPLICAS);
+ desiredState.setReplicas(Integer.parseInt(minReplicas));
+ Selector selector = new Selector();
+ selector.setName(clusterContext.getClusterId());
+ desiredState.setReplicaSelector(selector);
+
+ Pod podTemplate = new Pod();
+ State podState = new State();
+ Manifest manifest = new Manifest();
+ manifest.setVersion("v1beta1");
+ manifest.setId(clusterContext.getClusterId());
+
+ MemberContextToKubernetesContainer containerFunc = new MemberContextToKubernetesContainer();
+ Container container = containerFunc.apply(memberContext);
+
+ manifest.setContainers(new Container[] { container });
+
+ podState.setManifest(manifest);
+ podTemplate.setDesiredState(podState);
+ Label l1 = new Label();
+ l1.setName(clusterContext.getClusterId());
+ podTemplate.setLabels(l1);
+
+ desiredState.setPodTemplate(podTemplate);
+ contr.setDesiredState(desiredState);
+
+ Label l2 = new Label();
+ l2.setName(clusterContext.getClusterId());
+ contr.setLabels(l2);
+
+ return contr;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/5bc3a877/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
deleted file mode 100644
index dd45b3e..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesContainer.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.cloud.controller.functions;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.cloud.controller.pojo.Cartridge;
-import org.apache.stratos.cloud.controller.pojo.ClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
-import org.apache.stratos.cloud.controller.pojo.PortMapping;
-import org.apache.stratos.cloud.controller.pojo.Property;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.kubernetes.client.model.Container;
-import org.apache.stratos.kubernetes.client.model.EnvironmentVariable;
-import org.apache.stratos.kubernetes.client.model.Port;
-
-import com.google.common.base.Function;
-
-/**
- * Is responsible for converting a {@link MemberContext} object to a Kubernetes
- * {@link Container} Object.
- */
-public class MemberContextToKubernetesContainer implements Function<MemberContext, Container> {
-
- private static final Log log = LogFactory.getLog(MemberContextToKubernetesContainer.class);
- private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
-
- @Override
- public Container apply(MemberContext memberContext) {
- String clusterId = memberContext.getClusterId();
- ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
-
- Container container = new Container();
- container.setName(getCompatibleName(clusterContext.getHostName()));
-
- Cartridge cartridge = dataHolder.getCartridge(clusterContext.getCartridgeType());
-
- if (cartridge == null) {
- log.error("Cannot find a Cartridge of type : " + clusterContext.getCartridgeType());
- return null;
- }
-
- container.setImage(cartridge.getContainer().getImageName());
-
- container.setPorts(getPorts(clusterContext, cartridge));
-
- container.setEnv(getEnvironmentVars(memberContext, clusterContext));
-
- return container;
- }
-
- private String getCompatibleName(String hostName) {
- if (hostName.indexOf('.') != -1) {
- hostName = hostName.replace('.', '-');
- }
- return hostName;
- }
-
- private Port[] getPorts(ClusterContext ctxt, Cartridge cartridge) {
- Port[] ports = new Port[cartridge.getPortMappings().size()];
- List<Port> portList = new ArrayList<Port>();
-
- for (PortMapping portMapping : cartridge.getPortMappings()) {
- Port p = new Port();
- p.setContainerPort(Integer.parseInt(portMapping.getPort()));
- p.setHostPort(Integer.parseInt(portMapping.getPort()));
- // In kubernetes transport protocol always be 'tcp'
- p.setProtocol("tcp");
- p.setName(p.getProtocol() + p.getContainerPort());
- portList.add(p);
- }
-
- return portList.toArray(ports);
- }
-
- private EnvironmentVariable[] getEnvironmentVars(MemberContext memberCtxt, ClusterContext ctxt) {
-
- String kubernetesClusterId = CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.KUBERNETES_CLUSTER_ID);
-
- List<EnvironmentVariable> envVars = new ArrayList<EnvironmentVariable>();
- addToEnvironment(envVars, ctxt.getPayload());
- // FIXME member id, should it be unique for a container?
- addToEnvironment(envVars, StratosConstants.MEMBER_ID, memberCtxt.getMemberId());
- addToEnvironment(envVars, StratosConstants.LB_CLUSTER_ID, memberCtxt.getLbClusterId());
- addToEnvironment(envVars, StratosConstants.NETWORK_PARTITION_ID,
- memberCtxt.getNetworkPartitionId());
- addToEnvironment(envVars, StratosConstants.KUBERNETES_CLUSTER_ID, kubernetesClusterId);
- if (memberCtxt.getProperties() != null) {
- org.apache.stratos.cloud.controller.pojo.Properties props1 = memberCtxt.getProperties();
- if (props1 != null) {
- for (Property prop : props1.getProperties()) {
- addToEnvironment(envVars, prop.getName(), prop.getValue());
- }
- }
- }
-
- EnvironmentVariable[] vars = new EnvironmentVariable[envVars.size()];
-
- return envVars.toArray(vars);
-
- }
-
- private void addToEnvironment(List<EnvironmentVariable> envVars, String payload) {
-
- if (payload != null) {
- String[] entries = payload.split(",");
- for (String entry : entries) {
- String[] var = entry.split("=");
- if (var.length != 2) {
- continue;
- }
- addToEnvironment(envVars, var[0], var[1]);
- }
- }
- }
-
- private void addToEnvironment(List<EnvironmentVariable> envVars, String name, String value) {
-
- EnvironmentVariable var = new EnvironmentVariable();
- var.setName(name);
- var.setValue(value);
- envVars.add(var);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/5bc3a877/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
deleted file mode 100644
index 724891e..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToKubernetesService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.cloud.controller.functions;
-
-import org.apache.stratos.cloud.controller.pojo.ClusterContext;
-import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.kubernetes.client.model.Selector;
-import org.apache.stratos.kubernetes.client.model.Service;
-
-import com.google.common.base.Function;
-
-/**
- * Is responsible for converting a {@link MemberContext} object to a Kubernetes
- * {@link Service} Object.
- */
-public class MemberContextToKubernetesService implements Function<MemberContext, Service> {
-
- private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
-
- @Override
- public Service apply(MemberContext memberContext) {
-
- String clusterId = memberContext.getClusterId();
- ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
-
- String kubernetesClusterId = CloudControllerUtil.getProperty(
- clusterContext.getProperties(), StratosConstants.KUBERNETES_CLUSTER_ID);
- KubernetesClusterContext kubClusterContext = dataHolder
- .getKubernetesClusterContext(kubernetesClusterId);
-
- Service service = new Service();
- service.setApiVersion("v1beta1");
- service.setId(CloudControllerUtil.getCompatibleId(clusterId));
- service.setKind("Service");
- int hostPort = kubClusterContext.getAnAvailableHostPort();
- clusterContext.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, hostPort);
- service.setPort(hostPort);
- Selector selector = new Selector();
- selector.setName(clusterId);
- service.setSelector(selector);
-
- return service;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/5bc3a877/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
deleted file mode 100644
index b2805cb..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/MemberContextToReplicationController.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.cloud.controller.functions;
-
-import org.apache.stratos.cloud.controller.pojo.ClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.kubernetes.client.model.Container;
-import org.apache.stratos.kubernetes.client.model.Label;
-import org.apache.stratos.kubernetes.client.model.Manifest;
-import org.apache.stratos.kubernetes.client.model.Pod;
-import org.apache.stratos.kubernetes.client.model.ReplicationController;
-import org.apache.stratos.kubernetes.client.model.Selector;
-import org.apache.stratos.kubernetes.client.model.State;
-
-import com.google.common.base.Function;
-
-/**
- * Is responsible for converting a {@link MemberContext} object to a Kubernetes
- * {@link ReplicationController} Object.
- */
-public class MemberContextToReplicationController implements
- Function<MemberContext, ReplicationController> {
-
- private FasterLookUpDataHolder dataHolder = FasterLookUpDataHolder.getInstance();
-
- @Override
- public ReplicationController apply(MemberContext memberContext) {
-
- String clusterId = memberContext.getClusterId();
- ClusterContext clusterContext = dataHolder.getClusterContext(clusterId);
-
- ReplicationController contr = new ReplicationController();
- contr.setId(clusterContext.getClusterId());
- contr.setKind("ReplicationController");
- contr.setApiVersion("v1beta1");
- State desiredState = new State();
- String minReplicas = CloudControllerUtil.getProperty(clusterContext.getProperties(),
- StratosConstants.KUBERNETES_MIN_REPLICAS);
- desiredState.setReplicas(Integer.parseInt(minReplicas));
- Selector selector = new Selector();
- selector.setName(clusterContext.getClusterId());
- desiredState.setReplicaSelector(selector);
-
- Pod podTemplate = new Pod();
- State podState = new State();
- Manifest manifest = new Manifest();
- manifest.setVersion("v1beta1");
- manifest.setId(clusterContext.getClusterId());
-
- MemberContextToKubernetesContainer containerFunc = new MemberContextToKubernetesContainer();
- Container container = containerFunc.apply(memberContext);
-
- manifest.setContainers(new Container[] { container });
-
- podState.setManifest(manifest);
- podTemplate.setDesiredState(podState);
- Label l1 = new Label();
- l1.setName(clusterContext.getClusterId());
- podTemplate.setLabels(l1);
-
- desiredState.setPodTemplate(podTemplate);
- contr.setDesiredState(desiredState);
-
- Label l2 = new Label();
- l2.setName(clusterContext.getClusterId());
- contr.setLabels(l2);
-
- return contr;
- }
-
-}
[18/27] git commit: Setting init time for the Member.
Posted by ni...@apache.org.
Setting init time for the Member.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ac033228
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ac033228
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ac033228
Branch: refs/heads/container-autoscaling
Commit: ac0332281e9ab8f93ac9851cdc0d7b50d27a6064
Parents: de8faef
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:54:48 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../stratos/cloud/controller/functions/PodToMemberContext.java | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ac033228/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
index a1eb1a4..29987cc 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/PodToMemberContext.java
@@ -38,6 +38,7 @@ public class PodToMemberContext implements Function<Pod, MemberContext> {
memberContext.setMemberId(pod.getId());
memberContext.setPrivateIpAddress(pod.getCurrentState().getHostIP());
memberContext.setPublicIpAddress(pod.getCurrentState().getHostIP());
+ memberContext.setInitTime(System.currentTimeMillis());
return memberContext;
}
[25/27] git commit: Removing unused imports
Posted by ni...@apache.org.
Removing unused imports
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/27f27cd7
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/27f27cd7
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/27f27cd7
Branch: refs/heads/container-autoscaling
Commit: 27f27cd73b1b725d565ccafa7d274e5f60613e78
Parents: a381f82
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:18:29 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../functions/ContainerClusterContextToKubernetesContainer.java | 1 -
.../functions/ContainerClusterContextToKubernetesService.java | 2 --
.../functions/ContainerClusterContextToReplicationController.java | 1 -
3 files changed, 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/27f27cd7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
index 7b940d9..8837406 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesContainer.java
@@ -26,7 +26,6 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.cloud.controller.pojo.Cartridge;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.pojo.PortMapping;
import org.apache.stratos.cloud.controller.pojo.Property;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
http://git-wip-us.apache.org/repos/asf/stratos/blob/27f27cd7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
index c515a3b..61fe0ee 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToKubernetesService.java
@@ -21,7 +21,6 @@ package org.apache.stratos.cloud.controller.functions;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.pojo.KubernetesClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.common.constants.StratosConstants;
@@ -54,7 +53,6 @@ public class ContainerClusterContextToKubernetesService implements Function<Cont
service.setId(CloudControllerUtil.getCompatibleId(clusterId));
service.setKind("Service");
int hostPort = kubClusterContext.getAnAvailableHostPort();
- clusterContext.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, hostPort);
service.setPort(hostPort);
Selector selector = new Selector();
selector.setName(clusterId);
http://git-wip-us.apache.org/repos/asf/stratos/blob/27f27cd7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
index 08b7ab5..a60fd5c 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/functions/ContainerClusterContextToReplicationController.java
@@ -20,7 +20,6 @@ package org.apache.stratos.cloud.controller.functions;
import org.apache.stratos.cloud.controller.pojo.ClusterContext;
import org.apache.stratos.cloud.controller.pojo.ContainerClusterContext;
-import org.apache.stratos.cloud.controller.pojo.MemberContext;
import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
import org.apache.stratos.common.constants.StratosConstants;
[09/27] git commit: Changes to CC wsdl.
Posted by ni...@apache.org.
Changes to CC wsdl.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/67bb746b
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/67bb746b
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/67bb746b
Branch: refs/heads/container-autoscaling
Commit: 67bb746b5db4013d43d18e04fb1b072e8350bc97
Parents: 5515001
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 18:20:41 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../main/resources/CloudControllerService.wsdl | 898 ++++++++++---------
1 file changed, 473 insertions(+), 425 deletions(-)
----------------------------------------------------------------------
[10/27] git commit: Format code
Posted by ni...@apache.org.
Format code
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c313d4f0
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c313d4f0
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c313d4f0
Branch: refs/heads/container-autoscaling
Commit: c313d4f06439201b840b67af13c5cfb302f5b649
Parents: 8d57937
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 17:56:25 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../org/apache/stratos/cloud/controller/pojo/MemberContext.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c313d4f0/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
index 5ca834e..dd6013a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
@@ -24,10 +24,9 @@ import java.io.Serializable;
/**
* Holds information about a Member.
- * @author nirmal
*
*/
-public class MemberContext implements Serializable{
+public class MemberContext implements Serializable {
private static final long serialVersionUID = -388327475844701869L;
// id of the member
[13/27] git commit: Refactor start containers API to return an array
of MemberContexts corresponds to Pods being created.
Posted by ni...@apache.org.
Refactor start containers API to return an array of MemberContexts corresponds to Pods being created.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c78390b1
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c78390b1
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c78390b1
Branch: refs/heads/container-autoscaling
Commit: c78390b1060c032638bec060a748e7f10eff3f1f
Parents: c313d4f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 17:58:35 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/interfaces/CloudControllerService.java | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c78390b1/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
index 019a3cd..5725a2a 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java
@@ -100,12 +100,12 @@ public interface CloudControllerService {
public MemberContext startInstance(MemberContext member) throws UnregisteredCartridgeException, InvalidIaasProviderException;
/**
- * Create containers.
- * @param Member Context with cluster id, and host cluster details.
- * @return updated {@link MemberContext}
+ * Create a container cluster.
+ * @param {@link ContainerClusterContext} Context with cluster id, and host cluster details.
+ * @return a list of {@link MemberContext}s correspond to each Pod created.
* @throws UnregisteredCartridgeException if the requested Cartridge type is not a registered one.
*/
- public MemberContext startContainers(MemberContext member) throws UnregisteredCartridgeException;
+ public MemberContext[] startContainers(ContainerClusterContext clusterContext) throws UnregisteredCartridgeException;
/**
* Calling this method will result in termination of the instance with given member id in the given Partition.
[24/27] git commit: Initialize member properties.
Posted by ni...@apache.org.
Initialize member properties.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c84ffe65
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c84ffe65
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c84ffe65
Branch: refs/heads/container-autoscaling
Commit: c84ffe654b1f53e667f6434c56f44d99c2f90665
Parents: 9095be7
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:19:20 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../apache/stratos/cloud/controller/pojo/MemberContext.java | 7 +++++++
1 file changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c84ffe65/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
index ec67b46..72b4914 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
@@ -60,9 +60,16 @@ public class MemberContext implements Serializable {
this.memberId = id;
this.clusterId = clusterId;
this.setPartition(partition);
+ init();
}
public MemberContext() {
+ init();
+ }
+
+ private void init() {
+ this.properties = new Properties();
+ this.properties.setProperties(new Property[0]);
}
public String getMemberId() {
[05/27] git commit: Refactor RestClient to return KubernetesResponses.
Posted by ni...@apache.org.
Refactor RestClient to return KubernetesResponses.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/54e84083
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/54e84083
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/54e84083
Branch: refs/heads/container-autoscaling
Commit: 54e84083812619e413793b6de35b26bf7c9b34e5
Parents: 4dae7f2
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:52:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/KubernetesApiClient.java | 137 ++++++++-----------
.../kubernetes/client/rest/RestClient.java | 24 ++--
2 files changed, 69 insertions(+), 92 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/54e84083/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
index b20dc9b..99485c6 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
@@ -40,6 +40,7 @@ import org.apache.stratos.kubernetes.client.model.ReplicationController;
import org.apache.stratos.kubernetes.client.model.ReplicationControllerList;
import org.apache.stratos.kubernetes.client.model.Service;
import org.apache.stratos.kubernetes.client.model.ServiceList;
+import org.apache.stratos.kubernetes.client.rest.KubernetesResponse;
import org.apache.stratos.kubernetes.client.rest.RestClient;
import com.google.gson.Gson;
@@ -60,17 +61,17 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
public Pod getPod(String podId) throws KubernetesClientException{
try {
URI uri = new URIBuilder(baseURL+"pods/"+podId).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Pod ["+podId+"] retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Pod ["+podId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -91,15 +92,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"pods").build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Pod retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new Pod[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -124,19 +125,19 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
log.debug("CreatePod Request Body : "+content);
}
URI uri = new URIBuilder(baseURL+"pods").build();
- HttpResponse res = restClient.doPost(uri, content);
+ KubernetesResponse res = restClient.doPost(uri, content);
handleNullResponse("Pod "+pod+" creation failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_CONFLICT) {
+ if (res.getStatusCode() == HttpStatus.SC_CONFLICT) {
log.warn("Pod already created. "+pod);
return;
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Pod ["+pod+"] creation failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -154,20 +155,20 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"pods/"+podId).build();
- HttpResponse res = restClient.doDelete(uri);
+ KubernetesResponse res = restClient.doDelete(uri);
handleNullResponse("Pod ["+podId+"] deletion failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Pod ["+podId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Pod ["+podId+"] deletion failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -186,17 +187,17 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Replication Controller ["+controllerId+"] retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Replication Controller ["+controllerId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -217,15 +218,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"replicationControllers").build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Replication Controller retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new ReplicationController[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -253,15 +254,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
URI uri = new URIBuilder(baseURL+"replicationControllers").build();
- HttpResponse res = restClient.doPost(uri, content);
+ KubernetesResponse res = restClient.doPost(uri, content);
handleNullResponse("Replication Controller "+controller+" creation failed.", res);
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Replication Controller [" + controller
+ "] creation failed. Error: "
- + res.getStatusLine().getReasonPhrase();
+ + res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -299,15 +300,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
- HttpResponse res = restClient.doPut(uri, content);
+ KubernetesResponse res = restClient.doPut(uri, content);
handleNullResponse("Replication Controller ["+controllerId+"] update failed.", res);
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED
- && res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED
+ && res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Replication Controller [" + controller
+ "] update failed. Error: "
- + res.getStatusLine().getReasonPhrase();
+ + res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -329,20 +330,20 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"replicationControllers/"+controllerId).build();
- HttpResponse res = restClient.doDelete(uri);
+ KubernetesResponse res = restClient.doDelete(uri);
handleNullResponse("Replication Controller ["+controllerId+"] deletion failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Replication Controller ["+controllerId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Replication Controller ["+controllerId+"] deletion failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -360,17 +361,17 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throws KubernetesClientException {
try {
URI uri = new URIBuilder(baseURL+"services/"+serviceId).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Service ["+serviceId+"] retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Service ["+serviceId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -389,15 +390,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"services").build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Service retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new Service[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -422,14 +423,14 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
URI uri = new URIBuilder(baseURL+"services").build();
- HttpResponse res = restClient.doPost(uri, content);
+ KubernetesResponse res = restClient.doPost(uri, content);
handleNullResponse("Service "+service+" creation failed.", res);
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Service ["+service+"] creation failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -449,20 +450,20 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
URI uri = new URIBuilder(baseURL+"services/"+serviceId).build();
- HttpResponse res = restClient.doDelete(uri);
+ KubernetesResponse res = restClient.doDelete(uri);
handleNullResponse("Service ["+serviceId+"] deletion failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
String msg = "Service ["+serviceId+"] doesn't exist.";
log.error(msg);
throw new KubernetesClientException(msg);
}
- if (res.getStatusLine().getStatusCode() != HttpStatus.SC_ACCEPTED &&
- res.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
+ if (res.getStatusCode() != HttpStatus.SC_ACCEPTED &&
+ res.getStatusCode() != HttpStatus.SC_OK) {
String msg = "Service ["+serviceId+"] deletion failed. Error: "+
- res.getStatusLine().getReasonPhrase();
+ res.getReason();
log.error(msg);
throw new KubernetesClientException(msg);
}
@@ -482,15 +483,15 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
try {
String labelQuery = getLabelQuery(label);
URI uri = new URIBuilder(baseURL + "pods").addParameter("labels", labelQuery).build();
- HttpResponse res = restClient.doGet(uri);
+ KubernetesResponse res = restClient.doGet(uri);
handleNullResponse("Pod retrieval failed.", res);
- if (res.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
+ if (res.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return new Pod[0];
}
- String content = getHttpResponseString(res);
+ String content = res.getContent();
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
@@ -512,10 +513,10 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
for (Label l : label) {
query = query.concat("name="+l.getName()+",");
}
- return query.endsWith(",") ? query.substring(0, query.length()) : query;
+ return query.endsWith(",") ? query.substring(0, query.length()-1) : query;
}
- private void handleNullResponse(String message, HttpResponse res)
+ private void handleNullResponse(String message, KubernetesResponse res)
throws KubernetesClientException {
if (res == null) {
log.error(message+ " Null response receieved.");
@@ -523,32 +524,6 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
}
}
- // This method gives the HTTP response string
- private String getHttpResponseString(HttpResponse response) {
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(
- (response.getEntity().getContent())));
-
- String output;
- String result = "";
-
- while ((output = reader.readLine()) != null) {
- result += output;
- }
-
- return result;
- } catch (SocketException e) {
- log.error("Connection problem");
- return null;
- } catch (NullPointerException e) {
- log.error("Null value return from server");
- return null;
- } catch (IOException e) {
- log.error("IO error");
- return null;
- }
- }
-
public String getBaseURL() {
return baseURL;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/54e84083/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
index 272d04b..061c6d6 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
@@ -18,6 +18,10 @@
*/
package org.apache.stratos.kubernetes.client.rest;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.SocketException;
import java.net.URI;
import org.apache.http.HttpResponse;
@@ -49,7 +53,7 @@ public class RestClient {
* @throws Exception
* if any errors occur when executing the request
*/
- public HttpResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
+ public KubernetesResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
try {
httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(resourcePath);
@@ -58,7 +62,7 @@ public class RestClient {
input.setContentType("application/json");
postRequest.setEntity(input);
- HttpResponse response = httpClient.execute(postRequest);
+ KubernetesResponse response = httpClient.execute(postRequest, new KubernetesResponseHandler());
return response;
} finally {
@@ -81,28 +85,26 @@ public class RestClient {
* @throws org.apache.http.client.ClientProtocolException and IOException
* if any errors occur when executing the request
*/
- public HttpResponse doGet(URI resourcePath) throws Exception{
+ public KubernetesResponse doGet(URI resourcePath) throws Exception{
try {
httpClient = new DefaultHttpClient();
HttpGet getRequest = new HttpGet(resourcePath);
- System.out.println(getRequest.getRequestLine().getUri());
getRequest.addHeader("Content-Type", "application/json");
- HttpResponse response = httpClient.execute(getRequest);
-
+ KubernetesResponse response = httpClient.execute(getRequest, new KubernetesResponseHandler());
return response;
} finally {
httpClient.getConnectionManager().shutdown();
}
}
-
- public HttpResponse doDelete(URI resourcePath) throws Exception {
+
+ public KubernetesResponse doDelete(URI resourcePath) throws Exception {
try {
httpClient = new DefaultHttpClient();
HttpDelete httpDelete = new HttpDelete(resourcePath);
httpDelete.addHeader("Content-Type", "application/json");
- HttpResponse response = httpClient.execute(httpDelete);
+ KubernetesResponse response = httpClient.execute(httpDelete, new KubernetesResponseHandler());
return response;
@@ -111,7 +113,7 @@ public class RestClient {
}
}
- public HttpResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
+ public KubernetesResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
try {
httpClient = new DefaultHttpClient();
@@ -121,7 +123,7 @@ public class RestClient {
input.setContentType("application/json");
putRequest.setEntity(input);
- HttpResponse response = httpClient.execute(putRequest);
+ KubernetesResponse response = httpClient.execute(putRequest, new KubernetesResponseHandler());
return response;
[06/27] git commit: Adding Kubernetes response handler and a
kubernetes response class to handle http responses.
Posted by ni...@apache.org.
Adding Kubernetes response handler and a kubernetes response class to handle http responses.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/4dae7f22
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/4dae7f22
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/4dae7f22
Branch: refs/heads/container-autoscaling
Commit: 4dae7f2231a2f8126dde26042b95ca9f2f6e98b8
Parents: 8b5048a
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:51:38 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../client/rest/KubernetesResponse.java | 56 +++++++++++++++
.../client/rest/KubernetesResponseHandler.java | 71 ++++++++++++++++++++
2 files changed, 127 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/4dae7f22/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java
new file mode 100644
index 0000000..e8f17c3
--- /dev/null
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponse.java
@@ -0,0 +1,56 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.stratos.kubernetes.client.rest;
+
+/**
+ * Holds the data extracted from a HttpResponse.
+ */
+public class KubernetesResponse {
+
+ private int statusCode;
+ private String content;
+ private String reason;
+
+ public int getStatusCode() {
+ return statusCode;
+ }
+ public void setStatusCode(int statusCode) {
+ this.statusCode = statusCode;
+ }
+ public String getContent() {
+ return content;
+ }
+ public void setContent(String content) {
+ this.content = content;
+ }
+ public String getReason() {
+ return reason;
+ }
+ public void setReason(String reason) {
+ this.reason = reason;
+ }
+ @Override
+ public String toString() {
+ return "KubernetesResponse [statusCode=" + statusCode + ", content=" + content
+ + ", reason=" + reason + "]";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/4dae7f22/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
new file mode 100644
index 0000000..da6aa90
--- /dev/null
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/KubernetesResponseHandler.java
@@ -0,0 +1,71 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.stratos.kubernetes.client.rest;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.StatusLine;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.HttpResponseException;
+import org.apache.http.client.ResponseHandler;
+
+/**
+ * Handles a HttpResponse and returns a {@link KubernetesResponse}
+ */
+public class KubernetesResponseHandler implements ResponseHandler<KubernetesResponse>{
+
+ @Override
+ public KubernetesResponse handleResponse(HttpResponse response) throws ClientProtocolException,
+ IOException {
+ StatusLine statusLine = response.getStatusLine();
+ HttpEntity entity = response.getEntity();
+ if (statusLine.getStatusCode() >= 300) {
+ throw new HttpResponseException(
+ statusLine.getStatusCode(),
+ statusLine.getReasonPhrase());
+ }
+ if (entity == null) {
+ throw new ClientProtocolException("Response contains no content");
+ }
+
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ (response.getEntity().getContent())));
+
+ String output;
+ String result = "";
+
+ while ((output = reader.readLine()) != null) {
+ result += output;
+ }
+
+ KubernetesResponse kubResponse = new KubernetesResponse();
+ kubResponse.setStatusCode(statusLine.getStatusCode());
+ kubResponse.setContent(result);
+ kubResponse.setReason(statusLine.getReasonPhrase());
+
+ return kubResponse;
+ }
+
+
+}
[02/27] git commit: Refactor REST client to use a resource URI.
Posted by ni...@apache.org.
Refactor REST client to use a resource URI.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f5491ff0
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f5491ff0
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f5491ff0
Branch: refs/heads/container-autoscaling
Commit: f5491ff0ffbca2ddeb981b249a7af27834aeb946
Parents: f4011b4
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Mon Oct 6 16:02:37 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:28 2014 +0530
----------------------------------------------------------------------
.../kubernetes/client/rest/RestClient.java | 76 ++++----------------
1 file changed, 12 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/f5491ff0/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
index 2d0b950..272d04b 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/rest/RestClient.java
@@ -18,36 +18,20 @@
*/
package org.apache.stratos.kubernetes.client.rest;
-import java.io.IOException;
-import java.net.ConnectException;
+import java.net.URI;
import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.http.params.HttpConnectionParams;
-import org.apache.http.params.HttpParams;
-@SuppressWarnings("deprecation")
public class RestClient {
- private String baseURL;
private DefaultHttpClient httpClient;
- private final int TIME_OUT_PARAM = 6000000;
-
- public RestClient(String baseURL) {
- this.baseURL = baseURL;
- }
-
- public String getBaseURL() {
- return baseURL;
- }
-
/**
* Handle http post request. Return String
*
@@ -62,13 +46,13 @@ public class RestClient {
* @param password
* Password for basic auth
* @return The HttpResponse
- * @throws org.apache.http.client.ClientProtocolException and IOException
+ * @throws Exception
* if any errors occur when executing the request
*/
- public HttpResponse doPost(String resourcePath, String jsonParamString) throws Exception{
+ public HttpResponse doPost(URI resourcePath, String jsonParamString) throws Exception{
try {
httpClient = new DefaultHttpClient();
- HttpPost postRequest = new HttpPost(baseURL+resourcePath);
+ HttpPost postRequest = new HttpPost(resourcePath);
StringEntity input = new StringEntity(jsonParamString);
input.setContentType("application/json");
@@ -77,14 +61,6 @@ public class RestClient {
HttpResponse response = httpClient.execute(postRequest);
return response;
- } catch (ClientProtocolException e) {
- throw new ClientProtocolException();
- } catch (ConnectException e) {
- throw new ConnectException();
- }
- catch (IOException e) {
- e.printStackTrace();
- return null;
} finally {
httpClient.getConnectionManager().shutdown();
}
@@ -105,63 +81,41 @@ public class RestClient {
* @throws org.apache.http.client.ClientProtocolException and IOException
* if any errors occur when executing the request
*/
- public HttpResponse doGet(String resourcePath) throws Exception{
+ public HttpResponse doGet(URI resourcePath) throws Exception{
try {
httpClient = new DefaultHttpClient();
- HttpGet getRequest = new HttpGet(baseURL+resourcePath);
+ HttpGet getRequest = new HttpGet(resourcePath);
+ System.out.println(getRequest.getRequestLine().getUri());
getRequest.addHeader("Content-Type", "application/json");
- HttpParams params = httpClient.getParams();
- HttpConnectionParams.setConnectionTimeout(params, TIME_OUT_PARAM);
- HttpConnectionParams.setSoTimeout(params, TIME_OUT_PARAM);
-
HttpResponse response = httpClient.execute(getRequest);
return response;
- } catch (ClientProtocolException e) {
- throw new ClientProtocolException();
- } catch (ConnectException e) {
- throw new ConnectException();
- } catch (IOException e) {
- e.printStackTrace();
- return null;
} finally {
httpClient.getConnectionManager().shutdown();
}
}
- public HttpResponse doDelete(String resourcePath) throws Exception {
+ public HttpResponse doDelete(URI resourcePath) throws Exception {
try {
httpClient = new DefaultHttpClient();
- HttpDelete httpDelete = new HttpDelete(baseURL+resourcePath);
+ HttpDelete httpDelete = new HttpDelete(resourcePath);
httpDelete.addHeader("Content-Type", "application/json");
- HttpParams params = httpClient.getParams();
- HttpConnectionParams.setConnectionTimeout(params, TIME_OUT_PARAM);
- HttpConnectionParams.setSoTimeout(params, TIME_OUT_PARAM);
-
HttpResponse response = httpClient.execute(httpDelete);
return response;
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- return null;
- } catch (IOException e) {
- e.printStackTrace();
- return null;
} finally {
httpClient.getConnectionManager().shutdown();
}
}
- public HttpResponse doPut(String resourcePath, String jsonParamString) throws Exception {
+ public HttpResponse doPut(URI resourcePath, String jsonParamString) throws Exception {
try {
httpClient = new DefaultHttpClient();
- System.out.println(baseURL + resourcePath);
- System.out.println(jsonParamString);
- HttpPut putRequest = new HttpPut(baseURL + resourcePath);
+ HttpPut putRequest = new HttpPut(resourcePath);
StringEntity input = new StringEntity(jsonParamString);
input.setContentType("application/json");
@@ -170,13 +124,7 @@ public class RestClient {
HttpResponse response = httpClient.execute(putRequest);
return response;
- } catch (ClientProtocolException e) {
- throw new ClientProtocolException();
- } catch (ConnectException e) {
- throw new ConnectException();
- } catch (IOException e) {
- e.printStackTrace();
- return null;
+
} finally {
httpClient.getConnectionManager().shutdown();
}
[11/27] git commit: Introducing container cluster context as it holds
the data to be passed to CC container API.
Posted by ni...@apache.org.
Introducing container cluster context as it holds the data to be passed to CC container API.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/25f0ec66
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/25f0ec66
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/25f0ec66
Branch: refs/heads/container-autoscaling
Commit: 25f0ec66714712416931d23ef4d0453837b305a4
Parents: 5bc3a87
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 17:54:24 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../pojo/ContainerClusterContext.java | 84 ++++++++++++++++++++
1 file changed, 84 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/25f0ec66/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
new file mode 100644
index 0000000..f6c9b31
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/ContainerClusterContext.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.cloud.controller.pojo;
+
+import java.io.Serializable;
+
+/**
+ * Holds information about a container cluster to be started.
+ *
+ */
+public class ContainerClusterContext implements Serializable {
+
+ private static final long serialVersionUID = -388327475844701869L;
+ // cluster id this Pod belongs to
+ private String clusterId;
+ // properties
+ private Properties properties;
+
+ public ContainerClusterContext(String clusterId) {
+ this.clusterId = clusterId;
+ }
+
+ public String getClusterId() {
+ return clusterId;
+ }
+ public void setClusterId(String clusterId) {
+ this.clusterId = clusterId;
+ }
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((clusterId == null) ? 0 : clusterId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ContainerClusterContext other = (ContainerClusterContext) obj;
+ if (clusterId == null) {
+ if (other.clusterId != null)
+ return false;
+ } else if (!clusterId.equals(other.clusterId))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "ContainerClusterContext [clusterId=" + clusterId + ", properties=" + properties
+ + "]";
+ }
+
+}
[17/27] git commit: Fixing error messages.
Posted by ni...@apache.org.
Fixing error messages.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/9095be75
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/9095be75
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/9095be75
Branch: refs/heads/container-autoscaling
Commit: 9095be75725e97d674c810d0640a13ad01c1653a
Parents: 27f27cd
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:18:53 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../apache/stratos/kubernetes/client/KubernetesApiClient.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/9095be75/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
index 99485c6..4ee6e06 100644
--- a/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
+++ b/components/org.apache.stratos.kubernetes.client/src/main/java/org/apache/stratos/kubernetes/client/KubernetesApiClient.java
@@ -175,7 +175,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
} catch (KubernetesClientException e) {
throw e;
} catch (Exception e) {
- String msg = "Error while retrieving Pod info of Pod ID: "+podId;
+ String msg = "Error while deleting Pod with ID: "+podId;
log.error(msg, e);
throw new KubernetesClientException(msg, e);
}
@@ -350,7 +350,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
} catch (KubernetesClientException e) {
throw e;
} catch (Exception e) {
- String msg = "Error while retrieving Replication Controller info of Controller ID: "+controllerId;
+ String msg = "Error while deleting Replication Controller with Controller ID: "+controllerId;
log.error(msg, e);
throw new KubernetesClientException(msg, e);
}
@@ -471,7 +471,7 @@ public class KubernetesApiClient implements KubernetesAPIClientInterface {
throw e;
} catch (Exception e) {
- String msg = "Error while retrieving Service info of Service ID: "+serviceId;
+ String msg = "Error while deleting Service with Service ID: "+serviceId;
log.error(msg, e);
throw new KubernetesClientException(msg, e);
}
[03/27] git commit: Using httpcomponents 4.2+
Posted by ni...@apache.org.
Using httpcomponents 4.2+
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f4011b4c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f4011b4c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f4011b4c
Branch: refs/heads/container-autoscaling
Commit: f4011b4c2313f2f132ef7a0265343d7a2c1cddcd
Parents: 7162325
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Mon Oct 6 16:01:27 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:28 2014 +0530
----------------------------------------------------------------------
components/org.apache.stratos.kubernetes.client/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/f4011b4c/components/org.apache.stratos.kubernetes.client/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.kubernetes.client/pom.xml b/components/org.apache.stratos.kubernetes.client/pom.xml
index b0a3732..c38c854 100644
--- a/components/org.apache.stratos.kubernetes.client/pom.xml
+++ b/components/org.apache.stratos.kubernetes.client/pom.xml
@@ -47,7 +47,7 @@
<dependency>
<groupId>org.apache.httpcomponents.wso2</groupId>
<artifactId>httpclient</artifactId>
- <version>4.1.1.wso2v1</version>
+ <version>4.2.5.wso2v1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
[16/27] git commit: Few improvements;
checking Pod creation & wait till pods getting created, terminate
Pods forcefully to make sure Pods are not running.
Posted by ni...@apache.org.
Few improvements; checking Pod creation & wait till pods getting created, terminate Pods forcefully to make sure Pods are not running.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/30e08c83
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/30e08c83
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/30e08c83
Branch: refs/heads/container-autoscaling
Commit: 30e08c8319183bafbc5365d3a026e159a541dc46
Parents: c84ffe6
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 22:21:05 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 50 ++++++++++++++++----
1 file changed, 42 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/30e08c83/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 4042140..da96ab0 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1372,7 +1372,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
try {
- validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
+ String minReplicas = validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
String kubernetesMasterIp = validateProperty(StratosConstants.KUBERNETES_MASTER_IP, containerClusterContext);
String kubernetesPortRange = validateProperty(StratosConstants.KUBERNETES_PORT_RANGE, containerClusterContext);
@@ -1408,19 +1408,30 @@ public class CloudControllerServiceImpl implements CloudControllerService {
kubApi.createService(service);
+ // set host port
+ ctxt.addProperty(StratosConstants.ALLOCATED_SERVICE_HOST_PORT, service.getPort());
+
if (log.isDebugEnabled()) {
log.debug("Cloud Controller successfully started the service "
+ controller + " via Kubernetes layer.");
}
- // needs to wait few seconds before running label queries
- Thread.sleep(3000);
-
// create a label query
Label l = new Label();
l.setName(clusterId);
// execute the label query
- Pod[] newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+ Pod[] newlyCreatedPods = new Pod[0];
+ int expectedCount = Integer.parseInt(minReplicas);
+
+ for (int i = 0; i < expectedCount ; i++) {
+ newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+
+ log.info("Pods "+newlyCreatedPods.length);
+ if(newlyCreatedPods.length == expectedCount) {
+ break;
+ }
+ Thread.sleep(5000);
+ }
if (log.isDebugEnabled()) {
@@ -1436,10 +1447,10 @@ public class CloudControllerServiceImpl implements CloudControllerService {
context.setCartridgeType(cartridgeType);
context.setClusterId(clusterId);
- context.setProperties(CloudControllerUtil.addProperty(containerClusterContext
+ context.setProperties(CloudControllerUtil.addProperty(context
.getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
- CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
+ String.valueOf(service.getPort())));
+
dataHolder.addMemberContext(context);
// trigger topology
@@ -1565,6 +1576,29 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// we're not going to throw this error, but proceed with other deletions
log.error("Failed to update Kubernetes Controller with id: "+clusterId, e);
}
+
+ // delete pods forcefully
+ try {
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+ // execute the label query
+ Pod[] pods = kubApi.getSelectedPods(new Label[]{l});
+
+ for (Pod pod : pods) {
+ try {
+ // delete pods forcefully
+ kubApi.deletePod(pod.getId());
+ } catch (KubernetesClientException ignore) {
+ // we can't do nothing here
+ log.warn(String.format("Failed to delete Pod [%s] forcefully!", pod.getId()));
+ }
+ }
+ } catch (KubernetesClientException e) {
+ // we're not going to throw this error, but proceed with other deletions
+ log.error("Failed to delete pods forcefully for cluster: "+clusterId, e);
+ }
+
// delete the replication controller.
try {
kubApi.deleteReplicationController(clusterId);
[08/27] Changes to CC wsdl.
Posted by ni...@apache.org.
http://git-wip-us.apache.org/repos/asf/stratos/blob/67bb746b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
----------------------------------------------------------------------
diff --git a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
index f71e108..f8de82f 100644
--- a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
+++ b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl
@@ -1,1130 +1,1178 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ax29="http://util.java/xsd" xmlns:ns="http://impl.controller.cloud.stratos.apache.org" xmlns:ax23="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" xmlns:ax24="http://pojo.controller.cloud.stratos.apache.org/xsd" xmlns:ax21="http://exception.controller.cloud.stratos.apache.org/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://impl.controller.cloud.stratos.apache.org">
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://impl.controller.cloud.stratos.apache.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ax228="http://util.java/xsd" xmlns:ax220="http://exception.controller.cloud.stratos.apache.org/xsd" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ax222="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" xmlns:ax223="http://pojo.controller.cloud.stratos.apache.org/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://impl.controller.cloud.stratos.apache.org">
+ <wsdl:documentation>CloudControllerService</wsdl:documentation>
<wsdl:types>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://util.java/xsd">
<xs:complexType name="Properties">
- <xs:sequence/>
+ <xs:sequence></xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://exception.controller.cloud.stratos.apache.org/xsd">
<xs:complexType name="InvalidPartitionException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidCartridgeTypeException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidClusterException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UnregisteredClusterException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidMemberException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="UnregisteredCartridgeException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidIaasProviderException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="InvalidCartridgeDefinitionException">
<xs:sequence>
- <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
- <xs:schema xmlns:ax28="http://pojo.controller.cloud.stratos.apache.org/xsd" xmlns:ax26="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" xmlns:ax22="http://exception.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://impl.controller.cloud.stratos.apache.org">
- <xs:import namespace="http://exception.controller.cloud.stratos.apache.org/xsd"/>
- <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"/>
- <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:schema xmlns:ax221="http://exception.controller.cloud.stratos.apache.org/xsd" xmlns:ax227="http://pojo.controller.cloud.stratos.apache.org/xsd" xmlns:ax225="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://impl.controller.cloud.stratos.apache.org">
+ <xs:import namespace="http://exception.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"></xs:import>
<xs:element name="CloudControllerServiceInvalidPartitionException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidPartitionException" nillable="true" type="ax21:InvalidPartitionException"/>
+ <xs:element minOccurs="0" name="InvalidPartitionException" nillable="true" type="ax220:InvalidPartitionException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validatePartition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="partition" nillable="true" type="ax26:Partition"/>
+ <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validatePartitionResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidCartridgeTypeException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidCartridgeTypeException" nillable="true" type="ax21:InvalidCartridgeTypeException"/>
+ <xs:element minOccurs="0" name="InvalidCartridgeTypeException" nillable="true" type="ax220:InvalidCartridgeTypeException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateDeploymentPolicy">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="partitions" nillable="true" type="ax26:Partition"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="partitions" nillable="true" type="ax222:Partition"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="validateDeploymentPolicyResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidClusterException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidClusterException" nillable="true" type="ax21:InvalidClusterException"/>
+ <xs:element minOccurs="0" name="InvalidClusterException" nillable="true" type="ax220:InvalidClusterException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="updateKubernetesController">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="replicas" type="xs:int"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="replicas" type="xs:int"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceUnregisteredClusterException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="UnregisteredClusterException" nillable="true" type="ax21:UnregisteredClusterException"/>
+ <xs:element minOccurs="0" name="UnregisteredClusterException" nillable="true" type="ax220:UnregisteredClusterException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unregisterService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="unregisterDockerService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="undeployCartridgeDefinition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidMemberException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidMemberException" nillable="true" type="ax21:InvalidMemberException"/>
+ <xs:element minOccurs="0" name="InvalidMemberException" nillable="true" type="ax220:InvalidMemberException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateInstance">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateAllInstances">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="terminateAllContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceUnregisteredCartridgeException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="UnregisteredCartridgeException" nillable="true" type="ax21:UnregisteredCartridgeException"/>
+ <xs:element minOccurs="0" name="UnregisteredCartridgeException" nillable="true" type="ax220:UnregisteredCartridgeException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidIaasProviderException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidIaasProviderException" nillable="true" type="ax21:InvalidIaasProviderException"/>
+ <xs:element minOccurs="0" name="InvalidIaasProviderException" nillable="true" type="ax220:InvalidIaasProviderException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startInstance">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax28:MemberContext"/>
+ <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startInstanceResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax28:MemberContext"/>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startContainers">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="memberContext" nillable="true" type="ax28:MemberContext"/>
+ <xs:element minOccurs="0" name="containerClusterContext" nillable="true" type="ax223:ContainerClusterContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="startContainersResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax28:MemberContext"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax223:MemberContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="registerService">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="registrant" nillable="true" type="ax28:Registrant"/>
+ <xs:element minOccurs="0" name="registrant" nillable="true" type="ax223:Registrant"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="registerServiceResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" type="xs:boolean"/>
+ <xs:element minOccurs="0" name="return" type="xs:boolean"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRegisteredCartridges">
<xs:complexType>
- <xs:sequence/>
+ <xs:sequence></xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getRegisteredCartridgesResponse">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getClusterContext">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getClusterContextResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax28:ClusterContext"/>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:ClusterContext"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getCartridgeInfo">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getCartridgeInfoResponse">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="return" nillable="true" type="ax28:CartridgeInfo"/>
+ <xs:element minOccurs="0" name="return" nillable="true" type="ax223:CartridgeInfo"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CloudControllerServiceInvalidCartridgeDefinitionException">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="InvalidCartridgeDefinitionException" nillable="true" type="ax21:InvalidCartridgeDefinitionException"/>
+ <xs:element minOccurs="0" name="InvalidCartridgeDefinitionException" nillable="true" type="ax220:InvalidCartridgeDefinitionException"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="deployCartridgeDefinition">
<xs:complexType>
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeConfig" nillable="true" type="ax28:CartridgeConfig"/>
+ <xs:element minOccurs="0" name="cartridgeConfig" nillable="true" type="ax223:CartridgeConfig"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
- <xs:schema xmlns:ax27="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" xmlns:ax210="http://util.java/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://pojo.controller.cloud.stratos.apache.org/xsd">
- <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"/>
- <xs:import namespace="http://util.java/xsd"/>
+ <xs:schema xmlns:ax229="http://util.java/xsd" xmlns:ax226="http://partition.deployment.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://pojo.controller.cloud.stratos.apache.org/xsd">
+ <xs:import namespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd"></xs:import>
+ <xs:import namespace="http://util.java/xsd"></xs:import>
<xs:complexType name="Properties">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax24:Property"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Property">
<xs:sequence>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="value" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="value" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MemberContext">
<xs:sequence>
- <xs:element minOccurs="0" name="allocatedIpAddress" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="initTime" type="xs:long"/>
- <xs:element minOccurs="0" name="instanceId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="lbClusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="networkPartitionId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="nodeId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="partition" nillable="true" type="ax27:Partition"/>
- <xs:element minOccurs="0" name="privateIpAddress" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax24:Properties"/>
- <xs:element minOccurs="0" name="publicIpAddress" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="allocatedIpAddress" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="initTime" type="xs:long"></xs:element>
+ <xs:element minOccurs="0" name="instanceId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="lbClusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="memberId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="networkPartitionId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="nodeId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="partition" nillable="true" type="ax222:Partition"></xs:element>
+ <xs:element minOccurs="0" name="privateIpAddress" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="publicIpAddress" nillable="true" type="xs:string"></xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="ContainerClusterContext">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Registrant">
<xs:sequence>
- <xs:element minOccurs="0" name="autoScalerPolicyName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="deploymentPolicyName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax24:Persistence"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax24:Properties"/>
- <xs:element minOccurs="0" name="tenantRange" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="autoScalerPolicyName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="deploymentPolicyName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="tenantRange" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Persistence">
<xs:sequence>
- <xs:element minOccurs="0" name="persistanceRequired" type="xs:boolean"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax24:Volume"/>
+ <xs:element minOccurs="0" name="persistanceRequired" type="xs:boolean"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Volume">
<xs:sequence>
- <xs:element minOccurs="0" name="device" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="iaasType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="mappingPath" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="removeOntermination" type="xs:boolean"/>
- <xs:element minOccurs="0" name="size" type="xs:int"/>
- <xs:element minOccurs="0" name="snapshotId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="volumeId" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="device" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="iaasType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="mappingPath" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="removeOntermination" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="size" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="snapshotId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="volumeId" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ClusterContext">
<xs:sequence>
- <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="lbCluster" type="xs:boolean"/>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax29:Properties"/>
- <xs:element minOccurs="0" name="timeoutInMillis" type="xs:long"/>
- <xs:element minOccurs="0" name="volumeRequired" type="xs:boolean"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax24:Volume"/>
+ <xs:element minOccurs="0" name="cartridgeType" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="clusterId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="lbCluster" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax229:Properties"></xs:element>
+ <xs:element minOccurs="0" name="timeoutInMillis" type="xs:long"></xs:element>
+ <xs:element minOccurs="0" name="volumeRequired" type="xs:boolean"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="volumes" nillable="true" type="ax223:Volume"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartridgeInfo">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="appTypes" nillable="true" type="ax24:AppType"/>
- <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
- <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax24:LoadbalancerConfig"/>
- <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"/>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax24:Persistence"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax24:PortMapping"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax24:Property"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="appTypes" nillable="true" type="ax223:AppType"></xs:element>
+ <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"></xs:element>
+ <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="ax223:Property"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AppType">
<xs:sequence>
- <xs:element minOccurs="0" name="appSpecificMapping" type="xs:boolean"/>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="appSpecificMapping" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LoadbalancerConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax24:Properties"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PortMapping">
<xs:sequence>
- <xs:element minOccurs="0" name="port" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="protocol" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="proxyPort" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="port" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="protocol" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="proxyPort" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="CartridgeConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="container" nillable="true" type="ax24:Container"/>
- <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="deployerType" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="iaasConfigs" nillable="true" type="ax24:IaasConfig"/>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
- <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax24:LoadbalancerConfig"/>
- <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"/>
- <xs:element minOccurs="0" name="persistence" nillable="true" type="ax24:Persistence"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax24:PortMapping"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax24:Properties"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="baseDir" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="container" nillable="true" type="ax223:Container"></xs:element>
+ <xs:element minOccurs="0" name="defaultAutoscalingPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="defaultDeploymentPolicy" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="deployerType" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="deploymentDirs" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="displayName" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="hostName" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="iaasConfigs" nillable="true" type="ax223:IaasConfig"></xs:element>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="lbConfig" nillable="true" type="ax223:LoadbalancerConfig"></xs:element>
+ <xs:element minOccurs="0" name="multiTenant" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="persistence" nillable="true" type="ax223:Persistence"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="portMappings" nillable="true" type="ax223:PortMapping"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="serviceGroup" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="version" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Container">
<xs:sequence>
- <xs:element minOccurs="0" name="dockerFileRepo" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="imageName" nillable="true" type="xs:string"/>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="dockerFileRepo" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="imageName" nillable="true" type="xs:string"></xs:element>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="properties" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="IaasConfig">
<xs:sequence>
- <xs:element minOccurs="0" name="className" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="credential" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="identity" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="imageId" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="maxInstanceLimit" type="xs:int"/>
- <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="networkInterfaces" nillable="true" type="ax24:NetworkInterfaces"/>
- <xs:element minOccurs="0" name="payload" nillable="true" type="xs:base64Binary"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax24:Properties"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="className" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="credential" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="identity" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="imageId" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="maxInstanceLimit" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterfaces"></xs:element>
+ <xs:element minOccurs="0" name="payload" nillable="true" type="xs:base64Binary"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="type" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NetworkInterfaces">
<xs:sequence>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="networkInterfaces" nillable="true" type="ax24:NetworkInterface"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="networkInterfaces" nillable="true" type="ax223:NetworkInterface"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="NetworkInterface">
<xs:sequence>
- <xs:element minOccurs="0" name="fixedIp" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="networkUuid" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="portUuid" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="fixedIp" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="networkUuid" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="portUuid" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
- <xs:schema xmlns:ax25="http://pojo.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd">
- <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"/>
+ <xs:schema xmlns:ax224="http://pojo.controller.cloud.stratos.apache.org/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://partition.deployment.controller.cloud.stratos.apache.org/xsd">
+ <xs:import namespace="http://pojo.controller.cloud.stratos.apache.org/xsd"></xs:import>
<xs:complexType name="Partition">
<xs:sequence>
- <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/>
- <xs:element minOccurs="0" name="isPublic" type="xs:boolean"/>
- <xs:element minOccurs="0" name="partitionMax" type="xs:int"/>
- <xs:element minOccurs="0" name="partitionMin" type="xs:int"/>
- <xs:element minOccurs="0" name="properties" nillable="true" type="ax25:Properties"/>
- <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"/>
+ <xs:element minOccurs="0" name="description" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"></xs:element>
+ <xs:element minOccurs="0" name="isPublic" type="xs:boolean"></xs:element>
+ <xs:element minOccurs="0" name="partitionMax" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="partitionMin" type="xs:int"></xs:element>
+ <xs:element minOccurs="0" name="properties" nillable="true" type="ax223:Properties"></xs:element>
+ <xs:element minOccurs="0" name="provider" nillable="true" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="validatePartitionRequest">
- <wsdl:part name="parameters" element="ns:validatePartition"/>
+ <wsdl:part name="parameters" element="ns:validatePartition"></wsdl:part>
</wsdl:message>
<wsdl:message name="validatePartitionResponse">
- <wsdl:part name="parameters" element="ns:validatePartitionResponse"/>
+ <wsdl:part name="parameters" element="ns:validatePartitionResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidPartitionException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidPartitionException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidPartitionException"></wsdl:part>
</wsdl:message>
<wsdl:message name="validateDeploymentPolicyRequest">
- <wsdl:part name="parameters" element="ns:validateDeploymentPolicy"/>
+ <wsdl:part name="parameters" element="ns:validateDeploymentPolicy"></wsdl:part>
</wsdl:message>
<wsdl:message name="validateDeploymentPolicyResponse">
- <wsdl:part name="parameters" element="ns:validateDeploymentPolicyResponse"/>
+ <wsdl:part name="parameters" element="ns:validateDeploymentPolicyResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidCartridgeTypeException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeTypeException"></wsdl:part>
</wsdl:message>
<wsdl:message name="startContainersRequest">
- <wsdl:part name="parameters" element="ns:startContainers"/>
+ <wsdl:part name="parameters" element="ns:startContainers"></wsdl:part>
</wsdl:message>
<wsdl:message name="startContainersResponse">
- <wsdl:part name="parameters" element="ns:startContainersResponse"/>
+ <wsdl:part name="parameters" element="ns:startContainersResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceUnregisteredCartridgeException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"></wsdl:part>
</wsdl:message>
<wsdl:message name="terminateInstanceRequest">
- <wsdl:part name="parameters" element="ns:terminateInstance"/>
+ <wsdl:part name="parameters" element="ns:terminateInstance"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidMemberException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidMemberException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidMemberException"></wsdl:part>
</wsdl:message>
<wsdl:message name="registerServiceRequest">
- <wsdl:part name="parameters" element="ns:registerService"/>
+ <wsdl:part name="parameters" element="ns:registerService"></wsdl:part>
</wsdl:message>
<wsdl:message name="registerServiceResponse">
- <wsdl:part name="parameters" element="ns:registerServiceResponse"/>
+ <wsdl:part name="parameters" element="ns:registerServiceResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="deployCartridgeDefinitionRequest">
- <wsdl:part name="parameters" element="ns:deployCartridgeDefinition"/>
+ <wsdl:part name="parameters" element="ns:deployCartridgeDefinition"></wsdl:part>
</wsdl:message>
+ <wsdl:message name="deployCartridgeDefinitionResponse"></wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidCartridgeDefinitionException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeDefinitionException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidCartridgeDefinitionException"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidIaasProviderException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidIaasProviderException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidIaasProviderException"></wsdl:part>
</wsdl:message>
<wsdl:message name="getCartridgeInfoRequest">
- <wsdl:part name="parameters" element="ns:getCartridgeInfo"/>
+ <wsdl:part name="parameters" element="ns:getCartridgeInfo"></wsdl:part>
</wsdl:message>
<wsdl:message name="getCartridgeInfoResponse">
- <wsdl:part name="parameters" element="ns:getCartridgeInfoResponse"/>
+ <wsdl:part name="parameters" element="ns:getCartridgeInfoResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="terminateAllContainersRequest">
- <wsdl:part name="parameters" element="ns:terminateAllContainers"/>
+ <wsdl:part name="parameters" element="ns:terminateAllContainers"></wsdl:part>
</wsdl:message>
<wsdl:message name="CloudControllerServiceInvalidClusterException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidClusterException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceInvalidClusterException"></wsdl:part>
</wsdl:message>
<wsdl:message name="unregisterServiceRequest">
- <wsdl:part name="parameters" element="ns:unregisterService"/>
+ <wsdl:part name="parameters" element="ns:unregisterService"></wsdl:part>
</wsdl:message>
+ <wsdl:message name="unregisterServiceResponse"></wsdl:message>
<wsdl:message name="CloudControllerServiceUnregisteredClusterException">
- <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredClusterException"/>
+ <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredClusterException"></wsdl:part>
</wsdl:message>
<wsdl:message name="undeployCartridgeDefinitionRequest">
- <wsdl:part name="parameters" element="ns:undeployCartridgeDefinition"/>
+ <wsdl:part name="parameters" element="ns:undeployCartridgeDefinition"></wsdl:part>
</wsdl:message>
+ <wsdl:message name="undeployCartridgeDefinitionResponse"></wsdl:message>
<wsdl:message name="terminateAllInstancesRequest">
- <wsdl:part name="parameters" element="ns:terminateAllInstances"/>
+ <wsdl:part name="parameters" element="ns:terminateAllInstances"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="unregisterDockerServiceRequest">
+ <wsdl:part name="parameters" element="ns:unregisterDockerService"></wsdl:part>
</wsdl:message>
<wsdl:message name="getRegisteredCartridgesRequest">
- <wsdl:part name="parameters" element="ns:getRegisteredCartridges"/>
+ <wsdl:part name="parameters" element="ns:getRegisteredCartridges"></wsdl:part>
</wsdl:message>
<wsdl:message name="getRegisteredCartridgesResponse">
- <wsdl:part name="parameters" element="ns:getRegisteredCartridgesResponse"/>
- </wsdl:message>
- <wsdl:message name="unregisterDockerServiceRequest">
- <wsdl:part name="parameters" element="ns:unregisterDockerService"/>
+ <wsdl:part name="parameters" element="ns:getRegisteredCartridgesResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="startInstanceRequest">
- <wsdl:part name="parameters" element="ns:startInstance"/>
+ <wsdl:part name="parameters" element="ns:startInstance"></wsdl:part>
</wsdl:message>
<wsdl:message name="startInstanceResponse">
- <wsdl:part name="parameters" element="ns:startInstanceResponse"/>
+ <wsdl:part name="parameters" element="ns:startInstanceResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="getClusterContextRequest">
- <wsdl:part name="parameters" element="ns:getClusterContext"/>
+ <wsdl:part name="parameters" element="ns:getClusterContext"></wsdl:part>
</wsdl:message>
<wsdl:message name="getClusterContextResponse">
- <wsdl:part name="parameters" element="ns:getClusterContextResponse"/>
+ <wsdl:part name="parameters" element="ns:getClusterContextResponse"></wsdl:part>
</wsdl:message>
<wsdl:message name="updateKubernetesControllerRequest">
- <wsdl:part name="parameters" element="ns:updateKubernetesController"/>
+ <wsdl:part name="parameters" element="ns:updateKubernetesController"></wsdl:part>
</wsdl:message>
<wsdl:portType name="CloudControllerServicePortType">
<wsdl:operation name="validatePartition">
- <wsdl:input message="ns:validatePartitionRequest" wsaw:Action="urn:validatePartition"/>
- <wsdl:output message="ns:validatePartitionResponse" wsaw:Action="urn:validatePartitionResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validatePartitionCloudControllerServiceInvalidPartitionException"/>
+ <wsdl:input message="ns:validatePartitionRequest" wsaw:Action="urn:validatePartition"></wsdl:input>
+ <wsdl:output message="ns:validatePartitionResponse" wsaw:Action="urn:validatePartitionResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validatePartitionCloudControllerServiceInvalidPartitionException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="validateDeploymentPolicy">
- <wsdl:input message="ns:validateDeploymentPolicyRequest" wsaw:Action="urn:validateDeploymentPolicy"/>
- <wsdl:output message="ns:validateDeploymentPolicyResponse" wsaw:Action="urn:validateDeploymentPolicyResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidPartitionException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:input message="ns:validateDeploymentPolicyRequest" wsaw:Action="urn:validateDeploymentPolicy"></wsdl:input>
+ <wsdl:output message="ns:validateDeploymentPolicyResponse" wsaw:Action="urn:validateDeploymentPolicyResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidPartitionException" name="CloudControllerServiceInvalidPartitionException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidPartitionException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:validateDeploymentPolicyCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="startContainers">
- <wsdl:input message="ns:startContainersRequest" wsaw:Action="urn:startContainers"/>
- <wsdl:output message="ns:startContainersResponse" wsaw:Action="urn:startContainersResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startContainersCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:startContainersRequest" wsaw:Action="urn:startContainers"></wsdl:input>
+ <wsdl:output message="ns:startContainersResponse" wsaw:Action="urn:startContainersResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startContainersCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateInstance">
- <wsdl:input message="ns:terminateInstanceRequest" wsaw:Action="urn:terminateInstance"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidMemberException" name="CloudControllerServiceInvalidMemberException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidMemberException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:input message="ns:terminateInstanceRequest" wsaw:Action="urn:terminateInstance"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidMemberException" name="CloudControllerServiceInvalidMemberException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidMemberException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:terminateInstanceCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="registerService">
- <wsdl:input message="ns:registerServiceRequest" wsaw:Action="urn:registerService"/>
- <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:registerServiceRequest" wsaw:Action="urn:registerService"></wsdl:input>
+ <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deployCartridgeDefinition">
- <wsdl:input message="ns:deployCartridgeDefinitionRequest" wsaw:Action="urn:deployCartridgeDefinition"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeDefinitionException" name="CloudControllerServiceInvalidCartridgeDefinitionException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidCartridgeDefinitionException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidIaasProviderException"/>
+ <wsdl:input message="ns:deployCartridgeDefinitionRequest" wsaw:Action="urn:deployCartridgeDefinition"></wsdl:input>
+ <wsdl:output message="ns:deployCartridgeDefinitionResponse" wsaw:Action="urn:deployCartridgeDefinitionResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeDefinitionException" name="CloudControllerServiceInvalidCartridgeDefinitionException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidCartridgeDefinitionException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:deployCartridgeDefinitionCloudControllerServiceInvalidIaasProviderException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCartridgeInfo">
- <wsdl:input message="ns:getCartridgeInfoRequest" wsaw:Action="urn:getCartridgeInfo"/>
- <wsdl:output message="ns:getCartridgeInfoResponse" wsaw:Action="urn:getCartridgeInfoResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:getCartridgeInfoCloudControllerServiceUnregisteredCartridgeException"/>
+ <wsdl:input message="ns:getCartridgeInfoRequest" wsaw:Action="urn:getCartridgeInfo"></wsdl:input>
+ <wsdl:output message="ns:getCartridgeInfoResponse" wsaw:Action="urn:getCartridgeInfoResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:getCartridgeInfoCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllContainers">
- <wsdl:input message="ns:terminateAllContainersRequest" wsaw:Action="urn:terminateAllContainers"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllContainersCloudControllerServiceInvalidClusterException"/>
+ <wsdl:input message="ns:terminateAllContainersRequest" wsaw:Action="urn:terminateAllContainers"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllContainersCloudControllerServiceInvalidClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterService">
- <wsdl:input message="ns:unregisterServiceRequest" wsaw:Action="urn:unregisterService"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterServiceCloudControllerServiceUnregisteredClusterException"/>
+ <wsdl:input message="ns:unregisterServiceRequest" wsaw:Action="urn:unregisterService"></wsdl:input>
+ <wsdl:output message="ns:unregisterServiceResponse" wsaw:Action="urn:unregisterServiceResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterServiceCloudControllerServiceUnregisteredClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="undeployCartridgeDefinition">
- <wsdl:input message="ns:undeployCartridgeDefinitionRequest" wsaw:Action="urn:undeployCartridgeDefinition"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:undeployCartridgeDefinitionCloudControllerServiceInvalidCartridgeTypeException"/>
+ <wsdl:input message="ns:undeployCartridgeDefinitionRequest" wsaw:Action="urn:undeployCartridgeDefinition"></wsdl:input>
+ <wsdl:output message="ns:undeployCartridgeDefinitionResponse" wsaw:Action="urn:undeployCartridgeDefinitionResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidCartridgeTypeException" name="CloudControllerServiceInvalidCartridgeTypeException" wsaw:Action="urn:undeployCartridgeDefinitionCloudControllerServiceInvalidCartridgeTypeException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllInstances">
- <wsdl:input message="ns:terminateAllInstancesRequest" wsaw:Action="urn:terminateAllInstances"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllInstancesCloudControllerServiceInvalidClusterException"/>
- </wsdl:operation>
- <wsdl:operation name="getRegisteredCartridges">
- <wsdl:input message="ns:getRegisteredCartridgesRequest" wsaw:Action="urn:getRegisteredCartridges"/>
- <wsdl:output message="ns:getRegisteredCartridgesResponse" wsaw:Action="urn:getRegisteredCartridgesResponse"/>
+ <wsdl:input message="ns:terminateAllInstancesRequest" wsaw:Action="urn:terminateAllInstances"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:terminateAllInstancesCloudControllerServiceInvalidClusterException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterDockerService">
- <wsdl:input message="ns:unregisterDockerServiceRequest" wsaw:Action="urn:unregisterDockerService"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterDockerServiceCloudControllerServiceUnregisteredClusterException"/>
+ <wsdl:input message="ns:unregisterDockerServiceRequest" wsaw:Action="urn:unregisterDockerService"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredClusterException" name="CloudControllerServiceUnregisteredClusterException" wsaw:Action="urn:unregisterDockerServiceCloudControllerServiceUnregisteredClusterException"></wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="getRegisteredCartridges">
+ <wsdl:input message="ns:getRegisteredCartridgesRequest" wsaw:Action="urn:getRegisteredCartridges"></wsdl:input>
+ <wsdl:output message="ns:getRegisteredCartridgesResponse" wsaw:Action="urn:getRegisteredCartridgesResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="startInstance">
- <wsdl:input message="ns:startInstanceRequest" wsaw:Action="urn:startInstance"/>
- <wsdl:output message="ns:startInstanceResponse" wsaw:Action="urn:startInstanceResponse"/>
- <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startInstanceCloudControllerServiceUnregisteredCartridgeException"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:startInstanceCloudControllerServiceInvalidIaasProviderException"/>
+ <wsdl:input message="ns:startInstanceRequest" wsaw:Action="urn:startInstance"></wsdl:input>
+ <wsdl:output message="ns:startInstanceResponse" wsaw:Action="urn:startInstanceResponse"></wsdl:output>
+ <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:startInstanceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidIaasProviderException" name="CloudControllerServiceInvalidIaasProviderException" wsaw:Action="urn:startInstanceCloudControllerServiceInvalidIaasProviderException"></wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getClusterContext">
- <wsdl:input message="ns:getClusterContextRequest" wsaw:Action="urn:getClusterContext"/>
- <wsdl:output message="ns:getClusterContextResponse" wsaw:Action="urn:getClusterContextResponse"/>
+ <wsdl:input message="ns:getClusterContextRequest" wsaw:Action="urn:getClusterContext"></wsdl:input>
+ <wsdl:output message="ns:getClusterContextResponse" wsaw:Action="urn:getClusterContextResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="updateKubernetesController">
- <wsdl:input message="ns:updateKubernetesControllerRequest" wsaw:Action="urn:updateKubernetesController"/>
- <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:updateKubernetesControllerCloudControllerServiceInvalidClusterException"/>
+ <wsdl:input message="ns:updateKubernetesControllerRequest" wsaw:Action="urn:updateKubernetesController"></wsdl:input>
+ <wsdl:fault message="ns:CloudControllerServiceInvalidClusterException" name="CloudControllerServiceInvalidClusterException" wsaw:Action="urn:updateKubernetesControllerCloudControllerServiceInvalidClusterException"></wsdl:fault>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CloudControllerServiceSoap11Binding" type="ns:CloudControllerServicePortType">
- <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
<wsdl:operation name="validatePartition">
- <soap:operation soapAction="urn:validatePartition" style="document"/>
+ <soap:operation soapAction="urn:validatePartition" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidPartitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="validateDeploymentPolicy">
- <soap:operation soapAction="urn:validateDeploymentPolicy" style="document"/>
+ <soap:operation soapAction="urn:validateDeploymentPolicy" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidPartitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidPartitionException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateInstance">
- <soap:operation soapAction="urn:terminateInstance" style="document"/>
+ <soap:operation soapAction="urn:terminateInstance" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidMemberException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidMemberException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidMemberException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="startContainers">
- <soap:operation soapAction="urn:startContainers" style="document"/>
+ <soap:operation soapAction="urn:startContainers" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="registerService">
- <soap:operation soapAction="urn:registerService" style="document"/>
+ <soap:operation soapAction="urn:registerService" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deployCartridgeDefinition">
- <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"/>
+ <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"></soap:body>
+ </wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceInvalidIaasProviderException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getCartridgeInfo">
- <soap:operation soapAction="urn:getCartridgeInfo" style="document"/>
+ <soap:operation soapAction="urn:getCartridgeInfo" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredCartridgeException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllContainers">
- <soap:operation soapAction="urn:terminateAllContainers" style="document"/>
+ <soap:operation soapAction="urn:terminateAllContainers" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidClusterException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="unregisterService">
- <soap:operation soapAction="urn:unregisterService" style="document"/>
+ <soap:operation soapAction="urn:unregisterService" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"></soap:body>
+ </wsdl:output>
<wsdl:fault name="CloudControllerServiceUnregisteredClusterException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"/>
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="undeployCartridgeDefinition">
- <soap:operation soapAction="urn:undeployCartridgeDefinition" style="document"/>
+ <soap:operation soapAction="urn:undeployCartridgeDefinition" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal"></soap:body>
+ </wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidCartridgeTypeException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeTypeException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="terminateAllInstances">
- <soap:operation soapAction="urn:terminateAllInstances" style="document"/>
+ <soap:operation soapAction="urn:terminateAllInstances" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:fault name="CloudControllerServiceInvalidClusterException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"/>
- </wsdl:fault>
- </wsdl:operation>
- <wsdl:operation name="unregisterDockerService">
- <soap:operation soapAction="urn:unregisterDockerService" style="document"/>
- <wsdl:input>
- <soap:body use="literal"/>
- </wsdl:input>
- <wsdl:fault name="CloudControllerServiceUnregisteredClusterException">
- <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidClusterException"></soap:fault>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getRegisteredCartridges">
- <soap:operation soapAction="urn:getRegisteredCartridges" style="document"/>
+ <soap:operation soapAction="urn:getRegisteredCartridges" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
</wsdl:operation>
+ <wsdl:operation name="unregisterDockerService">
+ <soap:operation soapAction="urn:unregisterDockerService" style="document"></soap:operation>
+ <wsdl:input>
+ <soap:body use="literal"></soap:body>
+ </wsdl:input>
+ <wsdl:fault name="CloudControllerServiceUnregisteredClusterException">
+ <soap:fault use="literal" name="CloudControllerServiceUnregisteredClusterException"></soap:fault>
+ </wsdl:fault>
+ </wsdl:operation>
<wsdl:operation name="startInstance">
- <soap:operation soapAction="urn:startInstance" style="document"/>
+ <soap:operation soapAction="urn:startInstance" style="document"></soap:operation>
<wsdl:input>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:input>
<wsdl:output>
- <soap:body use="literal"/>
+ <soap:body use="literal"></soap:body>
</wsdl:output>
<wsdl:fault name="CloudControllerServiceInvalidIaasProviderException">
- <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"/>
+ <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault>
</wsdl:fault>
<wsdl:fault name="CloudControllerServiceUnregisteredCartrid
<TRUNCATED>
[22/27] git commit: Temporarily fixing Kubernetes cluster monitor to
work with new CC APIs.
Posted by ni...@apache.org.
Temporarily fixing Kubernetes cluster monitor to work with new CC APIs.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a381f825
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a381f825
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a381f825
Branch: refs/heads/container-autoscaling
Commit: a381f8251fd196abf1b8c5bdf7e0e296c656d3a9
Parents: fbb8eb9
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:11:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/CloudControllerClient.java | 2 +-
.../KubernetesServiceClusterMonitor.java | 61 +++++++++++---------
2 files changed, 36 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/a381f825/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index 296182f..eaa80c4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -238,7 +238,7 @@ public class CloudControllerClient {
* @return
* @throws SpawningException
*/
- public synchronized MemberContext[] createContainer(String kubernetesClusterId, String clusterId) throws SpawningException {
+ public synchronized MemberContext[] createContainers(String kubernetesClusterId, String clusterId) throws SpawningException {
try {
KubernetesManager kubernetesManager = KubernetesManager.getInstance();
http://git-wip-us.apache.org/repos/asf/stratos/blob/a381f825/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
index 6e14ce0..6362fc4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/KubernetesServiceClusterMonitor.java
@@ -91,49 +91,58 @@ public final class KubernetesServiceClusterMonitor extends KubernetesClusterMoni
TopologyManager.releaseReadLock();
}
- // is container created successfully?
- boolean success = false;
String kubernetesClusterId = getKubernetesClusterCtxt().getKubernetesClusterID();
int activeMembers = getKubernetesClusterCtxt().getActiveMembers().size();
int pendingMembers = getKubernetesClusterCtxt().getPendingMembers().size();
int nonTerminatedMembers = activeMembers + pendingMembers;
+ log.info(KubernetesServiceClusterMonitor.class.getName()+" is running.... Active Members: "+activeMembers
+ + " Pending Members: "+pendingMembers);
+
+ if (nonTerminatedMembers > 0 && nonTerminatedMembers < minReplicas) {
+ // update
+ int requiredReplicas = minReplicas - nonTerminatedMembers;
+ log.info("Required replicas : "+requiredReplicas);
+
+ } else if (nonTerminatedMembers >= minReplicas) {
+ // TODO autoscale
+ log.info("Current member count : "+nonTerminatedMembers);
+ } else {
+ try {
+ CloudControllerClient ccClient = CloudControllerClient.getInstance();
+ MemberContext[] memberContexts = ccClient.createContainers(kubernetesClusterId,
+ getClusterId());
+ for (MemberContext memberContext : memberContexts) {
- if (nonTerminatedMembers == 0) {
- while (!success) {
- try {
- CloudControllerClient ccClient = CloudControllerClient.getInstance();
- MemberContext memberContext = ccClient.createContainer(kubernetesClusterId, getClusterId());
if (null != memberContext) {
getKubernetesClusterCtxt().addPendingMember(memberContext);
- success = true;
- numberOfReplicasInServiceCluster = minReplicas;
if (log.isDebugEnabled()) {
- log.debug(String.format("Pending member added, [member] %s [kub cluster] %s",
- memberContext.getMemberId(), kubernetesClusterId));
+ log.debug(String.format(
+ "Pending member added, [member] %s [kub cluster] %s",
+ memberContext.getMemberId(), kubernetesClusterId));
}
} else {
if (log.isDebugEnabled()) {
log.debug("Returned member context is null, did not add to pending members");
}
}
- } catch (SpawningException spawningException) {
- if (log.isDebugEnabled()) {
- String message = "Cannot create containers, will retry in "
- + (retryInterval / 1000) + "s";
- log.debug(message, spawningException);
- }
- } catch (Exception exception) {
- if (log.isDebugEnabled()) {
- String message = "Error while creating containers, will retry in "
- + (retryInterval / 1000) + "s";
- log.debug(message, exception);
- }
}
- try {
- Thread.sleep(retryInterval);
- } catch (InterruptedException ignored) {
+ } catch (SpawningException spawningException) {
+ if (log.isDebugEnabled()) {
+ String message = "Cannot create containers, will retry in "
+ + (retryInterval / 1000) + "s";
+ log.debug(message, spawningException);
+ }
+ } catch (Exception exception) {
+ if (log.isDebugEnabled()) {
+ String message = "Error while creating containers, will retry in "
+ + (retryInterval / 1000) + "s";
+ log.debug(message, exception);
}
}
+ try {
+ Thread.sleep(retryInterval);
+ } catch (InterruptedException ignored) {
+ }
}
}
[27/27] git commit: Need to wait a bit before executing the label
query.
Posted by ni...@apache.org.
Need to wait a bit before executing the label query.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/87b0ba14
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/87b0ba14
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/87b0ba14
Branch: refs/heads/container-autoscaling
Commit: 87b0ba14aeb941596a21f9dd8dad524247e1ac4a
Parents: d5e497f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:05:04 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../controller/impl/CloudControllerServiceImpl.java | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/87b0ba14/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index a413882..4042140 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1413,11 +1413,20 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ controller + " via Kubernetes layer.");
}
+ // needs to wait few seconds before running label queries
+ Thread.sleep(3000);
+
// create a label query
Label l = new Label();
l.setName(clusterId);
// execute the label query
Pod[] newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+
+ if (log.isDebugEnabled()) {
+
+ log.debug(String.format("Pods created : %s for cluster : %s",newlyCreatedPods.length, clusterId));
+ }
+
List<MemberContext> memberContexts = new ArrayList<MemberContext>();
PodToMemberContext podToMemberContextFunc = new PodToMemberContext();
@@ -1447,7 +1456,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
// persist in registry
persist();
- log.info("Kubernetes entities are successfully starting up. "+containerClusterContext.toString());
+ log.info("Kubernetes entities are successfully starting up. "+memberContexts);
return memberContexts.toArray(new MemberContext[0]);
[14/27] git commit: on start containers method,
do a label query and find the Pods being created and creating
corresponding MemberContexts.
Posted by ni...@apache.org.
on start containers method, do a label query and find the Pods being created and creating corresponding MemberContexts.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/55150013
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/55150013
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/55150013
Branch: refs/heads/container-autoscaling
Commit: 55150013c6122d6217a5e1235cd1a8ae8f5baf64
Parents: 1dddf29
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 18:15:22 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../impl/CloudControllerServiceImpl.java | 166 ++++++++++---------
1 file changed, 87 insertions(+), 79 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/55150013/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 18269e6..a413882 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -28,8 +28,9 @@ import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable
import org.apache.stratos.cloud.controller.concurrent.ThreadExecutor;
import org.apache.stratos.cloud.controller.deployment.partition.Partition;
import org.apache.stratos.cloud.controller.exception.*;
-import org.apache.stratos.cloud.controller.functions.MemberContextToKubernetesService;
-import org.apache.stratos.cloud.controller.functions.MemberContextToReplicationController;
+import org.apache.stratos.cloud.controller.functions.ContainerClusterContextToKubernetesService;
+import org.apache.stratos.cloud.controller.functions.ContainerClusterContextToReplicationController;
+import org.apache.stratos.cloud.controller.functions.PodToMemberContext;
import org.apache.stratos.cloud.controller.interfaces.CloudControllerService;
import org.apache.stratos.cloud.controller.interfaces.Iaas;
import org.apache.stratos.cloud.controller.persist.Deserializer;
@@ -45,6 +46,8 @@ import org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidato
import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.kubernetes.client.KubernetesApiClient;
import org.apache.stratos.kubernetes.client.exceptions.KubernetesClientException;
+import org.apache.stratos.kubernetes.client.model.Label;
+import org.apache.stratos.kubernetes.client.model.Pod;
import org.apache.stratos.kubernetes.client.model.ReplicationController;
import org.apache.stratos.kubernetes.client.model.Service;
import org.apache.stratos.messaging.domain.topology.Member;
@@ -1330,33 +1333,32 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
@Override
- public MemberContext startContainers(MemberContext memberContext)
+ public MemberContext[] startContainers(ContainerClusterContext containerClusterContext)
throws UnregisteredCartridgeException {
if(log.isDebugEnabled()) {
- log.debug("CloudControllerServiceImpl:startContainer");
+ log.debug("CloudControllerServiceImpl:startContainers");
}
- if (memberContext == null) {
- String msg = "Instance start-up failed. Member is null.";
+ if (containerClusterContext == null) {
+ String msg = "Instance start-up failed. ContainerClusterContext is null.";
log.error(msg);
throw new IllegalArgumentException(msg);
}
- String clusterId = memberContext.getClusterId();
+ String clusterId = containerClusterContext.getClusterId();
if(log.isDebugEnabled()) {
- log.debug("Received an instance spawn request : " + memberContext.toString());
+ log.debug("Received an instance spawn request : " + containerClusterContext.toString());
}
ClusterContext ctxt = dataHolder.getClusterContext(clusterId);
if (ctxt == null) {
- String msg = "Instance start-up failed. Invalid cluster id. " + memberContext.toString();
+ String msg = "Instance start-up failed. Invalid cluster id. " + containerClusterContext.toString();
log.error(msg);
throw new IllegalArgumentException(msg);
}
-
String cartridgeType = ctxt.getCartridgeType();
Cartridge cartridge = dataHolder.getCartridge(cartridgeType);
@@ -1364,59 +1366,28 @@ public class CloudControllerServiceImpl implements CloudControllerService {
if (cartridge == null) {
String msg =
"Instance start-up failed. No matching Cartridge found [type] "+cartridgeType +". "+
- memberContext.toString();
+ containerClusterContext.toString();
log.error(msg);
throw new UnregisteredCartridgeException(msg);
}
- memberContext.setCartridgeType(cartridgeType);
-
try {
- // generating the Unique member ID...
- String memberID = generateMemberId(clusterId);
- memberContext.setMemberId(memberID);
-
- String kubernetesClusterId = CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.KUBERNETES_CLUSTER_ID);
-
- if (kubernetesClusterId == null) {
- String msg = "Instance start-up failed. Cannot find '"+
- StratosConstants.KUBERNETES_CLUSTER_ID+"'. " + ctxt;
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
-
- String kubernetesMasterIp = CloudControllerUtil.getProperty(memberContext.getProperties(),
- StratosConstants.KUBERNETES_MASTER_IP);
-
- if (kubernetesMasterIp == null) {
- String msg = "Instance start-up failed. Cannot find '"+
- StratosConstants.KUBERNETES_MASTER_IP+"'. " + memberContext;
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
-
- String kubernetesPortRange = CloudControllerUtil.getProperty(memberContext.getProperties(),
- StratosConstants.KUBERNETES_PORT_RANGE);
-
- if (kubernetesPortRange == null) {
- String msg = "Instance start-up failed. Cannot find '"+
- StratosConstants.KUBERNETES_PORT_RANGE+"'. " + memberContext;
- log.error(msg);
- throw new IllegalArgumentException(msg);
- }
+ validateProperty(StratosConstants.KUBERNETES_MIN_REPLICAS, ctxt);
+ String kubernetesClusterId = validateProperty(StratosConstants.KUBERNETES_CLUSTER_ID, ctxt);
+ String kubernetesMasterIp = validateProperty(StratosConstants.KUBERNETES_MASTER_IP, containerClusterContext);
+ String kubernetesPortRange = validateProperty(StratosConstants.KUBERNETES_PORT_RANGE, containerClusterContext);
KubernetesClusterContext kubClusterContext = getKubernetesClusterContext(kubernetesClusterId, kubernetesMasterIp, kubernetesPortRange);
KubernetesApiClient kubApi = kubClusterContext.getKubApi();
// first let's create a replication controller.
- MemberContextToReplicationController controllerFunction = new MemberContextToReplicationController();
- ReplicationController controller = controllerFunction.apply(memberContext);
+ ContainerClusterContextToReplicationController controllerFunction = new ContainerClusterContextToReplicationController();
+ ReplicationController controller = controllerFunction.apply(containerClusterContext);
if (log.isDebugEnabled()) {
log.debug("Cloud Controller is delegating request to start a replication controller "+controller+
- " for "+ memberContext + " to Kubernetes layer.");
+ " for "+ containerClusterContext + " to Kubernetes layer.");
}
kubApi.createReplicationController(controller);
@@ -1427,12 +1398,12 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
// secondly let's create a kubernetes service proxy to load balance these containers
- MemberContextToKubernetesService serviceFunction = new MemberContextToKubernetesService();
- Service service = serviceFunction.apply(memberContext);
+ ContainerClusterContextToKubernetesService serviceFunction = new ContainerClusterContextToKubernetesService();
+ Service service = serviceFunction.apply(containerClusterContext);
if (log.isDebugEnabled()) {
log.debug("Cloud Controller is delegating request to start a service "+service+
- " for "+ memberContext + " to Kubernetes layer.");
+ " for "+ containerClusterContext + " to Kubernetes layer.");
}
kubApi.createService(service);
@@ -1442,44 +1413,81 @@ public class CloudControllerServiceImpl implements CloudControllerService {
+ controller + " via Kubernetes layer.");
}
- memberContext.setPublicIpAddress(kubernetesMasterIp);
- memberContext.setPrivateIpAddress(kubernetesMasterIp);
- memberContext.setProperties(CloudControllerUtil.addProperty(memberContext
- .getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
- CloudControllerUtil.getProperty(ctxt.getProperties(),
- StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
- dataHolder.addMemberContext(memberContext);
-
+ // create a label query
+ Label l = new Label();
+ l.setName(clusterId);
+ // execute the label query
+ Pod[] newlyCreatedPods = kubApi.getSelectedPods(new Label[]{l});
+ List<MemberContext> memberContexts = new ArrayList<MemberContext>();
+
+ PodToMemberContext podToMemberContextFunc = new PodToMemberContext();
+ // generate Member Contexts
+ for (Pod pod : newlyCreatedPods) {
+ MemberContext context = podToMemberContextFunc.apply(pod);
+ context.setCartridgeType(cartridgeType);
+ context.setClusterId(clusterId);
+
+ context.setProperties(CloudControllerUtil.addProperty(containerClusterContext
+ .getProperties(), StratosConstants.ALLOCATED_SERVICE_HOST_PORT,
+ CloudControllerUtil.getProperty(ctxt.getProperties(),
+ StratosConstants.ALLOCATED_SERVICE_HOST_PORT)));
+ dataHolder.addMemberContext(context);
+
+ // trigger topology
+ // update the topology with the newly spawned member
+ TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
+ kubernetesMasterIp, kubernetesMasterIp, context);
+ // publish data
+ // TODO
+// CartridgeInstanceDataPublisher.publish(context.getMemberId(), null, null, context.getClusterId(), cartridgeType, MemberStatus.Created.toString(), node);
+
+ memberContexts.add(context);
+ }
+
// persist in registry
persist();
- // trigger topology
- // update the topology with the newly spawned member
- TopologyBuilder.handleMemberSpawned(cartridgeType, clusterId, null,
- kubernetesMasterIp, kubernetesMasterIp, memberContext);
-
- // publish data
- // TODO
- // CartridgeInstanceDataPublisher.publish(memberID,
- // memberContext.getPartition().getId(),
- // memberContext.getNetworkPartitionId(),
- // memberContext.getClusterId(),
- // cartridgeType,
- // MemberStatus.Created.toString(),
- // node);
+ log.info("Kubernetes entities are successfully starting up. "+containerClusterContext.toString());
- log.info("Kubernetes entities are successfully starting up. "+memberContext.toString());
-
- return memberContext;
+ return memberContexts.toArray(new MemberContext[0]);
} catch (Exception e) {
- String msg = "Failed to start an instance. " + memberContext.toString()+" Cause: "+e.getMessage();
+ String msg = "Failed to start an instance. " + containerClusterContext.toString()+" Cause: "+e.getMessage();
log.error(msg, e);
throw new IllegalStateException(msg, e);
}
}
- private KubernetesClusterContext getKubernetesClusterContext(
+ private String validateProperty(String property, ClusterContext ctxt) {
+
+ String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
+
+ if (propVal == null) {
+ String msg = "Instance start-up failed. Cannot find '"+
+ StratosConstants.KUBERNETES_MIN_REPLICAS+"' in " + ctxt;
+ log.error(msg);
+ throw new IllegalArgumentException(msg);
+ }
+
+ return propVal;
+ }
+
+ private String validateProperty(String property, ContainerClusterContext ctxt) {
+
+ String propVal = CloudControllerUtil.getProperty(ctxt.getProperties(), property);
+
+ if (propVal == null) {
+ String msg = "Instance start-up failed. Cannot find '"+
+ StratosConstants.KUBERNETES_MIN_REPLICAS+"' in " + ctxt;
+ log.error(msg);
+ throw new IllegalArgumentException(msg);
+ }
+
+ return propVal;
+
+ }
+
+ private KubernetesClusterContext getKubernetesClusterContext(
String kubernetesClusterId, String kubernetesMasterIp,
String kubernetesPortRange) {
[04/27] git commit: Refactor CC client to use new CC container API.
Posted by ni...@apache.org.
Refactor CC client to use new CC container API.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8b5048a1
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8b5048a1
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8b5048a1
Branch: refs/heads/container-autoscaling
Commit: 8b5048a14c999d6116bdeecaad70a8da90718d59
Parents: 67bb746
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Tue Oct 7 18:21:18 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:29 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/CloudControllerClient.java | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/8b5048a1/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
index d554cec..296182f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/cloud/controller/CloudControllerClient.java
@@ -24,17 +24,16 @@ import org.apache.commons.configuration.XMLConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.Constants;
-import org.apache.stratos.autoscaler.api.AutoScalerServiceImpl;
import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
import org.apache.stratos.autoscaler.exception.NonExistingKubernetesGroupException;
import org.apache.stratos.autoscaler.exception.PartitionValidationException;
import org.apache.stratos.autoscaler.exception.SpawningException;
import org.apache.stratos.autoscaler.exception.TerminationException;
-import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
import org.apache.stratos.autoscaler.kubernetes.KubernetesManager;
import org.apache.stratos.autoscaler.util.ConfUtil;
import org.apache.stratos.cloud.controller.stub.*;
import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
+import org.apache.stratos.cloud.controller.stub.pojo.ContainerClusterContext;
import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
import org.apache.stratos.cloud.controller.stub.pojo.Properties;
import org.apache.stratos.cloud.controller.stub.pojo.Property;
@@ -239,7 +238,7 @@ public class CloudControllerClient {
* @return
* @throws SpawningException
*/
- public synchronized MemberContext createContainer(String kubernetesClusterId, String clusterId) throws SpawningException {
+ public synchronized MemberContext[] createContainer(String kubernetesClusterId, String clusterId) throws SpawningException {
try {
KubernetesManager kubernetesManager = KubernetesManager.getInstance();
@@ -250,9 +249,8 @@ public class CloudControllerClient {
int upper = kubernetesGroup.getPortRange().getUpper();
String portRange = Integer.toString(lower) + "-" + Integer.toString(upper);
- MemberContext member = new MemberContext();
- member.setClusterId(clusterId);
- member.setInitTime(System.currentTimeMillis());
+ ContainerClusterContext context = new ContainerClusterContext();
+ context.setClusterId(clusterId);
Properties memberContextProps = new Properties();
Property kubernetesClusterMasterIPProps = new Property();
kubernetesClusterMasterIPProps.setName(StratosConstants.KUBERNETES_MASTER_IP);
@@ -262,15 +260,15 @@ public class CloudControllerClient {
kubernetesClusterPortRangeProps.setName(StratosConstants.KUBERNETES_PORT_RANGE);
kubernetesClusterPortRangeProps.setValue(portRange);
memberContextProps.addProperties(kubernetesClusterPortRangeProps);
- member.setProperties(memberContextProps);
+ context.setProperties(memberContextProps);
long startTime = System.currentTimeMillis();
- MemberContext memberContext = stub.startContainers(member);
+ MemberContext[] memberContexts = stub.startContainers(context);
if(log.isDebugEnabled()) {
long endTime = System.currentTimeMillis();
log.debug(String.format("Service call startContainer() returned in %dms", (endTime - startTime)));
}
- return memberContext;
+ return memberContexts;
} catch (CloudControllerServiceUnregisteredCartridgeExceptionException e) {
String message = e.getFaultMessage().getUnregisteredCartridgeException().getMessage();
log.error(message, e);
[23/27] git commit: Excluding incorrect http client versions from
stratos product and removing unused jars.
Posted by ni...@apache.org.
Excluding incorrect http client versions from stratos product and removing unused jars.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fbb8eb9f
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fbb8eb9f
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fbb8eb9f
Branch: refs/heads/container-autoscaling
Commit: fbb8eb9f4d1683d480af51c74a978a424fe6f78f
Parents: b7222b3
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 19:09:13 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
products/stratos/modules/distribution/src/assembly/bin.xml | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/fbb8eb9f/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/assembly/bin.xml b/products/stratos/modules/distribution/src/assembly/bin.xml
index e244ea4..a318f5c 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -72,6 +72,8 @@
<exclude>**/marshalling_1.3.6.wso2v1.jar</exclude>
<exclude>**/jboss-transaction-api_1.1_spec-1.0.0.Final.jar</exclude>
<exclude>**/org.wso2.carbon.ui_4.2.0.jar</exclude>
+ <exclude>**/httpclient_4.1.1.wso2v1.jar</exclude>
+ <exclude>**/httpcore_4.1.0.wso2v1.jar</exclude>
</excludes>
</fileSet>
@@ -605,10 +607,6 @@
<include>org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar</include>
<include>org.fusesource.hawtbuf:hawtbuf:jar</include>
<include>org.eclipse.paho:mqtt-client:jar</include>
- <include>org.apache.stratos:org.apache.stratos.kubernetes.client:jar</include>
- <include>org.jboss.resteasy:resteasy-jaxrs:jar</include>
- <include>org.jboss.resteasy:resteasy-jaxb-provider:jar</include>
- <include>org.jboss.resteasy:resteasy-jackson-provider:jar</include>
</includes>
</dependencySet>
<dependencySet>
[26/27] git commit: Regenerate MemberContext.toString
Posted by ni...@apache.org.
Regenerate MemberContext.toString
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ed4970dc
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ed4970dc
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ed4970dc
Branch: refs/heads/container-autoscaling
Commit: ed4970dc1a5c361aceb49425fc686ad230e9c50d
Parents: ac03322
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:55:37 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Oct 8 22:21:30 2014 +0530
----------------------------------------------------------------------
.../cloud/controller/pojo/MemberContext.java | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ed4970dc/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
index dd6013a..ec67b46 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/MemberContext.java
@@ -146,15 +146,6 @@ public class MemberContext implements Serializable {
this.networkPartitionId = networkPartitionId;
}
- @Override
- public String toString() {
- return "MemberContext [memberId=" + memberId + ", nodeId=" + nodeId + ", clusterId=" +
- clusterId + ", cartridgeType=" + cartridgeType + ", privateIpAddress=" +
- privateIpAddress + ", publicIpAddress=" + publicIpAddress + ", allocatedIpAddress=" +
- allocatedIpAddress + ", initTime=" + initTime + ", lbClusterId=" + lbClusterId +
- ", networkPartitionId=" + networkPartitionId + "]";
- }
-
@Override
public int hashCode() {
final int prime = 31;
@@ -209,5 +200,15 @@ public class MemberContext implements Serializable {
public void setProperties(Properties properties) {
this.properties = properties;
}
+
+ @Override
+ public String toString() {
+ return "MemberContext [memberId=" + memberId + ", nodeId=" + nodeId + ", instanceId="
+ + instanceId + ", clusterId=" + clusterId + ", partition=" + partition
+ + ", cartridgeType=" + cartridgeType + ", privateIpAddress=" + privateIpAddress
+ + ", publicIpAddress=" + publicIpAddress + ", allocatedIpAddress="
+ + allocatedIpAddress + ", initTime=" + initTime + ", lbClusterId=" + lbClusterId
+ + ", networkPartitionId=" + networkPartitionId + ", properties=" + properties + "]";
+ }
}