summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-07-15 14:06:58 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-07-17 22:17:10 +0530
commit194d5787da03f843a4eb81f304d6f30057bb5be2 (patch)
tree5ca99137760b57c38587243a4f8e807d39d4fea7 /src
parent665b45744d06bd9c0a53263ec87630cdc2734c90 (diff)
Disk and Partition feature added
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java106
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Brick.java18
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Device.java6
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java27
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Partition.java15
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/BrickTableLabelProvider.java24
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java)100
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java40
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java41
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/BricksSelectionPage.java119
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java21
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java9
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java20
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DisksView.java1
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java125
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java163
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DiskTreeContentProvider.java123
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java38
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java36
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java10
22 files changed, 677 insertions, 371 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 ba5ce336..e6089360 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
@@ -31,12 +31,14 @@ import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Brick;
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.Device.DEVICE_STATUS;
import com.gluster.storage.management.core.model.Disk;
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.GlusterDataModel;
import com.gluster.storage.management.core.model.GlusterServer;
+import com.gluster.storage.management.core.model.Partition;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.TaskInfo;
@@ -417,17 +419,11 @@ public class GlusterDataModelManager {
return volume;
}
- /**
- * @param serverPartition
- * Qualified name of the disk to be returned (serverName:diskName)
- * @return The disk object for given qualified name
- */
- public Disk getDisk(String serverPartition) {
- List<Disk> allDisks = getReadyDisksOfAllServers();
- String diskInfo[] = serverPartition.split(":");
- for (Disk disk : allDisks) {
- if (disk.getServerName().equals(diskInfo[0]) && disk.getName().equals(diskInfo[1])) {
- return disk;
+ private Device getDevice(String serverName, String deviceName) {
+ List<Device> allDevices = getReadyDevicesOfAllServers();
+ for (Device device : allDevices) {
+ if (device.getServerName().equals(serverName) && device.getName().equals(deviceName)) {
+ return device;
}
}
return null;
@@ -436,85 +432,51 @@ public class GlusterDataModelManager {
/*
* @param diskName (sda)
*
- * @return The disk object for given disk name
+ * @return The device object for given device name
*/
- public Disk getDiskDetails(String diskName) {
- List<Disk> allDisks = getReadyDisksOfAllServers();
- for (Disk disk : allDisks) {
- if (disk.getName().equals(diskName)) {
- return disk;
+ public Device getDeviceDetails(String deviceName) {
+ List<Device> allDevices = getReadyDevicesOfAllServers();
+ for (Device device : allDevices) {
+ if (device.getName().equals(deviceName)) {
+ return device;
}
}
return null;
}
- public List<Disk> getReadyDisksOfVolume(Volume volume) {
- /*
- * TODO: review the logic
- *
- * List<Disk> disks = new ArrayList<Disk>(); for (Disk disk : volume.getDisks()) { if (disk.isReady()) {
- * disks.add(disk); } }
- */
- Disk disk = null;
- List<Disk> volumeDisks = new ArrayList<Disk>();
- for (Brick brick : volume.getBricks()) {
- disk = getDisk(brick.getServerName() + ":" + brick.getDiskName());
- // disk = new Disk();
- // disk.setServerName(brick.getServerName());
- // disk.setName(brick.getDiskName());
- // disk.setStatus(DISK_STATUS.READY);
- // disk.setMountPoint("/export/" + disk.getName());
- // disk.setSpace(250d);
- // disk.setSpaceInUse(186.39);
- if (disk != null && disk.isReady()) {
- volumeDisks.add(disk);
- }
- }
- return volumeDisks;
- }
-
- public List<Brick> getOnlineBricks(Volume volume) {
- List<Brick> onlineBricks = new ArrayList<Brick>();
+ public List<Device> getReadyDevicesOfVolume(Volume volume) {
+ Device device = null;
+ List<Device> volumeDevices = new ArrayList<Device>();
for (Brick brick : volume.getBricks()) {
- if (isOnlineDisk(brick.getDiskName())) {
- onlineBricks.add(brick);
+ device = getDevice(brick.getServerName(), brick.getDeviceName());
+ if (device != null && device.isReady()) {
+ volumeDevices.add(device);
}
}
- return onlineBricks;
- }
-
- public boolean isOnlineDisk(String diskName) {
- for (Disk disk : getReadyDisksOfAllServers()) {
- if (disk.getName().equals(diskName) && disk.isReady()) {
- return true;
- }
- }
- return false;
- }
-
- public List<Disk> getReadyDisksOfAllVolumes() {
- List<Disk> disks = new ArrayList<Disk>();
- for (Volume volume : model.getCluster().getVolumes()) {
- disks.addAll(getReadyDisksOfVolume(volume));
- }
- return disks;
+ return volumeDevices;
}
- public List<Disk> getReadyDisksOfAllServers() {
- return getReadyDisksOfAllServersExcluding(new ArrayList<Disk>());
+ public List<Device> getReadyDevicesOfAllServers() {
+ return getReadyDevicesOfAllServersExcluding(new ArrayList<Device>());
}
- public List<Disk> getReadyDisksOfAllServersExcluding(List<Disk> excludeDisks) {
- List<Disk> disks = new ArrayList<Disk>();
+ public List<Device> getReadyDevicesOfAllServersExcluding(List<Device> excludeDevices) {
+ List<Device> devices = new ArrayList<Device>();
for (Server server : model.getCluster().getServers()) {
for (Disk disk : server.getDisks()) {
- if (disk.isReady() && !excludeDisks.contains(disk)) {
- disks.add(disk);
+ if(disk.hasPartitions()) {
+ for(Partition partition : disk.getPartitions()) {
+ if(partition.isReady() && !excludeDevices.contains(partition)) {
+ devices.add(partition);
+ }
+ }
+ } else if (disk.isReady() && !excludeDevices.contains(disk)) {
+ devices.add(disk);
}
}
}
- return disks;
+ return devices;
}
public void addClusterListener(ClusterListener listener) {
@@ -721,7 +683,7 @@ public class GlusterDataModelManager {
private Boolean isDiskUsed(Volume volume, Disk disk) {
for (Brick brick : volume.getBricks()) {
- if (disk.getName().equals(brick.getDiskName()) && disk.getServerName().equals(brick.getServerName())) {
+ if (disk.getName().equals(brick.getDeviceName()) && disk.getServerName().equals(brick.getServerName())) {
return true;
}
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Brick.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Brick.java
index 0b330514..52978f2a 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Brick.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Brick.java
@@ -29,7 +29,7 @@ public class Brick extends Entity {
private String[] BRICK_STATUS_STR = {"Online", "Offline"};
private String serverName;
- private String diskName;
+ private String deviceName;
private String brickDirectory;
private BRICK_STATUS status;
@@ -54,10 +54,10 @@ public class Brick extends Entity {
this.status = status;
}
- public Brick(String serverName, BRICK_STATUS brickStatus, String diskName, String brickDirectory) {
+ public Brick(String serverName, BRICK_STATUS brickStatus, String deviceName, String brickDirectory) {
setServerName(serverName);
setStatus(brickStatus);
- setDiskName(diskName);
+ setDeviceName(deviceName);
setBrickDirectory(brickDirectory);
}
@@ -77,12 +77,12 @@ public class Brick extends Entity {
return brickDirectory;
}
- public void setDiskName(String diskName) {
- this.diskName = diskName;
+ public void setDeviceName(String deviceName) {
+ this.deviceName = deviceName;
}
- public String getDiskName() {
- return diskName;
+ public String getDeviceName() {
+ return deviceName;
}
public String getQualifiedName() {
@@ -90,7 +90,7 @@ public class Brick extends Entity {
}
public boolean filter(String filterString, boolean caseSensitive) {
- return StringUtil.filterString(getServerName() + getBrickDirectory() + getDiskName() + getStatusStr(), filterString,
+ return StringUtil.filterString(getServerName() + getBrickDirectory() + getDeviceName() + getStatusStr(), filterString,
caseSensitive);
}
@@ -116,7 +116,7 @@ public class Brick extends Entity {
public void copyFrom(Brick newBrick) {
setServerName(newBrick.getServerName());
setBrickDirectory(newBrick.getBrickDirectory());
- setDiskName(newBrick.getDiskName());
+ setDeviceName(newBrick.getDeviceName());
setStatus(newBrick.getStatus());
}
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Device.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Device.java
index ebb095f1..7c1d3d54 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Device.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Device.java
@@ -51,8 +51,8 @@ public class Device extends Entity {
private String serverName;
private String mountPoint;
- private Double space;
- private Double spaceInUse;
+ private Double space = 0.0;
+ private Double spaceInUse = 0.0;
private DEVICE_STATUS status;
public Device() {
@@ -73,7 +73,7 @@ public class Device extends Entity {
}
public Double getFreeSpace() {
- return getSpace() - getSpaceInUse();
+ return (getSpace() - getSpaceInUse());
}
public void setSpace(Double space) {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java
index f09f20ba..d6d3f7af 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java
@@ -18,9 +18,11 @@
*******************************************************************************/
package com.gluster.storage.management.core.model;
+import java.util.ArrayList;
import java.util.Collection;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import com.gluster.storage.management.core.utils.GlusterCoreUtil;
@@ -33,7 +35,7 @@ public class Disk extends Device {
// interface = pci, raid0, raid3, etc
private String diskInterface;
- private Collection<Partition> partitions;
+ private Collection<Partition> partitions = new ArrayList<Partition>();
// In case of a software raid, the disk will contain an array of other disks
private Collection<Disk> raidDisks;
@@ -58,6 +60,8 @@ public class Disk extends Device {
this.diskInterface = diskInterface;
}
+ @XmlElementWrapper(name="raidDisks")
+ @XmlElement(name="disk", type=Disk.class)
public Collection<Disk> getRaidDisks() {
return raidDisks;
}
@@ -70,9 +74,15 @@ public class Disk extends Device {
this.partitions = partitions;
}
+ @XmlElementWrapper(name="partitions")
+ @XmlElement(name="partition", type=Partition.class)
public Collection<Partition> getPartitions() {
return partitions;
}
+
+ public boolean hasPartitions() {
+ return (partitions != null && partitions.size() > 0);
+ }
public Disk(Server server, String name, String mountPoint, Double space, Double spaceInUse, DEVICE_STATUS status) {
super(server, name, mountPoint, space, spaceInUse, status);
@@ -80,8 +90,19 @@ public class Disk extends Device {
@Override
public boolean filter(String filterString, boolean caseSensitive) {
- return StringUtil.filterString(getServerName() + getName() + getStatusStr() + getSpace() + getFreeSpace()
- + getType() + getDescription(), filterString, caseSensitive);
+ if (StringUtil.filterString(getServerName() + getName() + getStatusStr() + getSpace() + getFreeSpace()
+ + getType() + getDescription(), filterString, caseSensitive)) {
+ return true;
+ }
+
+ // disk doesn't match. check if any of the partitions of this disk match the filter
+ for(Partition partition : getPartitions()) {
+ if(partition.filter(filterString, caseSensitive)) {
+ return true;
+ }
+ }
+
+ return false;
}
@Override
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Partition.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Partition.java
index a06b1e1c..ecf4035b 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Partition.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Partition.java
@@ -18,9 +18,18 @@
*******************************************************************************/
package com.gluster.storage.management.core.model;
-/**
- *
- */
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name="partition")
public class Partition extends Device {
+ public Partition() {
+ super();
+ }
+
+ public Partition(Server server, String name, String mountPoint, Double space, Double spaceInUse,
+ DEVICE_STATUS status) {
+ super(server, name, mountPoint, space, spaceInUse, status);
+ }
+
}
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 71e6e802..4ac1db41 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
@@ -23,8 +23,8 @@ import org.eclipse.swt.graphics.Image;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Brick;
+import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
-import com.gluster.storage.management.core.model.Disk;
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;
@@ -41,10 +41,10 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter {
}
Brick brick = (Brick) element;
- Disk disk = GlusterDataModelManager.getInstance().getDiskDetails(brick.getDiskName());
+ Device device = GlusterDataModelManager.getInstance().getDeviceDetails(brick.getDeviceName());
if (columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal()) {
- DEVICE_STATUS status = disk.getStatus();
+ DEVICE_STATUS status = device.getStatus();
// TODO: Use different images for all four statuses
switch (status) {
case INITIALIZED:
@@ -63,17 +63,17 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter {
return null;
}
- private String getDiskFreeSpace(Disk disk) {
- if (disk != null && disk.isReady() && disk.getFreeSpace() != null) {
- return NumberUtil.formatNumber((disk.getFreeSpace() / 1024));
+ private String getDeviceFreeSpace(Device device) {
+ if (device != null && device.isReady() && device.getFreeSpace() != null) {
+ return NumberUtil.formatNumber((device.getFreeSpace() / 1024));
} else {
return "NA";
}
}
- private String getDiskSpace(Disk disk) {
- if (disk.isReady() && disk.getSpace() != null && disk.getSpace() != 0.0) {
- return NumberUtil.formatNumber((disk.getSpace() / 1024));
+ private String getDeviceCapacity(Device device) {
+ if (device.isReady() && device.getSpace() != null && device.getSpace() != 0.0) {
+ return NumberUtil.formatNumber((device.getSpace() / 1024));
} else {
return "NA";
}
@@ -86,11 +86,11 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter {
}
Brick brick = (Brick) element;
- Disk disk = GlusterDataModelManager.getInstance().getDiskDetails(brick.getDiskName());
+ 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() ? getDiskFreeSpace(disk)
- : columnIndex == BRICK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal() ? getDiskSpace(disk)
+ : 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/DiskTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java
index 28d7c353..cdc2f9a8 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DeviceTableLabelProvider.java
@@ -18,34 +18,53 @@
*******************************************************************************/
package com.gluster.storage.management.gui;
+import org.eclipse.jface.resource.FontRegistry;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
-import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
+import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.utils.NumberUtil;
+import com.gluster.storage.management.core.model.Partition;
import com.gluster.storage.management.gui.utils.GUIHelper;
-import com.gluster.storage.management.gui.views.pages.DisksPage.DISK_TABLE_COLUMN_INDICES;
-public class DiskTableLabelProvider extends TableLabelProviderAdapter {
+public class DeviceTableLabelProvider extends LabelProvider implements ITableLabelProvider {
+
private GUIHelper guiHelper = GUIHelper.getInstance();
- private GlusterDataModelManager glusterDataModelManager = GlusterDataModelManager.getInstance();
+ public enum DEVICE_COLUMN_INDICES {
+ DISK, PARTITION, FREE_SPACE, SPACE_IN_USE, STATUS
+ };
+
+ FontRegistry registry = new FontRegistry();
+
+ public DeviceTableLabelProvider() {
+ }
@Override
public Image getColumnImage(Object element, int columnIndex) {
-
- if (!(element instanceof Disk)) {
+ if (!(element instanceof Device)) {
return null;
}
- // Brick brick = (Brick) element;
- // Disk disk = GlusterDataModelManager.getInstance().getDisk(brick.getDiskName());
- Disk disk = (Disk) element;
+ Device device = (Device) element;
+ if (columnIndex == DEVICE_COLUMN_INDICES.STATUS.ordinal()) {
+ DEVICE_STATUS status = device.getStatus();
+
+ if (status == null) {
+ if (element instanceof Partition) {
+ if (columnIndex == DEVICE_COLUMN_INDICES.STATUS.ordinal()) {
+ status = device.getStatus();
+ }
+ }
+ }
- if (columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal()) {
- DEVICE_STATUS status = disk.getStatus();
- // TODO: Use different images for different statuses
+ if (status == null) {
+ return null;
+ }
+
+ // TODO: Use different images for all four statuses
switch (status) {
case INITIALIZED:
return guiHelper.getImage(IImageKeys.STATUS_ONLINE);
@@ -63,33 +82,38 @@ public class DiskTableLabelProvider extends TableLabelProviderAdapter {
return null;
}
- private String getDiskFreeSpace(Disk disk) {
- if (disk.hasErrors() || disk.isUninitialized()) {
- return "NA";
- } else {
- return NumberUtil.formatNumber((disk.getFreeSpace() / 1024));
- }
- }
-
- private String getTotalDiskSpace(Disk disk) {
- if (disk.hasErrors() || disk.isUninitialized()) {
- return "NA";
- } else {
- return NumberUtil.formatNumber((disk.getSpace() / 1024));
- }
+ @Override
+ public String getText(Object element) {
+ return super.getText(element);
}
- @Override
public String getColumnText(Object element, int columnIndex) {
- if (!(element instanceof Disk)) {
- return null;
+
+ if (element == null) {
+ return "";
+ }
+
+ Device device = (Device) element;
+ if (columnIndex == DEVICE_COLUMN_INDICES.DISK.ordinal()) {
+ if (device instanceof Disk) {
+ return device.getQualifiedName();
+ } else {
+ return "";
+ }
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.FREE_SPACE.ordinal()) {
+ return "" + device.getFreeSpace();
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.SPACE_IN_USE.ordinal()) {
+ return "" + device.getSpaceInUse();
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.PARTITION.ordinal()) {
+ if (device instanceof Partition) {
+ return device.getQualifiedName();
+ } else {
+ return "";
+ }
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.STATUS.ordinal()) {
+ return device.getStatusStr();
+ } else {
+ return "";
}
-
- Disk disk = (Disk) element;
- return (columnIndex == DISK_TABLE_COLUMN_INDICES.SERVER.ordinal() ? disk.getServerName()
- : columnIndex == DISK_TABLE_COLUMN_INDICES.DISK.ordinal() ? disk.getName()
- : columnIndex == DISK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal() ? getDiskFreeSpace(disk)
- : columnIndex == DISK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal() ? getTotalDiskSpace(disk)
- : columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal() ? glusterDataModelManager.getDiskStatus(disk) : "Invalid");
}
-}
+} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
index 210436cb..732787d0 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
@@ -24,9 +24,13 @@ import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Device.DEVICE_STATUS;
+import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.Partition;
import com.gluster.storage.management.core.utils.NumberUtil;
+import com.gluster.storage.management.gui.DeviceTableLabelProvider.DEVICE_COLUMN_INDICES;
import com.gluster.storage.management.gui.utils.GUIHelper;
+//import com.gluster.storage.management.gui.views.pages.ServerDisksPage.SERVER_DISK_TABLE_COLUMN_INDICES;
import com.gluster.storage.management.gui.views.pages.ServerDisksPage.SERVER_DISK_TABLE_COLUMN_INDICES;
public class ServerDiskTableLabelProvider extends TableLabelProviderAdapter {
@@ -81,19 +85,29 @@ public class ServerDiskTableLabelProvider extends TableLabelProviderAdapter {
}
}
- @Override
public String getColumnText(Object element, int columnIndex) {
- if (!(element instanceof Disk)) {
- return null;
+ Device device = (Device) element;
+ if (columnIndex == DEVICE_COLUMN_INDICES.DISK.ordinal()) {
+ if (device instanceof Disk) {
+ return device.getName();
+ } else {
+ return "";
+ }
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.FREE_SPACE.ordinal()) {
+ return "" + device.getFreeSpace();
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.SPACE_IN_USE.ordinal()) {
+ return "" + device.getSpace();
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.PARTITION.ordinal()) {
+ if (device instanceof Partition) {
+ return device.getName();
+ } else {
+ return "";
+ }
+ } else if (columnIndex == DEVICE_COLUMN_INDICES.STATUS.ordinal()) {
+ return device.getStatusStr();
+ } else {
+ return "";
}
-
- Disk disk = (Disk) element;
- String columnText = (columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.DISK.ordinal() ? disk.getName()
- : columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal() ? getDiskFreeSpace(disk)
- : columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal() ? getTotalDiskSpace(disk)
- : columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal() ? glusterDataModelManager
- .getDiskStatus(disk) // disk.getStatusStr()
- : "Invalid");
- return ((columnText == null || columnText.trim().equals("")) ? CoreConstants.NA : columnText);
- }
+ }
+
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
index bd36ff7c..2856ea02 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
@@ -31,6 +31,7 @@ import org.eclipse.swt.widgets.Composite;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
+import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
@@ -42,8 +43,8 @@ import com.richclientgui.toolbox.duallists.IRemovableContentProvider;
*
*/
public class AddBrickPage extends WizardPage {
- private List<Disk> availableDisks = new ArrayList<Disk>();
- private List<Disk> selectedDisks = new ArrayList<Disk>();
+ private List<Device> availableDevices = new ArrayList<Device>();
+ private List<Device> selectedDevices = new ArrayList<Device>();
private Volume volume = null;
private BricksSelectionPage page = null;
@@ -66,34 +67,34 @@ public class AddBrickPage extends WizardPage {
}
setDescription(description);
- availableDisks = getAvailableDisks(volume);
+ availableDevices = getAvailableDevices(volume);
setPageComplete(false);
setErrorMessage("Please select bricks to be added to the volume [" + volume.getName() +"]");
}
- private boolean isDiskUsed(Volume volume, Disk disk){
- for (Brick volumeBrick : volume.getBricks()) { // expected form of volumeBrick is "server:/export/diskName/volumeName"
- if ( disk.getQualifiedBrickName(volume.getName()).equals(volumeBrick.getQualifiedName())) {
+ private boolean isDeviceUsed(Volume volume, Device device){
+ for (Brick volumeBrick : volume.getBricks()) {
+ if ( device.getQualifiedBrickName(volume.getName()).equals(volumeBrick.getQualifiedName())) {
return true;
}
}
return false;
}
- protected List<Disk> getAvailableDisks(Volume volume) {
- List<Disk> availableDisks = new ArrayList<Disk>();
- for (Disk disk : GlusterDataModelManager.getInstance().getReadyDisksOfAllServers()) {
- if ( ! isDiskUsed(volume, disk) ) {
- availableDisks.add(disk);
+ protected List<Device> getAvailableDevices(Volume volume) {
+ List<Device> availableDevices = new ArrayList<Device>();
+ for (Device device : GlusterDataModelManager.getInstance().getReadyDevicesOfAllServers()) {
+ if ( ! isDeviceUsed(volume, device) ) {
+ availableDevices.add(device);
}
}
- return availableDisks;
+ return availableDevices;
}
- public Set<Disk> getChosenDisks() {
- return new HashSet<Disk>(page.getChosenDisks());
+ public Set<Device> getChosenDevices() {
+ return new HashSet<Device>(page.getChosenDevices());
}
public Set<Brick> getChosenBricks( String volumeName ) {
@@ -122,16 +123,16 @@ public class AddBrickPage extends WizardPage {
@Override
public void createControl(Composite parent) {
getShell().setText("Add Brick");
- List<Disk> chosenDisks = new ArrayList<Disk>(); // or volume.getDisks();
+ List<Device> chosenDevices = new ArrayList<Device>(); // or volume.getDisks();
- page = new BricksSelectionPage(parent, SWT.NONE, availableDisks, chosenDisks, volume.getName());
- page.addDiskSelectionListener(new ListContentChangedListener<Disk>() {
+ page = new BricksSelectionPage(parent, SWT.NONE, availableDevices, chosenDevices, volume.getName());
+ page.addDiskSelectionListener(new ListContentChangedListener<Device>() {
@Override
- public void listContentChanged(IRemovableContentProvider<Disk> contentProvider) {
- List<Disk> newChosenDisks = page.getChosenDisks();
+ public void listContentChanged(IRemovableContentProvider<Device> contentProvider) {
+ List<Device> newChosenDevices = page.getChosenDevices();
// validate chosen disks
- if(isValidDiskSelection(newChosenDisks.size())) {
+ if(isValidDiskSelection(newChosenDevices.size())) {
clearError();
} else {
setError();
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/BricksSelectionPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/BricksSelectionPage.java
index db963b18..4ac01d14 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/BricksSelectionPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/BricksSelectionPage.java
@@ -39,6 +39,7 @@ import org.eclipse.swt.widgets.Text;
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.Disk;
import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.IImageKeys;
@@ -60,27 +61,27 @@ public class BricksSelectionPage extends Composite {
"Total Space (GB)" };
private GUIHelper guiHelper = GUIHelper.getInstance();
- private CustomTableDualListComposite<Disk> dualTableViewer;
+ private CustomTableDualListComposite<Device> dualTableViewer;
private Text filterText;
// This list keeps track of the order of the disks as user changes the same by clicking on up/down arrow buttons
- private List<Disk> chosenDisks = new ArrayList<Disk>();
+ private List<Device> chosenDevices = new ArrayList<Device>();
- private IRemovableContentProvider<Disk> chosenBricksContentProvider;
+ private IRemovableContentProvider<Device> chosenBricksContentProvider;
private Button btnUp;
private Button btnDown;
- public BricksSelectionPage(final Composite parent, int style, List<Disk> allDisks, List<Disk> selectedDisks,
+ public BricksSelectionPage(final Composite parent, int style, List<Device> allDevices, List<Device> selectedDevices,
String volumeName) {
super(parent, style);
- createPage(allDisks, selectedDisks, volumeName);
+ createPage(allDevices, selectedDevices, volumeName);
parent.layout();
}
- public void addDiskSelectionListener(ListContentChangedListener<Disk> listener) {
+ public void addDiskSelectionListener(ListContentChangedListener<Device> listener) {
dualTableViewer.addChosenListChangedSelectionListener(listener);
}
@@ -114,13 +115,13 @@ public class BricksSelectionPage extends Composite {
return -1;
}
- private void createPage(List<Disk> allDisks, List<Disk> selectedDisks, String volumeName) {
+ private void createPage(List<Device> allDevice, List<Device> selectedDevice, String volumeName) {
setupPageLayout();
filterText = guiHelper.createFilterText(this);
new Label(this, SWT.NONE);
- createDualTableViewer(allDisks, selectedDisks, volumeName);
+ createDualTableViewer(allDevice, selectedDevice, volumeName);
createFilter(filterText, false); // attach filter text to the dual table viewer for auto-filtering
Composite buttonContainer = new Composite(this, SWT.NONE);
@@ -138,17 +139,17 @@ public class BricksSelectionPage extends Composite {
@Override
public void widgetSelected(SelectionEvent e) {
- chosenDisks = getChosenDisks();
- List<Disk> selectedDisks = getSelectedChosenDisks();
-
- chosenBricksContentProvider.removeElements(chosenDisks);
- for (Disk disk : selectedDisks) {
- int index = chosenDisks.indexOf(disk);
- Disk diskAbove = chosenDisks.get(index - 1);
- chosenDisks.set(index - 1, disk);
- chosenDisks.set(index, diskAbove);
+ chosenDevices = getChosenDevices();
+ List<Device> selectedDevices = getSelectedChosenDevices();
+
+ chosenBricksContentProvider.removeElements(chosenDevices);
+ for (Device device : selectedDevices) {
+ int index = chosenDevices.indexOf(device);
+ Device deviceAbove = chosenDevices.get(index - 1);
+ chosenDevices.set(index - 1, device);
+ chosenDevices.set(index, deviceAbove);
}
- chosenBricksContentProvider.addElements(chosenDisks);
+ chosenBricksContentProvider.addElements(chosenDevices);
dualTableViewer.refreshChosenViewer();
updateButtons();
}
@@ -162,17 +163,17 @@ public class BricksSelectionPage extends Composite {
@Override
public void widgetSelected(SelectionEvent e) {
- chosenDisks = getChosenDisks();
- List<Disk> selectedDisks = getSelectedChosenDisks();
+ chosenDevices = getChosenDevices();
+ List<Device> selectedDevices = getSelectedChosenDevices();
- chosenBricksContentProvider.removeElements(chosenDisks);
- for (Disk disk : selectedDisks) {
- int index = chosenDisks.indexOf(disk);
- Disk diskBelow = chosenDisks.get(index + 1);
- chosenDisks.set(index + 1, disk);
- chosenDisks.set(index, diskBelow);
+ chosenBricksContentProvider.removeElements(chosenDevices);
+ for (Device disk : selectedDevices) {
+ int index = chosenDevices.indexOf(disk);
+ Device deviceBelow = chosenDevices.get(index + 1);
+ chosenDevices.set(index + 1, disk);
+ chosenDevices.set(index, deviceBelow);
}
- chosenBricksContentProvider.addElements(chosenDisks);
+ chosenBricksContentProvider.addElements(chosenDevices);
dualTableViewer.refreshChosenViewer();
updateButtons();
@@ -180,13 +181,13 @@ public class BricksSelectionPage extends Composite {
});
}
- private List<Disk> getSelectedChosenDisks() {
+ private List<Device> getSelectedChosenDevices() {
TableItem[] selectedItems = dualTableViewer.getChosenTable().getSelection();
- List<Disk> selectedDisks = new ArrayList<Disk>();
+ List<Device> selectedDevices = new ArrayList<Device>();
for (TableItem item : selectedItems) {
- selectedDisks.add((Disk) item.getData());
+ selectedDevices.add((Device) item.getData());
}
- return selectedDisks;
+ return selectedDevices;
}
private void createFilter(final Text filterText, boolean caseSensitive) {
@@ -219,24 +220,24 @@ public class BricksSelectionPage extends Composite {
dualTableViewer.setChosenViewerFilter(filter);
}
- private void createDualTableViewer(List<Disk> allDisks, List<Disk> selectedDisks, String volumeName) {
+ private void createDualTableViewer(List<Device> allDevices, List<Device> selectedDevices, String volumeName) {
TableColumnData[] columnData = createColumnData();
ITableLabelProvider diskLabelProvider = getDiskLabelProvider(volumeName);
- dualTableViewer = new CustomTableDualListComposite<Disk>(this, SWT.NONE, columnData, columnData);
+ dualTableViewer = new CustomTableDualListComposite<Device>(this, SWT.NONE, columnData, columnData);
dualTableViewer.setViewerLabels("Available:", "Selected:");
dualTableViewer.setAvailableTableLinesVisible(false);
dualTableViewer.setAvailableTableHeaderVisible(true);
- dualTableViewer.setAvailableContentProvider(new RemovableContentProvider<Disk>(getAvailableDisks(allDisks,
- selectedDisks)));
+ dualTableViewer.setAvailableContentProvider(new RemovableContentProvider<Device>(getAvailableDevice(allDevices,
+ selectedDevices)));
dualTableViewer.setAvailableLabelProvider(diskLabelProvider);
dualTableViewer.setChosenTableLinesVisible(true);
dualTableViewer.setChosenTableHeaderVisible(true);
- chosenBricksContentProvider = new RemovableContentProvider<Disk>(selectedDisks);
+ chosenBricksContentProvider = new RemovableContentProvider<Device>(selectedDevices);
dualTableViewer.setChosenContentProvider(chosenBricksContentProvider);
dualTableViewer.setChosenLabelProvider(diskLabelProvider);
@@ -256,32 +257,32 @@ public class BricksSelectionPage extends Composite {
private void updateButtons() {
btnUp.setEnabled(true);
btnDown.setEnabled(true);
- List<Disk> selectedChosenDisks = getSelectedChosenDisks();
- List<Disk> chosenDisks = getChosenDisks();
- for (Disk disk : selectedChosenDisks) {
- int index = chosenDisks.indexOf(disk);
+ List<Device> selectedChosenDevices = getSelectedChosenDevices();
+ List<Device> chosenDevices = getChosenDevices();
+ for (Device device : selectedChosenDevices) {
+ int index = chosenDevices.indexOf(device);
if (index == 0) {
btnUp.setEnabled(false);
}
- if (index == chosenDisks.size() - 1) {
+ if (index == chosenDevices.size() - 1) {
btnDown.setEnabled(false);
}
}
}
/**
- * @param allDisks
- * @param selectedDisks
+ * @param allDevices
+ * @param selectedDevices
* @return
*/
- private List<Disk> getAvailableDisks(List<Disk> allDisks, List<Disk> selectedDisks) {
- List<Disk> availableDisks = new ArrayList<Disk>();
- for (Disk disk : allDisks) {
- if (!selectedDisks.contains(disk)) {
- availableDisks.add(disk);
+ private List<Device> getAvailableDevice(List<Device> allDevices, List<Device> selectedDevices) {
+ List<Device> availableDevices = new ArrayList<Device>();
+ for (Device device : allDevices) {
+ if (!selectedDevices.contains(device)) {
+ availableDevices.add(device);
}
}
- return availableDisks;
+ return availableDevices;
}
private TableColumnData[] createColumnData() {
@@ -304,14 +305,14 @@ public class BricksSelectionPage extends Composite {
setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
}
- public List<Disk> getChosenDisks() {
- Object[] disksArr = (Object[]) chosenBricksContentProvider.getElements(dualTableViewer);
- if (disksArr != null) {
- List<Disk> disks = new ArrayList<Disk>();
- for (Object disk : disksArr) {
- disks.add((Disk) disk);
+ public List<Device> getChosenDevices() {
+ Object[] devicesArr = (Object[]) chosenBricksContentProvider.getElements(dualTableViewer);
+ if (devicesArr != null) {
+ List<Device> devices = new ArrayList<Device>();
+ for (Object device : devicesArr) {
+ devices.add((Device) device);
}
- return disks;
+ return devices;
}
return null;
}
@@ -321,9 +322,9 @@ public class BricksSelectionPage extends Composite {
if (bricksArr != null) {
Set<Brick> bricks = new HashSet<Brick>();
- for (Object disk : bricksArr) {
- bricks.add(new Brick(((Disk) disk).getServerName(), BRICK_STATUS.ONLINE, ((Disk) disk).getName(),
- ((Disk) disk).getMountPoint() + "/" + volumeName)); // Assumption mount point is not having
+ for (Object device : bricksArr) {
+ bricks.add(new Brick(((Device) device).getServerName(), BRICK_STATUS.ONLINE, ((Device) device).getName(),
+ ((Device) device).getMountPoint() + "/" + volumeName)); // Assumption mount point is not having
// trailing "/"
}
return bricks;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java
index e7f46a66..cd2de837 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java
@@ -49,6 +49,7 @@ import org.eclipse.swt.widgets.Text;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
+import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Brick.BRICK_STATUS;
@@ -63,11 +64,11 @@ public class CreateVolumePage1 extends WizardPage {
private ComboViewer typeComboViewer;
private Text txtAccessControl;
private Volume volume = new Volume();
- private List<Disk> allDisks;
private Button btnNfs;
private Button btnStartVolume;
private Link linkCustomize;
- private List<Disk> selectedDisks;
+ private List<Device> allDevices;
+ private List<Device> selectedDevices;
/**
* Create the wizard.
@@ -78,8 +79,8 @@ public class CreateVolumePage1 extends WizardPage {
setDescription("Create a new Volume by choosing bricks from the cluster servers and configuring the volume properties.");
// by default, we create volume with all available disks
- allDisks = GlusterDataModelManager.getInstance().getReadyDisksOfAllServers();
- selectedDisks = allDisks; // volume.setDisks(allDisks);
+ allDevices = GlusterDataModelManager.getInstance().getReadyDevicesOfAllServers();
+ selectedDevices = allDevices; // volume.setDisks(allDisks);
}
private List<String> getBricks(List<Disk> allDisks) {
@@ -195,13 +196,13 @@ public class CreateVolumePage1 extends WizardPage {
@Override
public void run() {
- SelectDisksDialog dialog = new SelectDisksDialog(getShell(), allDisks, selectedDisks, txtName.getText().trim());
+ SelectDisksDialog dialog = new SelectDisksDialog(getShell(), allDevices, selectedDevices, txtName.getText().trim());
dialog.create();
if(dialog.open() == Window.OK) {
// user has customized disks. get them from the dialog box.
- selectedDisks = dialog.getSelectedDisks();
- linkCustomize.setText("" + selectedDisks.size() + " Brick(s) (<a>customize</a>)");
+ selectedDevices = dialog.getSelectedDevices();
+ linkCustomize.setText("" + selectedDevices.size() + " Brick(s) (<a>customize</a>)");
validateForm();
}
}
@@ -306,8 +307,8 @@ public class CreateVolumePage1 extends WizardPage {
volume.setAccessControlList(txtAccessControl.getText());
- for(Disk disk : selectedDisks) {
- Brick brick = new Brick(disk.getServerName(), BRICK_STATUS.ONLINE, disk.getName(), disk.getMountPoint() + File.separator + volume.getName());
+ for(Device device : selectedDevices) {
+ Brick brick = new Brick(device.getServerName(), BRICK_STATUS.ONLINE, device.getName(), device.getMountPoint() + File.separator + volume.getName());
volume.addBrick(brick);
}
@@ -337,7 +338,7 @@ public class CreateVolumePage1 extends WizardPage {
}
private void validateDisks() {
- int diskCount = selectedDisks.size();
+ int diskCount = selectedDevices.size();
if(diskCount < 1) {
setError("At least one brick must be selected!");
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
index f7ce744f..f8fce5e4 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
@@ -45,6 +45,7 @@ import org.eclipse.swt.widgets.Text;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Brick;
+import com.gluster.storage.management.core.model.Device;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.utils.NumberUtil;
@@ -209,15 +210,15 @@ public class MigrateBrickPage1 extends WizardPage {
ITableLabelProvider diskLabelProvider = getDiskLabelProvider(volume.getName());
GlusterDataModelManager glusterDataModelManager = GlusterDataModelManager.getInstance();
- List<Disk> fromBricks = glusterDataModelManager.getReadyDisksOfVolume(volume);
- List<Disk> toDisks = glusterDataModelManager.getReadyDisksOfAllServersExcluding( fromBricks );
+ List<Device> fromBricks = glusterDataModelManager.getReadyDevicesOfVolume(volume);
+ List<Device> toDevices = glusterDataModelManager.getReadyDevicesOfAllServersExcluding( fromBricks );
tableViewerFrom = createTableViewer(container, diskLabelProvider, fromBricks, txtFilterFrom);
if(fromBrick != null) {
setFromDisk(tableViewerFrom, fromBrick);
}
- tableViewerTo = createTableViewer(container, diskLabelProvider, toDisks, txtFilterTo);
+ tableViewerTo = createTableViewer(container, diskLabelProvider, toDevices, txtFilterTo);
// Auto commit selection field
Composite autoCommitContainer = new Composite(container, SWT.NONE);
@@ -251,7 +252,7 @@ public class MigrateBrickPage1 extends WizardPage {
}
private TableViewer createTableViewer(Composite container, ITableLabelProvider diskLabelProvider,
- List<Disk> bricks, Text txtFilterText) {
+ List<Device> bricks, Text txtFilterText) {
Composite tableViewerComposite = createTableViewerComposite(container);
TableViewer tableViewer = new TableViewer(tableViewerComposite, SWT.SINGLE);
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java
index e010ed5c..f939e12d 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java
@@ -33,13 +33,13 @@ import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import com.gluster.storage.management.core.model.Brick;
-import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.Device;
public class SelectDisksDialog extends Dialog {
private BricksSelectionPage disksPage;
- private List<Disk> allDisks;
- private List<Disk> selectedDisks;
+ private List<Device> allDevices;
+ private List<Device> selectedDevices;
private String volumeName;
/**
@@ -47,11 +47,11 @@ public class SelectDisksDialog extends Dialog {
*
* @param parentShell
*/
- public SelectDisksDialog(Shell parentShell, List<Disk> allDisks, List<Disk> selectedDisks, String volumeName) {
+ public SelectDisksDialog(Shell parentShell, List<Device> allDevices, List<Device> selectedDevices, String volumeName) {
super(parentShell);
setShellStyle(getShellStyle() | SWT.RESIZE);
- this.allDisks = allDisks;
- this.selectedDisks = selectedDisks;
+ this.allDevices = allDevices;
+ this.selectedDevices = selectedDevices;
this.volumeName = volumeName;
}
@@ -70,7 +70,7 @@ public class SelectDisksDialog extends Dialog {
getShell().setText("Create Volume - Select Bricks");
- disksPage = new BricksSelectionPage(container, SWT.NONE, allDisks, selectedDisks, volumeName);
+ disksPage = new BricksSelectionPage(container, SWT.NONE, allDevices, selectedDevices, volumeName);
return container;
}
@@ -101,15 +101,15 @@ public class SelectDisksDialog extends Dialog {
@Override
protected void okPressed() {
- if (this.getSelectedDisks().size() == 0) {
+ if (this.getSelectedDevices().size() == 0) {
MessageDialog.openError(getShell(), "Select Brick(s)", "Please select atlease one brick");
} else {
super.okPressed();
}
}
- public List<Disk> getSelectedDisks() {
- return disksPage.getChosenDisks();
+ public List<Device> getSelectedDevices() {
+ return disksPage.getChosenDevices();
}
public Set<Brick> getSelectedBricks(String volumeName) {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java
index d6fd5d03..c4ddc31b 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/utils/GUIHelper.java
@@ -46,6 +46,7 @@ import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
@@ -249,6 +250,9 @@ public class GUIHelper {
// Refresh viewer with newly filtered content
viewer.refresh(true);
+ if(viewer instanceof TreeViewer) {
+ ((TreeViewer)viewer).expandAll();
+ }
}
});
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DisksView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DisksView.java
index 0910c080..2d4a3036 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DisksView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/DisksView.java
@@ -19,6 +19,7 @@ public class DisksView extends ViewPart {
private EntityGroup<GlusterServer> servers;
private DisksPage page;
+ @SuppressWarnings("unchecked")
@Override
public void createPartControl(Composite parent) {
if (servers == null) {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
index d3eb7f6c..8c4d2572 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeSummaryView.java
@@ -419,7 +419,7 @@ public class VolumeSummaryView extends ViewPart {
private double getTotalDiskSpace() {
double diskSize = 0;
for (Brick brick : volume.getBricks()) {
- diskSize += getDiskSize(brick.getServerName(), brick.getDiskName());
+ diskSize += getDiskSize(brick.getServerName(), brick.getDeviceName());
}
return diskSize;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
index d58394e2..966f8921 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java
@@ -22,20 +22,18 @@ import java.net.URI;
import java.util.List;
import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.TableEditor;
+import org.eclipse.swt.custom.TreeEditor;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
@@ -44,8 +42,7 @@ import org.eclipse.ui.forms.widgets.ImageHyperlink;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.client.GlusterServersClient;
import com.gluster.storage.management.client.TasksClient;
-import com.gluster.storage.management.core.model.ClusterListener;
-import com.gluster.storage.management.core.model.DefaultClusterListener;
+import com.gluster.storage.management.core.model.Device;
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.Entity;
@@ -54,8 +51,8 @@ import com.gluster.storage.management.gui.Application;
import com.gluster.storage.management.gui.IEntityListener;
import com.gluster.storage.management.gui.dialogs.InitializeDiskTypeSelection;
-public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> implements IEntityListener {
- private List<Disk> disks;
+public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk> implements IEntityListener {
+ protected List<Disk> disks;
/**
* @return Index of the "status" column in the table. Return -1 if status column is not displayed
@@ -63,7 +60,7 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
protected abstract int getStatusColumnIndex();
public AbstractDisksPage(final Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
- super(site, parent, style, true, true, disks);
+ super(site, parent, style, false, true, disks);
this.disks = disks;
// creates hyperlinks for "unitialized" disks
@@ -72,45 +69,30 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
Application.getApplication().addEntityListener(this);
}
- @Override
- protected IContentProvider getContentProvider() {
- return new ArrayContentProvider();
- }
-
- @Override
- protected List<Disk> getAllEntities() {
- return disks;
- }
-
- @Override
- protected ClusterListener createClusterListener() {
- return new DefaultClusterListener();
- }
-
- private void createInitializeLink(final TableItem item, final int rowNum, final Disk disk) {
- final Table table = tableViewer.getTable();
- final TableEditor editor = new TableEditor(table);
+ private void createInitializeLink(final TreeItem item, final int rowNum, final Device device) {
+ final Tree tree = treeViewer.getTree(); // .getTableTree();
+ final TreeEditor editor = new TreeEditor(tree);
editor.grabHorizontal = true;
editor.horizontalAlignment = SWT.RIGHT;
- table.addPaintListener(new PaintListener() {
- private TableItem myItem = item;
+ tree.addPaintListener(new PaintListener() {
+ private TreeItem myItem = item;
private int myRowNum = rowNum;
private ImageHyperlink myLink = null;
- private TableEditor myEditor = null;
+ private TreeEditor myEditor = null;
- private void createLinkFor(Disk disk1, TableItem item1, int rowNum1) {
+ private void createLinkFor(Device device, TreeItem item1, int rowNum1) {
myItem = item1;
myRowNum = rowNum1;
- myEditor = new TableEditor(table);
+ myEditor = new TreeEditor(tree);
myEditor.grabHorizontal = true;
myEditor.horizontalAlignment = SWT.RIGHT;
- myLink = toolkit.createImageHyperlink(table, SWT.NONE);
+ myLink = toolkit.createImageHyperlink(tree, SWT.NONE);
// link.setImage(guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED));
myLink.setText("Initialize");
- myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, myItem, tableViewer, disk1));
+ myLink.addHyperlinkListener(new StatusLinkListener(myLink, myEditor, treeViewer, device));
myEditor.setEditor(myLink, item1, getStatusColumnIndex());
@@ -125,16 +107,16 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
@Override
public void paintControl(PaintEvent e) {
- int itemCount = table.getItemCount();
+ int itemCount = tree.getItemCount();
// Find the table item corresponding to our disk
- Disk disk1 = null;
+ Device device1 = null;
int rowNum1 = -1;
- TableItem item1 = null;
+ TreeItem item1 = null;
for (int i = 0; i < itemCount; i++) {
- item1 = table.getItem(i);
- disk1 = (Disk) item1.getData();
- if (disk1 != null && disk1 == disk) {
+ item1 = tree.getItem(i);
+ device1 = (Device) item1.getData();
+ if (device1 != null && device1 == device) {
rowNum1 = i;
break;
}
@@ -149,14 +131,14 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
// item visible, and
// either editor never created, OR
// old item disposed. create the link for it
- createLinkFor(disk1, item1, rowNum1);
+ createLinkFor(device1, item1, rowNum1);
}
if (rowNum1 != myRowNum) {
// disk visible, but at a different row num. re-create the link
myLink.dispose();
myEditor.dispose();
- createLinkFor(disk1, item1, rowNum1);
+ createLinkFor(device1, item1, rowNum1);
}
myEditor.layout(); // IMPORTANT. Without this, the link location goes for a toss on maximize + restore
@@ -165,29 +147,28 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
}
private void setupStatusCellEditor() {
- final TableViewer viewer = tableViewer;
- final Table table = viewer.getTable();
- for (int i = 0; i < table.getItemCount(); i++) {
- final TableItem item = table.getItem(i);
+ final TreeViewer viewer = treeViewer;
+ final Tree tree = viewer.getTree();
+ for (int i = 0; i < tree.getItemCount(); i++) {
+ final TreeItem item = tree.getItem(i);
if (item.isDisposed() || item.getData() == null) {
continue;
}
- final Disk disk = (Disk) item.getData();
- if (disk.isUninitialized()) {
- createInitializeLink(item, i, disk);
+ final Device device = (Device) item.getData();
+ if (device.isUninitialized()) {
+ createInitializeLink(item, i, device);
}
}
}
private final class StatusLinkListener extends HyperlinkAdapter {
- private final Disk disk;
- private final TableEditor myEditor;
+ private final Device device;
+ private final TreeEditor myEditor;
private final ImageHyperlink myLink;
- private final TableViewer viewer;
+ private final TreeViewer viewer;
- private StatusLinkListener(ImageHyperlink link, TableEditor editor, TableItem item, TableViewer viewer,
- Disk disk) {
- this.disk = disk;
+ private StatusLinkListener(ImageHyperlink link, TreeEditor editor, TreeViewer viewer, Device device) {
+ this.device = device;
this.viewer = viewer;
this.myEditor = editor;
this.myLink = link;
@@ -198,9 +179,9 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
myLink.dispose();
myEditor.dispose();
}
- disk.setStatus(status);
- viewer.update(disk, new String[] { "status" });
- Application.getApplication().entityChanged(disk, new String[] { "status" });
+ device.setStatus(status);
+ viewer.update(device, new String[] { "status" });
+ Application.getApplication().entityChanged(device, new String[] { "status" });
}
@Override
@@ -214,7 +195,7 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
GlusterServersClient serversClient = new GlusterServersClient();
try {
- URI uri = serversClient.initializeDisk(disk.getServerName(), disk.getName(), formatDialog.getFSType());
+ URI uri = serversClient.initializeDisk(device.getServerName(), device.getName(), formatDialog.getFSType());
TasksClient taskClient = new TasksClient();
TaskInfo taskInfo = taskClient.getTaskInfo(uri);
@@ -230,22 +211,22 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im
@Override
public void entityChanged(final Entity entity, final String[] paremeters) {
- if (!(entity instanceof Disk)) {
+ if (!(entity instanceof Device)) {
return;
}
- final Disk disk = (Disk) entity;
+ final Device device = (Device) entity;
Display.getDefault().syncExec(new Runnable() {
public void run() {
- tableViewer.update(disk, paremeters);
-
- if (disk.isUninitialized()) {
- Table table = tableViewer.getTable();
-
- for (int rowNum = 0; rowNum < table.getItemCount(); rowNum++) {
- TableItem item = table.getItem(rowNum);
- if (item.getData() == disk) {
- createInitializeLink(item, rowNum, disk);
+ treeViewer.update(device, paremeters);
+
+ if (device.isUninitialized()) {
+ Tree tree = treeViewer.getTree();
+
+ for (int rowNum = 0; rowNum < tree.getItemCount(); rowNum++) {
+ TreeItem item = tree.getItem(rowNum);
+ if (item.getData() == device) {
+ createInitializeLink(item, rowNum, device);
}
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java
new file mode 100644
index 00000000..05a74b03
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java
@@ -0,0 +1,163 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.gui.views.pages;
+
+import java.util.List;
+
+import org.eclipse.jface.layout.TreeColumnLayout;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.IContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchSite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Hyperlink;
+
+import com.gluster.storage.management.core.model.ClusterListener;
+import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.gui.utils.GUIHelper;
+
+public abstract class AbstractTableTreeViewerPage<T> extends Composite implements ISelectionListener {
+
+
+ protected final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
+ protected TreeViewer treeViewer;
+ protected GUIHelper guiHelper = GUIHelper.getInstance();
+ protected Composite parent;
+ protected IWorkbenchSite site;
+
+ private Text filterText;
+
+ private void setupPageLayout() {
+ final GridLayout layout = new GridLayout(1, false);
+ layout.verticalSpacing = 10;
+ layout.marginTop = 10;
+ setLayout(layout);
+ }
+
+ private Composite createTreeViewerComposite() {
+ Composite tableViewerComposite = new Composite(this, SWT.NO);
+ tableViewerComposite.setLayout(new FillLayout(SWT.HORIZONTAL));
+ tableViewerComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ GridData layoutData = new GridData();
+ layoutData.horizontalSpan=5;
+ layoutData.grabExcessHorizontalSpace = true;
+ layoutData.horizontalAlignment = SWT.FILL;
+ layoutData.verticalAlignment = SWT.FILL;
+ layoutData.grabExcessVerticalSpace = true;
+ tableViewerComposite.setLayoutData(layoutData);
+
+ return tableViewerComposite;
+ }
+
+
+ public AbstractTableTreeViewerPage(IWorkbenchSite site, final Composite parent, int style, boolean useChechboxes,
+ boolean multiSelection, List<Disk> allDisks) {
+ super(parent, style);
+
+ setupPageLayout();
+ //new FormToolkit(Display.getCurrent()).createButton(this, "test1", SWT.PUSH);
+
+ this.parent = parent;
+ this.site = site;
+
+ toolkit.adapt(this);
+ toolkit.paintBordersFor(this);
+
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+ parent.setLayoutData(data);
+
+ filterText = guiHelper.createFilterText(toolkit, this);
+
+ Composite tableViewerComposite = createTreeViewerComposite();
+ createTreeViewer(allDisks, tableViewerComposite);
+ parent.layout();
+ }
+
+ protected abstract IBaseLabelProvider getLabelProvider();
+ protected abstract IContentProvider getContentProvider();
+
+ private void createTreeViewer(List<Disk> allDisks, Composite tableViewerComposite) {
+ treeViewer = new TreeViewer(tableViewerComposite);
+ treeViewer.getTree().setHeaderVisible(true);
+ treeViewer.getTree().setLinesVisible(true);
+
+ TreeColumnLayout ad = new TreeColumnLayout();
+ tableViewerComposite.setLayout(ad);
+
+ TreeColumn column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
+ column.setWidth(100);
+ column.setText("Disk");
+ ad.setColumnData(column, new ColumnWeightData(50, 100));
+
+ column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
+ column.setWidth(100);
+ column.setText("Partition");
+ ad.setColumnData(column,new ColumnWeightData(50, 100));
+
+ column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
+ column.setWidth(100);
+ column.setText("Free Space (GB)");
+ ad.setColumnData(column, new ColumnWeightData(50, 100));
+
+ column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
+ column.setWidth(100);
+ column.setText("Total Space (GB)");
+ ad.setColumnData(column,new ColumnWeightData(50, 100));
+
+ column = new TreeColumn(treeViewer.getTree(),SWT.NONE);
+ column.setWidth(100);
+ column.setText("Status");
+ ad.setColumnData(column,new ColumnWeightData(50, 100));
+
+ treeViewer.setLabelProvider(getLabelProvider());
+ treeViewer.setContentProvider(getContentProvider());
+ treeViewer.setInput(allDisks);
+
+ // Create a case insensitive filter for the table viewer using the filter text field
+ guiHelper.createFilter(treeViewer, filterText, false);
+
+ treeViewer.expandAll();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
+ */
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ }
+
+ protected ClusterListener createClusterListener() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DiskTreeContentProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DiskTreeContentProvider.java
new file mode 100644
index 00000000..c5158087
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DiskTreeContentProvider.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
+ * This file is part of Gluster Management Console.
+ *
+ * Gluster Management Console is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gluster Management Console is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
+package com.gluster.storage.management.gui.views.pages;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.Partition;
+
+public class DiskTreeContentProvider implements ITreeContentProvider {
+
+ private List<Disk> disks = new ArrayList<Disk>();
+
+ public DiskTreeContentProvider(List<Disk> disks) {
+ this.disks = disks;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
+ */
+ public Object[] getElements(Object inputElement) {
+ return ((List<Disk>) inputElement).toArray();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+ */
+ public void dispose() {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
+ * java.lang.Object, java.lang.Object)
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
+ */
+ public Object[] getChildren(Object parentElement) {
+ if(parentElement instanceof Disk) {
+ return ((Disk)parentElement).getPartitions().toArray();
+ } else {
+ return null;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
+ */
+ public Object getParent(Object element) {
+ if (element == null) {
+ return null;
+ }
+
+ if(element instanceof Partition) {
+ // find the disk of this partition and return
+ return getDiskForPartition((Partition)element);
+ } else {
+ return null;
+ }
+ }
+
+ private Disk getDiskForPartition(Partition partition) {
+ for(Disk disk : disks) {
+ for(Partition diskPartition : disk.getPartitions()) {
+ if(partition.getName().equals(diskPartition.getName())) {
+ return disk;
+ }
+ }
+ }
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
+ */
+ public boolean hasChildren(Object element) {
+ if(element instanceof Disk && ((Disk)element).getPartitions().size() > 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+
+
+}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java
index bd14607e..c8cf8028 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/DisksPage.java
@@ -20,49 +20,51 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.swt.SWT;
+import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.IWorkbenchSite;
import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.gui.DiskTableLabelProvider;
+import com.gluster.storage.management.core.model.Entity;
+import com.gluster.storage.management.gui.DeviceTableLabelProvider;
public class DisksPage extends AbstractDisksPage {
public enum DISK_TABLE_COLUMN_INDICES {
- SERVER, DISK, FREE_SPACE, TOTAL_SPACE, STATUS
+ DISK, PARTITION, FREE_SPACE, TOTAL_SPACE, STATUS
};
- private static final String[] DISK_TABLE_COLUMN_NAMES = new String[] { "Server", "Disk", "Free Space (GB)",
+ private static final String[] DISK_TABLE_COLUMN_NAMES = new String[] { "Disk", "Partition", "Free Space (GB)",
"Total Space (GB)", "Status" };
public DisksPage(final Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
super(parent, style, site, disks);
}
- @Override
- protected String[] getColumnNames() {
- return DISK_TABLE_COLUMN_NAMES;
+ private String getDiskTableColumnDesc(DISK_TABLE_COLUMN_INDICES idx) {
+ return DISK_TABLE_COLUMN_NAMES[idx.ordinal()];
}
-
+
@Override
- protected void setColumnProperties(Table table) {
- guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.SERVER.ordinal(), SWT.CENTER, 100);
- guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.DISK.ordinal(), SWT.CENTER, 100);
- guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal(), SWT.CENTER, 90);
- guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal(), SWT.CENTER, 90);
- // guiHelper.setColumnProperties(table, DISK_TABLE_COLUMN_INDICES.SPACE_IN_USE.ordinal(), SWT.CENTER, 90);
+ protected DeviceTableLabelProvider getLabelProvider() {
+ return new DeviceTableLabelProvider();
}
+
@Override
- protected IBaseLabelProvider getLabelProvider() {
- return new DiskTableLabelProvider();
+ protected IContentProvider getContentProvider() {
+ return new DiskTreeContentProvider(disks);
}
@Override
protected int getStatusColumnIndex() {
return DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
}
+
+ @Override
+ public void entityChanged(Entity entity, String[] paremeters) {
+ // TODO Auto-generated method stub
+
+ }
+
} \ No newline at end of file
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java
index b993f73e..2428a1a0 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/ServerDisksPage.java
@@ -20,47 +20,47 @@ package com.gluster.storage.management.gui.views.pages;
import java.util.List;
-import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.swt.SWT;
+import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
import org.eclipse.ui.IWorkbenchSite;
import com.gluster.storage.management.core.model.Disk;
+import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.gui.ServerDiskTableLabelProvider;
-public class ServerDisksPage extends AbstractDisksPage {
+public class ServerDisksPage extends AbstractDisksPage {
+
public ServerDisksPage(Composite parent, int style, IWorkbenchSite site, List<Disk> disks) {
super(parent, style, site, disks);
}
public enum SERVER_DISK_TABLE_COLUMN_INDICES {
- DISK, FREE_SPACE, TOTAL_SPACE, STATUS
+ DISK, PARTITION, FREE_SPACE, TOTAL_SPACE, STATUS
};
- private static final String[] SERVER_DISK_TABLE_COLUMN_NAMES = new String[] { "Disk", "Free Space (GB)",
+ private static final String[] SERVER_DISK_TABLE_COLUMN_NAMES = new String[] { "Disk", "Partition", "Free Space (GB)",
"Total Space (GB)", "Status" };
@Override
- protected String[] getColumnNames() {
- return SERVER_DISK_TABLE_COLUMN_NAMES;
+ protected int getStatusColumnIndex() {
+ return SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
}
-
+
@Override
- protected void setColumnProperties(Table table) {
- guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.DISK.ordinal(), SWT.CENTER, 100);
- guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal(), SWT.CENTER, 90);
- guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal(), SWT.CENTER, 90);
- guiHelper.setColumnProperties(table, SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal(), SWT.LEFT, 90);
+ protected ServerDiskTableLabelProvider getLabelProvider() {
+ // return new DeviceTableLabelProvider();
+ return new ServerDiskTableLabelProvider();
}
+
@Override
- protected int getStatusColumnIndex() {
- return SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal();
+ protected IContentProvider getContentProvider() {
+ return new DiskTreeContentProvider(disks);
}
@Override
- protected IBaseLabelProvider getLabelProvider() {
- return new ServerDiskTableLabelProvider();
+ public void entityChanged(Entity entity, String[] paremeters) {
+ // TODO Auto-generated method stub
+
}
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java
index 43708239..a5f366a2 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java
@@ -152,12 +152,10 @@ public class GlusterServersResource extends AbstractServersResource {
String errMsg = "";
for (GlusterServer server : glusterServers) {
- if (server.getStatus() == SERVER_STATUS.ONLINE && !server.getName().equals(onlineServer.getName())) {
- try {
- fetchServerDetails(server);
- } catch (Exception e) {
- errMsg += CoreConstants.NEWLINE + server.getName() + " : [" + e.getMessage() + "]";
- }
+ try {
+ fetchServerDetails(server);
+ } catch (Exception e) {
+ errMsg += CoreConstants.NEWLINE + server.getName() + " : [" + e.getMessage() + "]";
}
}
return errMsg;