summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-06-29 21:51:41 +0530
committerSelvasundaram <selvam@gluster.com>2011-06-29 21:55:15 +0530
commit9ff4f7270ba883d0f7f6be466e522c09beab44ed (patch)
tree9f9f8b214f44fa918183f10b9efe5ec0a3f66e8e /src/com.gluster.storage.management.client
parent770b0ca8f0a871baeaa03fd788c0948a6392d07f (diff)
Task frame work code changes
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/.classpath4
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java33
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java9
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/UsersClient.java26
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java8
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) {