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 + "]";
+    }
     
 }