diff options
| author | Selvasundaram <selvam@gluster.com> | 2011-07-24 19:02:35 +0530 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-07-24 19:02:35 +0530 |
| commit | 63a7cfda201801c6efea0e320fec581bb2dbb2ff (patch) | |
| tree | 83eaf688c63c8491ed11a448f6e495ed27164a40 /src | |
| parent | ed377718d72e222bd6f7be4eb254252a8481f564 (diff) | |
Brick status updates and brick status icon changes in bricks view
Create volume wizard height fixed
Diffstat (limited to 'src')
8 files changed, 38 insertions, 29 deletions
diff --git a/src/com.gluster.storage.management.gui/icons/tango/16x16/offline-brick.png b/src/com.gluster.storage.management.gui/icons/tango/16x16/offline-brick.png Binary files differnew file mode 100644 index 00000000..48812db8 --- /dev/null +++ b/src/com.gluster.storage.management.gui/icons/tango/16x16/offline-brick.png diff --git a/src/com.gluster.storage.management.gui/icons/tango/16x16/online-brick.png b/src/com.gluster.storage.management.gui/icons/tango/16x16/online-brick.png Binary files differnew file mode 100644 index 00000000..da895838 --- /dev/null +++ b/src/com.gluster.storage.management.gui/icons/tango/16x16/online-brick.png diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java index 7e1319c4..15ae0e2f 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java @@ -20,10 +20,9 @@ package com.gluster.storage.management.gui; import org.eclipse.swt.graphics.Image; -import com.gluster.storage.management.core.exceptions.GlusterRuntimeException; import com.gluster.storage.management.core.model.Brick; +import com.gluster.storage.management.core.model.Brick.BRICK_STATUS; import com.gluster.storage.management.core.model.Device; -import com.gluster.storage.management.core.model.Device.DEVICE_STATUS; import com.gluster.storage.management.core.utils.NumberUtil; import com.gluster.storage.management.gui.utils.GUIHelper; import com.gluster.storage.management.gui.views.pages.BricksPage.BRICK_TABLE_COLUMN_INDICES; @@ -40,25 +39,16 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter { } Brick brick = (Brick) element; - Device device = GlusterDataModelManager.getInstance().getDeviceDetails(brick.getDeviceName()); - if (columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal()) { - DEVICE_STATUS status = device.getStatus(); - // TODO: Use different images for all four statuses - switch (status) { - case INITIALIZED: - return guiHelper.getImage(IImageKeys.STATUS_ONLINE_16x16); - case IO_ERROR: - return guiHelper.getImage(IImageKeys.STATUS_OFFLINE_16x16); - case UNINITIALIZED: - return guiHelper.getImage(IImageKeys.STATUS_OFFLINE_16x16); - case INITIALIZING: - return guiHelper.getImage(IImageKeys.STATUS_OFFLINE_16x16); - default: - throw new GlusterRuntimeException("Invalid brick status [" + status + "]"); + BRICK_STATUS status = brick.getStatus(); + + switch(status) { + case ONLINE: + return guiHelper.getImage(IImageKeys.BRICK_ONLINE_16x16); + case OFFLINE: + return guiHelper.getImage(IImageKeys.BRICK_OFFLINE_16x16); } } - return null; } @@ -88,9 +78,8 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter { Device device = GlusterDataModelManager.getInstance().getDeviceDetails(brick.getDeviceName()); return (columnIndex == BRICK_TABLE_COLUMN_INDICES.SERVER.ordinal() ? brick.getServerName() : columnIndex == BRICK_TABLE_COLUMN_INDICES.BRICK.ordinal() ? brick.getBrickDirectory() - : columnIndex == BRICK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal() ? getDeviceFreeSpace(device) - : columnIndex == BRICK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal() ? getDeviceCapacity(device) - : columnIndex == BRICK_TABLE_COLUMN_INDICES.STATUS.ordinal() ? brick - .getStatusStr() : "Invalid"); + : columnIndex == BRICK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal() ? getDeviceFreeSpace(device) + : columnIndex == BRICK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal() ? getDeviceCapacity(device) + : columnIndex == BRICK_TABLE_COLUMN_INDICES.STATUS.ordinal() ? brick.getStatusStr() : "Invalid"); } } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java index aba7dde2..8c5c540c 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java @@ -38,6 +38,7 @@ import com.gluster.storage.management.core.model.Cluster; import com.gluster.storage.management.core.model.ClusterListener; import com.gluster.storage.management.core.model.Device; import com.gluster.storage.management.core.model.Alert.ALERT_TYPES; +import com.gluster.storage.management.core.model.Brick.BRICK_STATUS; import com.gluster.storage.management.core.model.Device.DEVICE_STATUS; import com.gluster.storage.management.core.model.Disk; import com.gluster.storage.management.core.model.Event; @@ -339,9 +340,7 @@ public class GlusterDataModelManager { } } - - - private void volumeChanged(Volume oldVolume, Volume newVolume) { + public void volumeChanged(Volume oldVolume, Volume newVolume) { oldVolume.copyFrom(newVolume); for (ClusterListener listener : listeners) { listener.volumeChanged(oldVolume, new Event(EVENT_TYPE.VOLUME_CHANGED, newVolume)); @@ -638,8 +637,17 @@ public class GlusterDataModelManager { public void updateVolumeStatus(Volume volume, VOLUME_STATUS newStatus) { volume.setStatus(newStatus); + + if(newStatus == VOLUME_STATUS.OFFLINE) { + // mark as bricks also as offline + for(Brick brick : volume.getBricks()) { + brick.setStatus(BRICK_STATUS.OFFLINE); + } + } + for (ClusterListener listener : listeners) { listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_STATUS_CHANGED, newStatus)); + listener.volumeChanged(volume, new Event(EVENT_TYPE.BRICKS_CHANGED, volume.getBricks())); } } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java index 0ddf5c5e..d0534210 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java @@ -40,7 +40,9 @@ public interface IImageKeys { public static final String REMOVE_BRICK_32x32 = "icons/tango/32x32/remove-brick.png"; public static final String BRICK_OFFLINE_22x22 = "icons/tango/22x22/offline-brick.png"; public static final String BRICKS_16x16 = "icons/tango/16x16/bricks.png"; - + public static final String BRICK_ONLINE_16x16 = "icons/tango/16x16/online-brick.png"; + public static final String BRICK_OFFLINE_16x16 = "icons/tango/16x16/offline-brick.png"; + public static final String SERVERS_16x16 = "icons/tango/16x16/servers.png"; public static final String SERVER_16x16 = "icons/tango/16x16/server.png"; public static final String SERVER_WARNING_22x22 = "icons/tango/22x22/server-warning.png"; diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java index 9bafd2b0..70cb4757 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java @@ -46,7 +46,7 @@ public class CreateVolumeAction extends AbstractActionDelegate { } }; dialog.create(); - dialog.getShell().setSize(500, 550); + dialog.getShell().setSize(500, 585); dialog.open(); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java index 8b3fee68..a6151824 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java @@ -42,6 +42,9 @@ public class StartVolumeAction extends AbstractActionDelegate { client.startVolume(volume.getName()); showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] started successfully!"); modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE); + + Volume updatedVolume = client.getVolume(volume.getName()); + modelManager.volumeChanged(volume, updatedVolume); } catch (Exception e) { showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be started! Error: [" + e.getMessage() + "]"); diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java index c9e63889..4aec5436 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java @@ -20,6 +20,7 @@ package com.gluster.storage.management.gui.views.pages; import java.util.Collection; import java.util.List; +import java.util.Map; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.IContentProvider; @@ -33,7 +34,6 @@ import com.gluster.storage.management.core.model.Brick; import com.gluster.storage.management.core.model.ClusterListener; import com.gluster.storage.management.core.model.DefaultClusterListener; import com.gluster.storage.management.core.model.Event; -import com.gluster.storage.management.core.model.Event.EVENT_TYPE; import com.gluster.storage.management.core.model.Volume; import com.gluster.storage.management.gui.BrickTableLabelProvider; @@ -70,7 +70,14 @@ public class BricksPage extends AbstractTableViewerPage<Brick> { break; case BRICKS_CHANGED: - tableViewer.update(((Collection<Brick>) event.getEventData()).toArray(), null); + Object eventData = event.getEventData(); + Brick[] updatedBricks; + if(eventData instanceof Map) { + updatedBricks = ((Map<Brick, Brick>) eventData).keySet().toArray(new Brick[0]); + } else { + updatedBricks = ((Collection<Brick>)eventData).toArray(new Brick[0]); + } + tableViewer.update(updatedBricks, null); parent.update(); default: break; |
