diff options
| author | Dhandapani <dhandapani@gluster.com> | 2011-06-03 14:33:24 +0530 |
|---|---|---|
| committer | Dhandapani <dhandapani@gluster.com> | 2011-06-03 14:33:24 +0530 |
| commit | 2c614a825f177e1dfb9b916a404bb1955d16e211 (patch) | |
| tree | 03bb7bb8b8c1a6017c4236a09185d32b8c5fcdf7 /src | |
| parent | adc697295d9aff3f66ff2a77de5395dee37a5ad0 (diff) | |
Remove Brick issues
Diffstat (limited to 'src')
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); } |
