summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-06-03 14:33:24 +0530
committerDhandapani <dhandapani@gluster.com>2011-06-03 14:33:24 +0530
commit2c614a825f177e1dfb9b916a404bb1955d16e211 (patch)
tree03bb7bb8b8c1a6017c4236a09185d32b8c5fcdf7 /src
parentadc697295d9aff3f66ff2a77de5395dee37a5ad0 (diff)
Remove Brick issues
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java32
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/BricksPage.java2
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java2
4 files changed, 27 insertions, 15 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 98071128..a5e480af 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
@@ -347,6 +347,12 @@ public class GlusterDataModelManager {
listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICKS_ADDED, bricks));
}
}
+
+ public void removeBricks(Volume volume, List<Brick> bricks) {
+ for (ClusterListener listener : listeners) {
+ listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICKS_REMOVED, bricks));
+ }
+ }
public void setVolumeOption(Volume volume, Entry<String, String> entry) {
volume.setOption(entry.getKey(), (String) entry.getValue());
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java
index 3ad72e76..8c5d8405 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java
@@ -22,7 +22,6 @@ import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.views.VolumeBricksView;
-
public class RemoveDiskAction extends AbstractActionDelegate {
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
private GUIHelper guiHelper = GUIHelper.getInstance();
@@ -36,8 +35,8 @@ public class RemoveDiskAction extends AbstractActionDelegate {
List<String> brickList = getBrickList(bricks);
Integer deleteOption = new MessageDialog(getShell(), "Remove Bricks(s)", GUIHelper.getInstance().getImage(
IImageKeys.VOLUME), "Are you sure you want to remove following bricks from volume [" + volume.getName()
- + "] ? \n" + StringUtil.ListToString(brickList, ", "), MessageDialog.QUESTION, new String[] { "Cancel", "Remove bricks, delete data",
- "Remove bricks, keep data" }, 2).open();
+ + "] ? \n" + StringUtil.ListToString(brickList, ", "), MessageDialog.QUESTION, new String[] { "Cancel",
+ "Remove bricks, delete data", "Remove bricks, keep data" }, 2).open();
if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
return;
}
@@ -51,15 +50,22 @@ public class RemoveDiskAction extends AbstractActionDelegate {
Status status = client.removeBricks(volume.getName(), bricks, confirmDelete);
if (status.isSuccess()) {
+
+ // Remove the bricks from the volume object
+ for (Brick brick : bricks) {
+ volume.removeBrick(brick);
+ }
+ // Update model with removed bricks in the volume
+ modelManager.removeBricks(volume, bricks);
+
showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] bricks(s) removed successfully!");
- modelManager.deleteVolume(volume);
} else {
- showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] bricks(s) could not be removed! Error: ["
- + status + "]");
+ showErrorDialog(actionDesc, "Volume [" + volume.getName()
+ + "] bricks(s) could not be removed! Error: [" + status + "]");
}
}
});
-
+
}
@Override
@@ -71,11 +77,11 @@ public class RemoveDiskAction extends AbstractActionDelegate {
super.selectionChanged(action, selection);
action.setEnabled(false);
- volume = (Volume)guiHelper.getSelectedEntity(window, Volume.class);
+ volume = (Volume) guiHelper.getSelectedEntity(window, Volume.class);
if (volume != null) {
// a volume is selected on navigation tree. Let's check if the currently open view is volume disks view
IWorkbenchPart view = guiHelper.getActiveView();
- if(view instanceof VolumeBricksView) {
+ if (view instanceof VolumeBricksView) {
// volume disks view is open. check if any brick is selected
bricks = getSelectedBricks(selection);
action.setEnabled(bricks.size() > 0);
@@ -85,22 +91,22 @@ public class RemoveDiskAction extends AbstractActionDelegate {
private List<Brick> getSelectedBricks(ISelection selection) {
List<Brick> selectedBricks = new ArrayList<Brick>();
-
+
if (selection instanceof IStructuredSelection) {
Iterator<Object> iter = ((IStructuredSelection) selection).iterator();
while (iter.hasNext()) {
Object selectedObj = iter.next();
if (selectedObj instanceof Brick) {
- selectedBricks.add((Brick)selectedObj);
+ selectedBricks.add((Brick) selectedObj);
}
}
}
return selectedBricks;
}
-
+
private List<String> getBrickList(List<Brick> bricks) {
List<String> brickList = new ArrayList<String>();
- for(Brick brick : bricks) {
+ for (Brick brick : bricks) {
brickList.add(brick.getServerName() + ":" + brick.getBrickDirectory());
}
return brickList;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/BricksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/BricksPage.java
index 9ebab70b..51425174 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/BricksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/BricksPage.java
@@ -58,7 +58,7 @@ public class BricksPage extends AbstractBricksPage {
final ClusterListener clusterListener = new DefaultClusterListener() {
@Override
public void volumeChanged(Volume volume, Event event) {
- if (event.getEventType() == EVENT_TYPE.BRICKS_ADDED) {
+ if (event.getEventType() == EVENT_TYPE.BRICKS_ADDED || event.getEventType() == EVENT_TYPE.BRICKS_REMOVED) {
tableViewer.refresh();
parent.update();
}
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 77549add..7f2afc3f 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
@@ -498,7 +498,7 @@ System.out.println(brickDir);
}
public Status removeBricks(String volumeName, List<String> bricks, String knownServer) {
- StringBuilder command = new StringBuilder("gluster volume remove-brick " + volumeName);
+ StringBuilder command = new StringBuilder("gluster --mode=script volume remove-brick " + volumeName);
for(String brickDir : bricks) {
command.append(" " + brickDir);
}