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/11 06:12:52 UTC

[06/50] [abbrv] git commit: Refactor RestClient to return KubernetesResponses.

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/e15c1c39
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e15c1c39
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e15c1c39

Branch: refs/heads/master
Commit: e15c1c39d22ff6bfb637c56bf0589b88ceba1731
Parents: 8635c6f
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Wed Oct 8 18:52:43 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sat Oct 11 09:30:55 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/e15c1c39/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/e15c1c39/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;