diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-06-27 08:38:11 -0700 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-06-28 21:09:31 +0530 |
| commit | 5c9b6a12aab8e4ea95d404c4312a89ca2b07ddc6 (patch) | |
| tree | bcc91e2fd0eabc9228bfe72e05e3daf6cac5f1bd /src/com.gluster.storage.management.client | |
| parent | 8c59a588c903cc1a70ea769e78e0414c69006b35 (diff) | |
| parent | 4ef7f5b73e733528d818d2bb6987a56cc3b097ce (diff) | |
Task progress view UI
Diffstat (limited to 'src/com.gluster.storage.management.client')
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) { |
