diff options
Diffstat (limited to 'src')
3 files changed, 54 insertions, 7 deletions
diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml index 36a3f3d9..46326351 100644 --- a/src/com.gluster.storage.management.gui/plugin.xml +++ b/src/com.gluster.storage.management.gui/plugin.xml @@ -502,7 +502,7 @@ state="false" style="push" toolbarPath="Normal" - tooltip="Migrate Disk"> + tooltip="Migrate Brick"> <enablement> <objectClass name="com.gluster.storage.management.core.model.Disk"> diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java index 6a13fc8e..105af60d 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java @@ -1,12 +1,21 @@ package com.gluster.storage.management.gui.actions; + +import java.util.ArrayList; +import java.util.List; + import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.swt.custom.BusyIndicator; +import org.eclipse.swt.widgets.Display; 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.Status; import com.gluster.storage.management.core.model.TaskInfo; import com.gluster.storage.management.core.model.TaskStatus; +import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.GlusterDataModelManager; public class CommitTaskAction extends AbstractActionDelegate { @@ -19,12 +28,29 @@ public class CommitTaskAction extends AbstractActionDelegate { try { new TasksClient().commitTask(taskInfo.getName()); taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, "Committed"))); - showInfoDialog(actionDesc, "Commit successful"); modelManager.removeTask(taskInfo); + showInfoDialog(actionDesc, "Commit successful"); } catch (Exception e) { showErrorDialog(actionDesc, "Task [" + taskInfo.getName() + "] could not be Committed! Error: [" + e.getMessage() + "]"); + return; // Prevent to update model } + + BusyIndicator.showWhile(Display.getDefault(), new Runnable() { + @Override + public void run() { + try { + String volumeName = taskInfo.getReference(); + Volume oldVolume = modelManager.getModel().getCluster().getVolume(volumeName); + Volume newVolume = (new VolumesClient()).getVolume(volumeName); + + modelManager.volumeChanged(oldVolume, newVolume); + } catch (Exception e) { + logger.error(e); + showInfoDialog(actionDesc, "Volume brick update failed! [" + e.getMessage() + "]"); + } + } + }); } @Override @@ -37,6 +63,10 @@ public class CommitTaskAction extends AbstractActionDelegate { && taskInfo.getStatus().getCode() == Status.STATUS_CODE_COMMIT_PENDING); } } + + public void updateVolume(String volumeName) { + + } @Override public void dispose() { 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 c125a3c8..055cb769 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 @@ -28,6 +28,7 @@ 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.TaskStatus; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.GlusterDataModelManager; @@ -35,7 +36,8 @@ public class MigrateBrickWizard extends Wizard { private Volume volume; private Brick brick; private MigrateBrickPage1 page; - private Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster(); + private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); + private Cluster cluster = modelManager.getModel().getCluster(); public MigrateBrickWizard(Volume volume, Brick brick) { setWindowTitle("Gluster Management Console - Migrate Brick [" + volume.getName() + "]"); @@ -57,6 +59,7 @@ public class MigrateBrickWizard extends Wizard { String targetDir = page.getTargetBrickDir(); Boolean autoCommit = page.getAutoCommitSelection(); VolumesClient volumesClient = new VolumesClient(); + String dialogTitle = "Brick migration"; try { URI uri = volumesClient.startMigration(volume.getName(), sourceDir, targetDir, autoCommit); @@ -66,11 +69,25 @@ public class MigrateBrickWizard extends Wizard { TaskInfo taskInfo = taskClient.getTaskInfo(uri); if (taskInfo != null && taskInfo instanceof TaskInfo) { cluster.addTaskInfo(taskInfo); - GlusterDataModelManager.getInstance().refreshVolumeData(cluster.getVolume(taskInfo.getReference())); - } - MessageDialog.openInformation(getShell(), "Brick migration", "Brick migration started successfully"); + modelManager.refreshVolumeData(cluster.getVolume(taskInfo.getReference())); + + // If auto commit selected and migration operation complete immediately, + if (taskInfo.getStatus().getCode() == TaskStatus.STATUS_CODE_SUCCESS) { + + String volumeName = taskInfo.getReference(); + Volume oldVolume = cluster.getVolume(volumeName); + Volume newVolume = (new VolumesClient()).getVolume(volumeName); + + modelManager.volumeChanged(oldVolume, newVolume); + + MessageDialog.openInformation(getShell(), dialogTitle, "Brick migration completed successfully"); + return true; + } + } + MessageDialog.openInformation(getShell(), dialogTitle, "Brick migration started successfully"); + } catch (Exception e) { - MessageDialog.openError(getShell(), "Error: Migrate brick", e.getMessage()); + MessageDialog.openError(getShell(), dialogTitle, "Brick Migration failed! [" + e.getMessage() + "]"); } return true; } |
