summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-29 11:31:07 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-29 22:34:14 +0530
commitb98c95d1d700f60f65fd8932aa5c9fc4a825296a (patch)
tree819911632b6fae494f65b8cdc51a5ff12dcec649
parent0e927535772808136b5ed8cbfe708fc0b1e839eb (diff)
Bug 3150 - Brick list is not getting updated after migrate operation - fix
-rw-r--r--src/com.gluster.storage.management.gui/plugin.xml2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java32
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java27
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;
}