From d37d17a75ef78fc05b2038c01e47b6b46aab60e4 Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Tue, 21 Jun 2011 21:17:09 +0530 Subject: REST API enhancements --- .../storage/management/client/AbstractClient.java | 83 ++++++++++++---------- .../storage/management/client/ClustersClient.java | 45 ++++++------ .../management/client/GlusterServersClient.java | 17 +++-- .../storage/management/client/TasksClient.java | 16 ++--- .../storage/management/client/UsersClient.java | 9 ++- .../storage/management/client/VolumesClient.java | 30 ++++---- 6 files changed, 105 insertions(+), 95 deletions(-) (limited to 'src/com.gluster.storage.management.client') diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java index 282b45b5..f38c1a5f 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java @@ -23,6 +23,7 @@ import com.gluster.storage.management.client.utils.ClientUtil; import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.UniformInterfaceException; import com.sun.jersey.api.client.WebResource; import com.sun.jersey.api.client.config.DefaultClientConfig; import com.sun.jersey.api.representation.Form; @@ -120,7 +121,7 @@ public abstract class AbstractClient { */ @SuppressWarnings({ "unchecked", "rawtypes" }) private Object fetchResource(WebResource res, MultivaluedMap queryParams, Class responseClass) { - return res.queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML) + return res.queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML) .get(responseClass); } @@ -214,16 +215,16 @@ public abstract class AbstractClient { /** * Submits given Form using POST method to the resource and returns the object received as response * - * @param responseClass - * Class of the object expected as response * @param form * Form to be submitted - * @return Object of given class received as response */ - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected Object postRequest(Class responseClass, Form form) { - return resource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).header(HTTP_HEADER_AUTH, authHeader) - .accept(MediaType.TEXT_XML).post(responseClass, form); + protected void postRequest(Form form) { + try { + resource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).header(HTTP_HEADER_AUTH, authHeader) + .accept(MediaType.APPLICATION_XML).post(form); + } catch (UniformInterfaceException e) { + throw new GlusterRuntimeException(e.getResponse().getEntity(String.class)); + } } /** @@ -231,16 +232,16 @@ public abstract class AbstractClient { * * @param subResourceName * Name of the sub-resource to which the request is to be posted - * @param responseClass - * Class of the object expected as response * @param form * Form to be submitted - * @return Object of given class received as response */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected Object postRequest(String subResourceName, Class responseClass, Form form) { - return resource.path(subResourceName).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) - .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML).post(responseClass, form); + protected void postRequest(String subResourceName, Form form) { + try { + resource.path(subResourceName).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) + .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML).post(form); + } catch (UniformInterfaceException e) { + throw new GlusterRuntimeException(e.getResponse().getEntity(String.class)); + } } /** @@ -248,29 +249,31 @@ public abstract class AbstractClient { * * @param subResourceName * Name of the sub-resource to which the request is to be posted - * @param responseClass - * Class of the object expected as response * @param form * Form to be submitted - * @return Object of given class received as response */ - protected Object putRequest(String subResourceName, Class responseClass, Form form) { - return resource.path(subResourceName).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) - .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML).put(responseClass, form); + protected void putRequest(String subResourceName, Form form) { + try { + resource.path(subResourceName).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) + .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML).put(form); + } catch (UniformInterfaceException e) { + throw new GlusterRuntimeException(e.getResponse().getEntity(String.class)); + } } /** * Submits given Form using PUT method to the given sub-resource and returns the object received as response * - * @param responseClass - * Class of the object expected as response * @param form * Form to be submitted - * @return Object of given class received as response */ - protected Object putRequest(Class responseClass, Form form) { - return resource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).header(HTTP_HEADER_AUTH, authHeader) - .accept(MediaType.TEXT_XML).put(responseClass, form); + protected void putRequest(Form form) { + try { + resource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).header(HTTP_HEADER_AUTH, authHeader) + .accept(MediaType.APPLICATION_XML).put(form); + } catch(UniformInterfaceException e) { + throw new GlusterRuntimeException(e.getResponse().getEntity(String.class)); + } } /** @@ -278,13 +281,14 @@ public abstract class AbstractClient { * * @param subResourceName * Name of the sub-resource to which the request is to be posted - * @param responseClass - * Class of the object expected as response - * @return Object of given class received as response */ - protected Object putRequest(String subResourceName, Class responseClass) { - return resource.path(subResourceName).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) - .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML).put(responseClass); + protected void putRequest(String subResourceName) { + try { + resource.path(subResourceName).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) + .header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML).put(); + } catch (UniformInterfaceException e) { + throw new GlusterRuntimeException(e.getResponse().getEntity(String.class)); + } } /** @@ -298,8 +302,8 @@ public abstract class AbstractClient { */ @SuppressWarnings({ "unchecked", "rawtypes" }) protected Object postObject(Class responseClass, Object requestObject) { - return resource.type(MediaType.TEXT_XML).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML) - .post(responseClass, requestObject); + return resource.type(MediaType.APPLICATION_XML).header(HTTP_HEADER_AUTH, authHeader) + .accept(MediaType.APPLICATION_XML).post(responseClass, requestObject); } @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -314,9 +318,12 @@ public abstract class AbstractClient { .delete(responseClass); } - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected Object deleteSubResource(String subResourceName, Class responseClass) { - return resource.path(subResourceName).header(HTTP_HEADER_AUTH, authHeader).delete(responseClass); + protected void deleteSubResource(String subResourceName) { + try { + resource.path(subResourceName).header(HTTP_HEADER_AUTH, authHeader).delete(); + } catch (UniformInterfaceException e) { + throw new GlusterRuntimeException(e.getResponse().getEntity(String.class)); + } } public abstract String getResourcePath(); diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ClustersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ClustersClient.java index 8eeb96fe..dadeadf8 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ClustersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/ClustersClient.java @@ -24,8 +24,9 @@ import static com.gluster.storage.management.core.constants.RESTConstants.RESOUR import java.util.List; +import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.gluster.storage.management.core.model.Status; -import com.gluster.storage.management.core.response.StringListResponse; +import com.gluster.storage.management.core.response.ClusterNameListResponse; import com.sun.jersey.api.representation.Form; /** @@ -49,25 +50,26 @@ public class ClustersClient extends AbstractClient { return RESOURCE_PATH_CLUSTERS; } - public StringListResponse getClusters() { - return (StringListResponse)fetchResource(StringListResponse.class); + public List getClusterNames() { + return ((ClusterNameListResponse)fetchResource(ClusterNameListResponse.class)).getClusterNames(); } - public Status createCluster(String clusterName) { + public void createCluster(String clusterName) { Form form = new Form(); form.add(FORM_PARAM_CLUSTER_NAME, clusterName); - return (Status)postRequest(Status.class, form); + + postRequest(form); } - public Status registerCluster(String clusterName, String knownServer) { + public void registerCluster(String clusterName, String knownServer) { Form form = new Form(); form.add(FORM_PARAM_CLUSTER_NAME, clusterName); form.add(FORM_PARAM_SERVER_NAME, knownServer); - return (Status)putRequest(Status.class, form); + putRequest(form); } - public Status deleteCluster(String clusterName) { - return (Status)deleteSubResource(clusterName, Status.class); + public void deleteCluster(String clusterName) { + deleteSubResource(clusterName); } public static void main(String args[]) { @@ -76,20 +78,21 @@ public class ClustersClient extends AbstractClient { if (authStatus.isSuccess()) { ClustersClient client = new ClustersClient(); client.setSecurityToken(usersClient.getSecurityToken()); - StringListResponse response = client.getClusters(); - List clusters = response.getData(); - if(clusters.size() == 0) { - Status status = client.createCluster("myCluster1"); - System.out.println(status); + System.out.println(client.getClusterNames()); + try { + client.createCluster("test1"); + } catch(GlusterRuntimeException e) { + System.out.println(e.getMessage()); } - response = client.getClusters(); - clusters = response.getData(); - System.out.println(clusters); - System.out.println(client.deleteCluster("myCluster1")); - response = client.getClusters(); - clusters = response.getData(); - System.out.println(clusters); + System.out.println(client.getClusterNames()); + + try { + client.deleteCluster("test1"); + } catch (GlusterRuntimeException e) { + System.out.println(e.getMessage()); + } + System.out.println(client.getClusterNames()); } else { System.out.println("authentication failed: " + authStatus); } diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java index 6c75b7c5..26129736 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java @@ -59,8 +59,9 @@ public class GlusterServersClient extends AbstractClient { } @SuppressWarnings("unchecked") - public Server getServer(String serverName) { - GenericResponse response = (GenericResponse) fetchSubResource(serverName, GenericResponse.class); + public GlusterServer getGlusterServer(String serverName) { + GenericResponse response = (GenericResponse) fetchSubResource(serverName, + GenericResponse.class); return response.getData(); } @@ -68,14 +69,14 @@ public class GlusterServersClient extends AbstractClient { return ((String) fetchSubResource(serverName, String.class)); } - public GlusterServerResponse addServer(Server discoveredServer) { + public void addServer(Server discoveredServer) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_SERVER_NAME, discoveredServer.getName()); - return (GlusterServerResponse)postRequest(GlusterServerResponse.class, form); + postRequest(form); } - public Status removeServer(String serverName) { - return (Status) deleteSubResource(serverName, Status.class); + public void removeServer(String serverName) { + deleteSubResource(serverName); } public static void main(String[] args) { @@ -90,9 +91,7 @@ public class GlusterServersClient extends AbstractClient { // Add server Server srv = new Server(); srv.setName("server3"); - GlusterServerResponse response = glusterServersClient.addServer(srv); - System.out.println(response.getGlusterServer().getName()); - System.out.println(response.getStatus().isSuccess()); + glusterServersClient.addServer(srv); } } } diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java index 9fab945c..54ba07e7 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java @@ -59,32 +59,32 @@ public class TasksClient extends AbstractClient { } // see startMigration @ VolumesClient, etc - public TaskResponse pauseTask(String taskId) { + public void pauseTask(String taskId) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_PAUSE); - return (TaskResponse) putRequest( taskId, TaskResponse.class, form); + putRequest( taskId, form); } - public TaskResponse resumeTask(String taskId) { + public void resumeTask(String taskId) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_RESUME); - return (TaskResponse) putRequest( taskId, TaskResponse.class, form); + putRequest(taskId, form); } - public TaskResponse stopTask(String taskId) { + public void stopTask(String taskId) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_STOP); - return (TaskResponse) putRequest( taskId, TaskResponse.class, form); + putRequest(taskId, form); } - public TaskResponse getTaskStatus(String taskId) { + public void getTaskStatus(String taskId) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_STATUS); - return (TaskResponse) putRequest( taskId, TaskResponse.class, form); + putRequest(taskId, form); } public TaskResponse deleteTask(String taskId) { diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java index 3d2310ac..84ed4e4c 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java @@ -75,9 +75,12 @@ public class UsersClient extends AbstractClient { Form form = new Form(); form.add(FORM_PARAM_OLD_PASSWORD, oldPassword); form.add(FORM_PARAM_NEW_PASSWORD, newPassword); - Status status = (Status) putRequest(user, Status.class, form); - - return status.isSuccess(); + try { + putRequest(user, form); + return true; + } catch (Exception e) { + return false; + } } public static void main(String[] args) { diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java index a0a2e84a..24ba119f 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java @@ -63,30 +63,30 @@ public class VolumesClient extends AbstractClient { return (Status) postObject(Status.class, volume); } - private Status performOperation(String volumeName, String operation) { + private void performOperation(String volumeName, String operation) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_OPERATION, operation); - return (Status) putRequest(volumeName, Status.class, form); + putRequest(volumeName, form); } - public Status startVolume(String volumeName) { - return performOperation(volumeName, RESTConstants.TASK_START); + public void startVolume(String volumeName) { + performOperation(volumeName, RESTConstants.TASK_START); } - public Status stopVolume(String volumeName) { - return performOperation(volumeName, RESTConstants.TASK_STOP); + public void stopVolume(String volumeName) { + performOperation(volumeName, RESTConstants.TASK_STOP); } - public Status setVolumeOption(String volume, String key, String value) { + public void setVolumeOption(String volume, String key, String value) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_OPTION_KEY, key); form.add(RESTConstants.FORM_PARAM_OPTION_VALUE, value); - return (Status) postRequest(volume + "/" + RESTConstants.RESOURCE_OPTIONS, Status.class, form); + postRequest(volume + "/" + RESTConstants.RESOURCE_OPTIONS, form); } - public Status resetVolumeOptions(String volume) { - return (Status) putRequest(volume + "/" + RESTConstants.RESOURCE_OPTIONS, Status.class); + public void resetVolumeOptions(String volume) { + putRequest(volume + "/" + RESTConstants.RESOURCE_OPTIONS); } public VolumeListResponse getAllVolumes() { @@ -108,11 +108,11 @@ public class VolumesClient extends AbstractClient { VolumeOptionInfoListResponse.class)); } - public Status addBricks(String volumeName, List brickList) { + public void addBricks(String volumeName, List brickList) { String bricks = StringUtil.ListToString(brickList, ","); Form form = new Form(); form.add(RESTConstants.FORM_PARAM_BRICKS, bricks); - return (Status) postRequest(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, Status.class, form); + postRequest(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form); } /** @@ -192,18 +192,16 @@ public class VolumesClient extends AbstractClient { return queryParams; } - public Status startMigration(String volumeName, String brickFrom, String brickTo, Boolean autoCommit) { + public void startMigration(String volumeName, String brickFrom, String brickTo, Boolean autoCommit) { Form form = new Form(); form.add(RESTConstants.FORM_PARAM_SOURCE, brickFrom); form.add(RESTConstants.FORM_PARAM_TARGET, brickTo); form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_START); form.add(RESTConstants.FORM_PARAM_AUTO_COMMIT, autoCommit); - return (Status) putRequest( volumeName + "/" + RESTConstants.RESOURCE_BRICKS, Status.class, form); + putRequest( volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form); } - - public static void main(String[] args) { UsersClient usersClient = new UsersClient(); if (usersClient.authenticate("gluster", "gluster").isSuccess()) { -- cgit