diff options
| author | Selvasundaram <selvam@gluster.com> | 2011-06-29 21:51:41 +0530 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-06-29 21:55:15 +0530 |
| commit | 9ff4f7270ba883d0f7f6be466e522c09beab44ed (patch) | |
| tree | 9f9f8b214f44fa918183f10b9efe5ec0a3f66e8e /src/com.gluster.storage.management.client | |
| parent | 770b0ca8f0a871baeaa03fd788c0948a6392d07f (diff) | |
Task frame work code changes
Diffstat (limited to 'src/com.gluster.storage.management.client')
5 files changed, 53 insertions, 27 deletions
diff --git a/src/com.gluster.storage.management.client/.classpath b/src/com.gluster.storage.management.client/.classpath index d216a8fe..218503d5 100644 --- a/src/com.gluster.storage.management.client/.classpath +++ b/src/com.gluster.storage.management.client/.classpath @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry exported="true" kind="lib" path="keystore/"/> - <classpathentry exported="true" kind="lib" path="lib/jersey-1.5/jersey-client-1.5.jar" sourcepath="/data/downloads/sun/jersey/sources/jersey-client-1.5-sources.jar"/> - <classpathentry exported="true" kind="lib" path="lib/jersey-1.5/jersey-core-1.5.jar" sourcepath="/data/downloads/sun/jersey/sources/jersey-core-1.5-sources.jar"/> + <classpathentry exported="true" kind="lib" path="lib/jersey-1.5/jersey-client-1.5.jar" sourcepath="/home/selvam/sources/jersey/jersey-client-1.5-sources.jar"/> + <classpathentry exported="true" kind="lib" path="lib/jersey-1.5/jersey-core-1.5.jar" sourcepath="/home/selvam/sources/jersey/jersey-core-1.5-sources.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry excluding="keystore/" kind="src" path="src"/> 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 14539b87..6f4ba050 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 @@ -22,6 +22,7 @@ import javax.ws.rs.core.MultivaluedMap; import com.gluster.storage.management.client.utils.ClientUtil;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
+import com.gluster.storage.management.core.model.TaskInfo;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.UniformInterfaceException;
@@ -41,6 +42,7 @@ public abstract class AbstractClient { protected WebResource resource;
private String securityToken;
private String authHeader;
+ private Client client;
/**
* This constructor will work only after the data model manager has been initialized.
@@ -61,11 +63,16 @@ public abstract class AbstractClient { this.clusterName = clusterName;
setSecurityToken(securityToken);
- SSLContext context = initializeSSLContext();
- DefaultClientConfig config = createClientConfig(context);
+ createClient();
// this must be after setting clusterName as sub-classes may refer to cluster name in the getResourcePath method
- resource = Client.create(config).resource(ClientUtil.getServerBaseURI()).path(getResourcePath());
+ resource = client.resource(ClientUtil.getServerBaseURI()).path(getResourcePath());
+ }
+
+ private void createClient() {
+ SSLContext context = initializeSSLContext();
+ DefaultClientConfig config = createClientConfig(context);
+ client = Client.create(config);
}
private DefaultClientConfig createClientConfig(SSLContext context) {
@@ -123,7 +130,7 @@ public abstract class AbstractClient { * @return Object of responseClass received as a result of the GET request
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
- private Object fetchResource(WebResource res, MultivaluedMap<String, String> queryParams, Class responseClass) {
+ private <T> T fetchResource(WebResource res, MultivaluedMap<String, String> queryParams, Class<T> responseClass) {
try {
return res.queryParams(queryParams)
.header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_XML).get(responseClass);
@@ -267,7 +274,11 @@ public abstract class AbstractClient { private ClientResponse putRequest(WebResource resource, Form form) {
try {
- return prepareFormRequestBuilder(resource).put(ClientResponse.class, form);
+ ClientResponse response = prepareFormRequestBuilder(resource).put(ClientResponse.class, form);
+ if(response.getStatus() >= 300) {
+ throw new GlusterRuntimeException(response.getEntity(String.class));
+ }
+ return response;
} catch (UniformInterfaceException e) {
throw new GlusterRuntimeException(e.getResponse().getEntity(String.class));
}
@@ -292,7 +303,8 @@ public abstract class AbstractClient { protected URI putRequestURI(String subResourceName, Form form) {
- return putRequest(resource.path(subResourceName), form).getLocation();
+ ClientResponse response = putRequest(resource.path(subResourceName), form);
+ return response.getLocation();
}
/**
@@ -361,4 +373,13 @@ public abstract class AbstractClient { this.securityToken = securityToken;
authHeader = "Basic " + securityToken;
}
+
+ /**
+ * @param uri The URI to be fetched using GET API
+ * @param responseClass Expected type of response object
+ * @return Object of the given class
+ */
+ protected <T> T fetchResource(URI uri, Class<T> responseClass) {
+ return fetchResource(client.resource(uri), NO_PARAMS, responseClass);
+ }
}
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 aff4f5d2..deaeee64 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 @@ -20,12 +20,13 @@ */ package com.gluster.storage.management.client; +import java.net.URI; import java.util.List; import javax.ws.rs.core.MultivaluedMap; +import com.gluster.storage.management.client.utils.ClientUtil; import com.gluster.storage.management.core.constants.RESTConstants; -import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.response.TaskInfoListResponse; import com.sun.jersey.api.representation.Form; @@ -86,7 +87,11 @@ public class TasksClient extends AbstractClient { public void deleteTask(String taskId) { MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); queryParams.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_DELETE); - + deleteSubResource(taskId, queryParams); } + + public TaskInfo getTaskInfo(URI uri) { + return ((TaskInfo) fetchResource(uri, TaskInfo.class)); + } } 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 522b87c1..c839a15a 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 @@ -80,18 +80,20 @@ public class UsersClient extends AbstractClient { } public static void main(String[] args) { - UsersClient authClient = new UsersClient(); - - // authenticate user - authClient.authenticate("gluster", "gluster"); - - // change password to gluster1 - authClient.changePassword("gluster", "gluster", "gluster1"); - - // change it back to gluster - authClient.changePassword("gluster", "gluster1", "gluster"); - - System.out.println("success"); +// UsersClient authClient = new UsersClient(); +// +// // authenticate user +// authClient.authenticate("gluster", "gluster"); +// +// // change password to gluster1 +// authClient.changePassword("gluster", "gluster", "gluster1"); +// +// // change it back to gluster +// authClient.changePassword("gluster", "gluster1", "gluster"); +// +// System.out.println("success"); + System.out.println(new String(Base64.encode("abcdefghijklmnopqrstuvwxyz"))); + System.out.println(new String(Base64.decode("YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo="))); } /* 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 6be67e65..b5d2711a 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 @@ -40,6 +40,7 @@ import com.gluster.storage.management.core.constants.CoreConstants; import com.gluster.storage.management.core.constants.GlusterConstants; import com.gluster.storage.management.core.constants.RESTConstants; import com.gluster.storage.management.core.model.Brick; +import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.core.model.VolumeLogMessage; import com.gluster.storage.management.core.model.VolumeOptionInfo; @@ -222,16 +223,13 @@ public class VolumesClient extends AbstractClient { return queryParams; } - public void startMigration(String volumeName, String brickFrom, String brickTo, Boolean autoCommit) { + public URI 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); - - // putRequest(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form); - URI uri = putRequestURI(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form); - System.out.println(uri.getRawPath()); + return putRequestURI(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form); } public void rebalanceStart(String volumeName, Boolean fixLayout, Boolean migrateData, Boolean forcedDataMigrate) { |
