diff options
author | Selvasundaram <selvam@gluster.com> | 2011-07-11 19:20:36 +0530 |
---|---|---|
committer | Selvasundaram <selvam@gluster.com> | 2011-07-11 19:20:36 +0530 |
commit | d20c501af4dcb8d7d02247e1f12e9645102ee6ca (patch) | |
tree | 015ff2b33de8af0c1daff1bc9a17d63c98dbecd2 | |
parent | d0280748890bb6aef032032f8aa6d38d6ce14b04 (diff) |
Format disk task status update bug fixes
[Bug 3150] New: Brick list is not getting updated after migrate operation - fix
6 files changed, 31 insertions, 16 deletions
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 e6c08da7..497f0a29 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 @@ -109,6 +109,14 @@ public class GlusterDataModelManager { return model; } + public void refreshVolumeData(Volume oldVolume) { + VolumesClient volumeClient = new VolumesClient(); + Volume newVolume = volumeClient.getVolume(oldVolume.getName()); + if(!oldVolume.equals(newVolume)) { + volumeChanged(oldVolume, newVolume); + } + } + public GlusterDataModel fetchModel(IProgressMonitor monitor) { synchronized (syncInProgress) { if(syncInProgress) { @@ -311,6 +319,8 @@ public class GlusterDataModelManager { } } + + private void volumeChanged(Volume oldVolume, Volume newVolume) { oldVolume.copyFrom(newVolume); for (ClusterListener listener : listeners) { diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java index 6d1e83e3..f09dfc88 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java @@ -22,7 +22,7 @@ package com.gluster.storage.management.core.model; import javax.xml.bind.annotation.XmlRootElement; -@XmlRootElement +@XmlRootElement(name="response") public class InitDiskStatusResponse { public enum FORMAT_STATUS { @@ -35,7 +35,7 @@ public class InitDiskStatusResponse { private String message; private float totalBlocks; private float completedBlocks; - private FORMAT_STATUS status; + private FORMAT_STATUS formatStatus; public InitDiskStatusResponse() { @@ -74,16 +74,16 @@ public class InitDiskStatusResponse { return completedBlocks; } - public String getStatusStr() { - return FORMAT_STATUS_STR[getStatus().ordinal()]; + public String getFormatStatusStr() { + return FORMAT_STATUS_STR[getFormatStatus().ordinal()]; } - public FORMAT_STATUS getStatus() { - return status; + public FORMAT_STATUS getFormatStatus() { + return formatStatus; } - public void setStatus(FORMAT_STATUS status) { - this.status = status; + public void setFormatStatus(FORMAT_STATUS status) { + this.formatStatus = status; } } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java index 4693726b..d8f0f165 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java @@ -27,6 +27,7 @@ import com.gluster.storage.management.client.GlusterDataModelManager; import com.gluster.storage.management.client.TasksClient; import com.gluster.storage.management.client.VolumesClient; import com.gluster.storage.management.core.model.Brick; +import com.gluster.storage.management.core.model.Cluster; import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.Volume; @@ -34,6 +35,7 @@ public class MigrateBrickWizard extends Wizard { private Volume volume; private Brick brick; private MigrateBrickPage1 page; + private Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster(); public MigrateBrickWizard(Volume volume, Brick brick) { setWindowTitle("Gluster Management Console - Migrate Brick [" + volume.getName() + "]"); @@ -63,7 +65,8 @@ public class MigrateBrickWizard extends Wizard { TasksClient taskClient = new TasksClient(); TaskInfo taskInfo = taskClient.getTaskInfo(uri); if (taskInfo != null && taskInfo instanceof TaskInfo) { - GlusterDataModelManager.getInstance().getModel().getCluster().addTaskInfo(taskInfo); + cluster.addTaskInfo(taskInfo); + GlusterDataModelManager.getInstance().refreshVolumeData(cluster.getVolume(taskInfo.getReference())); } MessageDialog.openInformation(getShell(), "Brick migration", "Brick migration started successfully"); } catch (Exception e) { diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java index 43c9e35f..b455a255 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java @@ -47,6 +47,7 @@ import org.springframework.stereotype.Component; import com.gluster.storage.management.core.constants.RESTConstants; import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.gluster.storage.management.core.exceptions.GlusterValidationException; +import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.response.TaskInfoListResponse; import com.gluster.storage.management.server.tasks.Task; @@ -120,6 +121,11 @@ public class TasksResource extends AbstractResource { private Task checkTaskStatus(String taskId) { Task task = getTask(taskId); + // No status check required if the task already complete or failure + if (task.getTaskInfo().getStatus() == Status.STATUS_FAILURE + || task.getTaskInfo().getStatus() == Status.STATUS_SUCCESS) { + return task; + } task.getTaskInfo().setStatus(task.checkStatus()); return task; } diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java index ea9dd7e5..2fe2373b 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java @@ -104,11 +104,7 @@ public class InitializeDiskTask extends Task { return TASK_TYPE.DISK_FORMAT; } - @Override - public TaskInfo getTaskInfo() { - return getTaskInfo(); - } - + @Override public void start() { try { diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java index 449dd269..a32c4f18 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java @@ -591,9 +591,9 @@ public class GlusterUtil { InitDiskStatusResponse initDiskStatusResponse = (InitDiskStatusResponse) response; - if (initDiskStatusResponse.getStatus() == FORMAT_STATUS.COMPLETED) { + if (initDiskStatusResponse.getFormatStatus() == FORMAT_STATUS.COMPLETED) { taskStatus.setCode(Status.STATUS_CODE_SUCCESS); - } else if (initDiskStatusResponse.getStatus() == FORMAT_STATUS.IN_PROGRESS) { + } else if (initDiskStatusResponse.getFormatStatus() == FORMAT_STATUS.IN_PROGRESS) { taskStatus.setCode(Status.STATUS_CODE_RUNNING); taskStatus.setPercentCompleted(Math.round(initDiskStatusResponse.getCompletedBlocks() / initDiskStatusResponse.getTotalBlocks() * 100)); |