diff options
| author | Selvasundaram <selvam@gluster.com> | 2011-08-04 11:51:08 +0530 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-08-04 11:55:03 +0530 |
| commit | 9541f13d89b6bb373e2a10983d0e950636fe8458 (patch) | |
| tree | 7ac0cb9c4abec103c40eddb72d4b98ee6b30f2a5 /src | |
| parent | 6c5662f48bb19f97fd2c91557f4daaae19b6e9d3 (diff) | |
Bug 3302 - Alerts/Tasks belonging to one cluster is shown in another cluster also
Diffstat (limited to 'src')
3 files changed, 39 insertions, 26 deletions
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java index 3578dd31..6830db00 100644 --- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java +++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/GlusterServersResource.java @@ -378,7 +378,7 @@ public class GlusterServersResource extends AbstractResource { // Check the initialize disk status TaskStatus taskStatus = initializeTask.checkStatus(); initializeTask.getTaskInfo().setStatus(taskStatus); - taskResource.addTask(initializeTask); + taskResource.addTask(clusterName, initializeTask); return acceptedResponse(RESTConstants.RESOURCE_PATH_CLUSTERS + "/" + clusterName + "/" + RESOURCE_TASKS + "/" + initializeTask.getId()); diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/TasksResource.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/TasksResource.java index e5874f4b..d838aac6 100644 --- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/TasksResource.java +++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/TasksResource.java @@ -57,30 +57,41 @@ import com.sun.jersey.spi.resource.Singleton; @Singleton @Component public class TasksResource extends AbstractResource { - private Map<String, Task> tasksMap = new HashMap<String, Task>(); + private Map<String, Map<String, Task>> tasksMap = new HashMap<String, Map<String, Task>>(); public TasksResource() { } - public void addTask(Task task) { - tasksMap.put(task.getId(), task); + @SuppressWarnings("unchecked") + public void addTask(String clusterName, Task task) { + Map clusterTaskMap = tasksMap.get(clusterName); + if(clusterTaskMap == null) { + clusterTaskMap = new HashMap<String, Task>(); + tasksMap.put(clusterName, clusterTaskMap); + } + clusterTaskMap.put(task.getId(), task); } public void removeTask(Task task) { tasksMap.remove(task.getId()); } - public List<TaskInfo> getAllTasksInfo() { + public List<TaskInfo> getAllTasksInfo(String clusterName) { + Map<String, Task> clusterTasksMap = tasksMap.get(clusterName); List<TaskInfo> allTasksInfo = new ArrayList<TaskInfo>(); - for (Map.Entry<String, Task> entry : tasksMap.entrySet()) { - checkTaskStatus(entry.getKey()); + if ( clusterTasksMap == null) { + return allTasksInfo; + } + for (Map.Entry<String, Task> entry : clusterTasksMap.entrySet()) { + checkTaskStatus(clusterName, entry.getKey()); allTasksInfo.add(entry.getValue().getTaskInfo()); // TaskInfo with latest status } return allTasksInfo; } - public Task getTask(String taskId) { - for (Map.Entry<String, Task> entry : tasksMap.entrySet()) { + public Task getTask(String clusterName, String taskId) { + Map<String, Task> clusterTasksMap = tasksMap.get(clusterName); + for (Map.Entry<String, Task> entry : clusterTasksMap.entrySet()) { if (entry.getValue().getId().equals(taskId)) { return entry.getValue(); } @@ -88,10 +99,11 @@ public class TasksResource extends AbstractResource { return null; } - public List<Task> getAllTasks() { + public List<Task> getAllTasks(String clusterName) { + Map<String, Task> clusterTasksMap = tasksMap.get(clusterName); List<Task> tasks = new ArrayList<Task>(); - for (Map.Entry<String, Task> entry : tasksMap.entrySet()) { - checkTaskStatus(entry.getKey()); + for (Map.Entry<String, Task> entry : clusterTasksMap.entrySet()) { + checkTaskStatus(clusterName, entry.getKey()); tasks.add( (Task) entry.getValue()); } return tasks; @@ -99,9 +111,9 @@ public class TasksResource extends AbstractResource { @GET @Produces(MediaType.APPLICATION_XML) - public Response getTasks() { + public Response getTasks(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName) { try { - return okResponse(new TaskInfoListResponse(getAllTasksInfo()), MediaType.APPLICATION_XML); + return okResponse(new TaskInfoListResponse(getAllTasksInfo(clusterName)), MediaType.APPLICATION_XML); } catch (GlusterRuntimeException e) { return errorResponse(e.getMessage()); } @@ -110,17 +122,18 @@ public class TasksResource extends AbstractResource { @GET @Path("/{" + PATH_PARAM_TASK_ID + "}") @Produces(MediaType.APPLICATION_XML) - public Response getTaskStatus( @PathParam(PATH_PARAM_TASK_ID) String taskId) { + public Response getTaskStatus(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName, + @PathParam(PATH_PARAM_TASK_ID) String taskId) { try { - Task task = checkTaskStatus(taskId); + Task task = checkTaskStatus(clusterName, taskId); return okResponse(task.getTaskInfo(), MediaType.APPLICATION_XML); } catch (GlusterRuntimeException e) { return errorResponse(e.getMessage()); } } - private Task checkTaskStatus(String taskId) { - Task task = getTask(taskId); + private Task checkTaskStatus(String clusterName, String taskId) { + Task task = getTask(clusterName, taskId); // No status check required if the task already complete or failure if (task.getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_FAILURE || task.getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_SUCCESS) { @@ -135,7 +148,7 @@ public class TasksResource extends AbstractResource { @Produces(MediaType.APPLICATION_XML) public Response performTask(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName, @PathParam(PATH_PARAM_TASK_ID) String taskId, @FormParam(FORM_PARAM_OPERATION) String taskOperation) { - Task task = getTask(taskId); + Task task = getTask(clusterName, taskId); try { if (taskOperation.equals(RESTConstants.TASK_RESUME)) { @@ -144,7 +157,7 @@ public class TasksResource extends AbstractResource { task.pause(); } else if (taskOperation.equals(RESTConstants.TASK_STOP)) { // task.stop(); - clearTask(taskId, taskOperation); // Stop and remove from the task list + clearTask(clusterName, taskId, taskOperation); // Stop and remove from the task list } else if (taskOperation.equals(RESTConstants.TASK_COMMIT)) { task.commit(); } @@ -159,9 +172,9 @@ public class TasksResource extends AbstractResource { @DELETE @Path("/{" + PATH_PARAM_TASK_ID + "}") @Produces(MediaType.APPLICATION_XML) - public Response clearTask(@PathParam(PATH_PARAM_TASK_ID) String taskId, - @QueryParam(FORM_PARAM_OPERATION) String taskOperation) { - Task task = getTask(taskId); + public Response clearTask(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName, + @PathParam(PATH_PARAM_TASK_ID) String taskId, @QueryParam(FORM_PARAM_OPERATION) String taskOperation) { + Task task = getTask(clusterName, taskId); if (task == null) { return notFoundResponse("Task [" + taskId + "] not found!"); } diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java index f72a6a64..915673bb 100644 --- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java +++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/resources/v1_0/VolumesResource.java @@ -1122,7 +1122,7 @@ public class VolumesResource extends AbstractResource { toBrick); migrateDiskTask.setAutoCommit(autoCommit); migrateDiskTask.start(); - taskResource.addTask(migrateDiskTask); + taskResource.addTask(clusterName, migrateDiskTask); return migrateDiskTask.getTaskInfo().getName(); // Return Task ID } @@ -1144,7 +1144,7 @@ public class VolumesResource extends AbstractResource { RebalanceVolumeTask rebalanceTask = new RebalanceVolumeTask(clusterService, clusterName, volumeName, getLayout( isFixLayout, isMigrateData, isForcedDataMigrate)); rebalanceTask.start(); - taskResource.addTask(rebalanceTask); + taskResource.addTask(clusterName, rebalanceTask); return rebalanceTask.getId(); } @@ -1152,6 +1152,6 @@ public class VolumesResource extends AbstractResource { // TODO: arrive at the task id and fetch it String taskId = ""; - taskResource.getTask(taskId).stop(); + taskResource.getTask(clusterName, taskId).stop(); } } |
