Implement updateReplicationController API operation to change number of 
replicas.


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

Branch: refs/heads/docker-integration
Commit: 4087938ed6450d8d0739e973d48d64d200c0c8f5
Parents: 85ee2f3
Author: Nirmal Fernando <[email protected]>
Authored: Sun Sep 21 22:31:32 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Sun Sep 21 22:31:32 2014 +0530

----------------------------------------------------------------------
 .../kubernetes/client/KubernetesApiClient.java  | 43 ++++++++++++++++++++
 .../KubernetesAPIClientInterface.java           |  8 ++++
 2 files changed, 51 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/4087938e/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 68e9ad0..d3137ee 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
@@ -252,6 +252,49 @@ public class KubernetesApiClient implements 
KubernetesAPIClientInterface {
        }
 
        @Override
+       public void updateReplicationController(String controllerId, int 
replicas)
+                       throws KubernetesClientException {
+               ReplicationController controller = null;
+               
+               // gets the current controller
+               controller = getReplicationController(controllerId);
+               
+               try {
+
+                       // update the number of replicas
+                       controller.getDesiredState().setReplicas(replicas);
+                       
+                       GsonBuilder gsonBuilder = new GsonBuilder();
+                       Gson gson = gsonBuilder.create();
+                       String content = gson.toJson(controller);
+                       if (log.isDebugEnabled()) {
+                               log.debug("UpdateReplicationController Request 
Body : "
+                                               + content);
+                       }
+                       HttpResponse res = 
restClient.doPut("replicationControllers/"+controller.getId(),
+                                       content);
+
+                       if (res.getStatusLine().getStatusCode() != 
HttpStatus.SC_ACCEPTED
+                                       && res.getStatusLine().getStatusCode() 
!= HttpStatus.SC_OK) {
+                               String msg = "Replication Controller [" + 
controller
+                                               + "] update failed. Error: "
+                                               + 
res.getStatusLine().getReasonPhrase();
+                               log.error(msg);
+                               throw new KubernetesClientException(msg);
+                       }
+
+               } catch (KubernetesClientException e) {
+                       throw e;
+               } catch (Exception e) {
+                       String msg = "Error while updating Replication 
Controller: "
+                                       + controller;
+                       log.error(msg, e);
+                       throw new KubernetesClientException(msg, e);
+
+               }
+       }
+       
+       @Override
        public void deleteReplicationController(String controllerId)
                        throws KubernetesClientException {
                

http://git-wip-us.apache.org/repos/asf/stratos/blob/4087938e/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 77b15ef..51570de 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
@@ -82,6 +82,14 @@ public interface KubernetesAPIClientInterface {
        public void createReplicationController(ReplicationController 
controller) throws KubernetesClientException;
        
        /**
+        * Update a Replication Controller (update the number of replicas).
+        * @param controllerId id of the controller to be updated
+        * @param replicas update the replicas count of the current controller.
+        * @throws KubernetesClientException
+        */
+       public void updateReplicationController(String controllerId, int 
replicas) throws KubernetesClientException;
+       
+       /**
         * Delete a Replication Controller.
         * @param replication controller id controller id to be deleted.
         * @throws KubernetesClientException

Reply via email to