summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
authorShireesh Anjal <anjalshireesh@gmail.com>2011-06-27 08:38:11 -0700
committerSelvasundaram <selvam@gluster.com>2011-06-28 21:09:31 +0530
commit5c9b6a12aab8e4ea95d404c4312a89ca2b07ddc6 (patch)
treebcc91e2fd0eabc9228bfe72e05e3daf6cac5f1bd /src/com.gluster.storage.management.client
parent8c59a588c903cc1a70ea769e78e0414c69006b35 (diff)
parent4ef7f5b73e733528d818d2bb6987a56cc3b097ce (diff)
Task progress view UI
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java11
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java51
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/TasksClient.java16
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java5
4 files changed, 63 insertions, 20 deletions
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 3d13a8de..9e0e0339 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
@@ -9,6 +9,7 @@ import static com.gluster.storage.management.client.constants.ClientConstants.TR
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.net.URI;
import java.security.KeyStore;
import javax.net.ssl.HostnameVerifier;
@@ -31,6 +32,7 @@ import com.sun.jersey.api.representation.Form;
import com.sun.jersey.client.urlconnection.HTTPSProperties;
import com.sun.jersey.core.util.MultivaluedMapImpl;
+
public abstract class AbstractClient {
private static final String HTTP_HEADER_AUTH = "Authorization";
protected static final MultivaluedMap<String, String> NO_PARAMS = new MultivaluedMapImpl();
@@ -262,9 +264,9 @@ public abstract class AbstractClient {
postRequest(resource.path(subResourceName), form);
}
- private void putRequest(WebResource resource, Form form) {
+ private ClientResponse putRequest(WebResource resource, Form form) {
try {
- prepareFormRequestBuilder(resource).put(form);
+ return prepareFormRequestBuilder(resource).put(ClientResponse.class, form);
} catch (UniformInterfaceException e) {
throw new GlusterRuntimeException(e.getResponse().getEntity(String.class));
}
@@ -286,6 +288,11 @@ public abstract class AbstractClient {
protected void putRequest(String subResourceName, Form form) {
putRequest(resource.path(subResourceName), form);
}
+
+
+ protected URI putRequestURI(String subResourceName, Form form) {
+ return putRequest(resource.path(subResourceName), form).getLocation();
+ }
/**
* Submits given Form using PUT method to the given sub-resource and returns the object received as response
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index 695fae19..88d5fdd0 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -35,15 +35,13 @@ import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
+import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
+import com.gluster.storage.management.core.model.TaskStatus;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.model.VolumeOptionInfo;
-import com.gluster.storage.management.core.response.GlusterServerListResponse;
-import com.gluster.storage.management.core.response.ServerListResponse;
-import com.gluster.storage.management.core.response.VolumeListResponse;
-import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
public class GlusterDataModelManager {
private static GlusterDataModelManager instance = new GlusterDataModelManager();
@@ -92,7 +90,6 @@ public class GlusterDataModelManager {
initializeAutoDiscoveredServers(cluster);
// initializeDisks();
-
initializeTasks(cluster);
initializeAlerts(cluster);
initializeVolumeOptionsDefaults();
@@ -118,10 +115,40 @@ public class GlusterDataModelManager {
}
public void initializeTasks(Cluster cluster) {
- List<TaskInfo> taskInfoList = new TasksClient(cluster.getName()).getAllTasks();
+ // List<TaskInfo> taskInfoList = new TasksClient(cluster.getName()).getAllTasks();
+ List<TaskInfo> taskInfoList = getDummyTasks();
cluster.setTaskInfoList(taskInfoList);
}
+ private List<TaskInfo> getDummyTasks() {
+ List<TaskInfo> taskInfoList = new ArrayList<TaskInfo>();
+
+ // Task #1
+ TaskInfo taskInfo = new TaskInfo();
+ taskInfo.setType(TASK_TYPE.BRICK_MIGRATE);
+ taskInfo.setName("Migrate Brick-music");
+ taskInfo.setCanPause(true);
+ taskInfo.setCanStop(true);
+ taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, "")));
+
+ taskInfo.getStatus().setMessage("Migrating file xxxxx to yyyy");
+ taskInfo.setDescription("Migrate Brick on volume [music] from /export/adb/music to /export/sdc/music.");
+ taskInfoList.add(taskInfo);
+ // Task #2
+ taskInfo = new TaskInfo();
+ taskInfo.setType(TASK_TYPE.DISK_FORMAT);
+ taskInfo.setName("Format Disk-server1:sdc");
+ taskInfo.setCanPause(false);
+ taskInfo.setCanStop(false);
+ taskInfo.setStatus( new TaskStatus(new Status(Status.STATUS_CODE_FAILURE, "")));
+ taskInfo.getStatus().setMessage("Format completes 80% ...");
+ taskInfo.setDescription("Formatting disk server1:sdc.");
+ taskInfoList.add(taskInfo);
+
+
+ return taskInfoList;
+ }
+
public void initializeAlerts(Cluster cluster) {
cluster.setAlerts(new AlertsClient(cluster.getName()).getAllAlerts());
}
@@ -175,7 +202,7 @@ public class GlusterDataModelManager {
Disk disk = null;
List<Disk> volumeDisks = new ArrayList<Disk>();
for (Brick brick : volume.getBricks()) {
- disk = getDisk(brick.getDiskName());
+ disk = getDisk(brick.getServerName() + ":" + brick.getDiskName());
// disk = new Disk();
// disk.setServerName(brick.getServerName());
// disk.setName(brick.getDiskName());
@@ -334,6 +361,15 @@ public class GlusterDataModelManager {
}
}
+ public void updateTaskStatus(TaskInfo taskInfo, Status newStatus) {
+ taskInfo.getStatus().setCode(newStatus.getCode());
+ taskInfo.getStatus().setMessage(newStatus.getMessage());
+ for (ClusterListener listener : listeners) {
+ listener.taskUpdated(taskInfo);
+ }
+ }
+
+
public List<VolumeOptionInfo> getVolumeOptionsDefaults() {
return volumeOptionsDefaults;
}
@@ -414,4 +450,5 @@ public class GlusterDataModelManager {
}
return volumeNames;
}
+
}
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 b5ee1d1c..aff4f5d2 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
@@ -26,15 +26,17 @@ import javax.ws.rs.core.MultivaluedMap;
import com.gluster.storage.management.core.constants.RESTConstants;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
-import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
-import com.gluster.storage.management.core.response.TaskListResponse;
-import com.gluster.storage.management.core.response.TaskResponse;
+import com.gluster.storage.management.core.response.TaskInfoListResponse;
import com.sun.jersey.api.representation.Form;
import com.sun.jersey.core.util.MultivaluedMapImpl;
public class TasksClient extends AbstractClient {
+ public TasksClient() {
+ super();
+ }
+
public TasksClient(String clusterName) {
super(clusterName);
}
@@ -48,14 +50,8 @@ public class TasksClient extends AbstractClient {
return RESTConstants.RESOURCE_PATH_CLUSTERS + "/" + clusterName + "/" + RESTConstants.RESOURCE_TASKS + "/";
}
- @SuppressWarnings("unchecked")
public List<TaskInfo> getAllTasks() { // TaskListResponse get only the list of taskInfo not list of Tasks
- TaskListResponse response = (TaskListResponse) fetchResource(TaskListResponse.class);
- if (response.getStatus().isSuccess()) {
- return (List<TaskInfo>) response.getData();
- } else {
- throw new GlusterRuntimeException("Exception on fetching tasks [" + response.getStatus().getMessage() + "]");
- }
+ return ((TaskInfoListResponse) fetchResource(TaskInfoListResponse.class)).getTaskList();
}
// see startMigration @ VolumesClient, etc
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 c04389d1..07aea5a1 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
@@ -29,6 +29,7 @@ import static com.gluster.storage.management.core.constants.RESTConstants.FORM_P
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VOLUME_OPTIONS;
import static com.gluster.storage.management.core.constants.RESTConstants.FORM_PARAM_VOLUME_TYPE;
+import java.net.URI;
import java.util.Date;
import java.util.List;
@@ -227,7 +228,9 @@ public class VolumesClient extends AbstractClient {
form.add(RESTConstants.FORM_PARAM_OPERATION, RESTConstants.TASK_START);
form.add(RESTConstants.FORM_PARAM_AUTO_COMMIT, autoCommit);
- putRequest(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form);
+ // putRequest(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form);
+ URI uri = putRequestURI(volumeName + "/" + RESTConstants.RESOURCE_BRICKS, form);
+ System.out.println(uri.getRawPath());
}
public static void main(String[] args) {