summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-24 19:02:35 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-24 19:02:35 +0530
commit63a7cfda201801c6efea0e320fec581bb2dbb2ff (patch)
tree83eaf688c63c8491ed11a448f6e495ed27164a40 /src/com.gluster.storage.management.gui
parented377718d72e222bd6f7be4eb254252a8481f564 (diff)
Brick status updates and brick status icon changes in bricks view
Create volume wizard height fixed
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/icons/tango/16x16/offline-brick.pngbin0 -> 621 bytes
-rw-r--r--src/com.gluster.storage.management.gui/icons/tango/16x16/online-brick.pngbin0 -> 532 bytes
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java33
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java14
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/IImageKeys.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CreateVolumeAction.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/StartVolumeAction.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/BricksPage.java11
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
new file mode 100644
index 00000000..48812db8
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/icons/tango/16x16/offline-brick.png
Binary files differ
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
new file mode 100644
index 00000000..da895838
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/icons/tango/16x16/online-brick.png
Binary files differ
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;