summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-07-15 14:06:58 +0530
committerDhandapani <dhandapani@gluster.com>2011-07-15 14:44:34 +0530
commitb4f1bd556d85e3638989200867c42219e114bc72 (patch)
tree77c95b62022d0aa1d7ea543c65f5a7b2655fd434 /src
parent691f4b7519a7758de9316766d9963d68cdd50924 (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.java62
-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.java21
-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)95
-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.java35
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/BricksSelectionPage.java107
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java19
-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.java17
-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.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerDisksView.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.java165
-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.java39
-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
21 files changed, 662 insertions, 297 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..861238ea 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;
@@ -422,10 +424,10 @@ public class GlusterDataModelManager {
* 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();
+ public Device getDisk(String serverPartition) {
+ List<Device> allDevices = getReadyDevicesOfAllServers();
String diskInfo[] = serverPartition.split(":");
- for (Disk disk : allDisks) {
+ for (Device disk : allDevices) {
if (disk.getServerName().equals(diskInfo[0]) && disk.getName().equals(diskInfo[1])) {
return disk;
}
@@ -436,27 +438,27 @@ 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> allDisks = getReadyDevicesOfAllServers();
+ for (Device device : allDisks) {
+ if (device.getName().equals(deviceName)) {
+ return device;
}
}
return null;
}
- public List<Disk> getReadyDisksOfVolume(Volume volume) {
+ public List<Device> 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>();
+ Device disk = null;
+ List<Device> volumeDisks = new ArrayList<Device>();
for (Brick brick : volume.getBricks()) {
disk = getDisk(brick.getServerName() + ":" + brick.getDiskName());
// disk = new Disk();
@@ -476,45 +478,51 @@ public class GlusterDataModelManager {
public List<Brick> getOnlineBricks(Volume volume) {
List<Brick> onlineBricks = new ArrayList<Brick>();
for (Brick brick : volume.getBricks()) {
- if (isOnlineDisk(brick.getDiskName())) {
+ if (isOnlineDevice(brick.getDiskName())) {
onlineBricks.add(brick);
}
}
return onlineBricks;
}
- public boolean isOnlineDisk(String diskName) {
- for (Disk disk : getReadyDisksOfAllServers()) {
- if (disk.getName().equals(diskName) && disk.isReady()) {
+ public boolean isOnlineDevice(String deviceName) {
+ for (Device device : getReadyDevicesOfAllServers()) {
+ if (device.getName().equals(deviceName) && device.isReady()) {
return true;
}
}
return false;
}
- public List<Disk> getReadyDisksOfAllVolumes() {
- List<Disk> disks = new ArrayList<Disk>();
+ public List<Device> getReadyDevicesOfAllVolumes() {
+ List<Device> device = new ArrayList<Device>();
for (Volume volume : model.getCluster().getVolumes()) {
- disks.addAll(getReadyDisksOfVolume(volume));
+ device.addAll(getReadyDisksOfVolume(volume));
}
- return disks;
+ return device;
}
- 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) {
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..9b5da750 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,6 +23,7 @@ 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;
@@ -41,7 +42,7 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter {
}
Brick brick = (Brick) element;
- Disk disk = GlusterDataModelManager.getInstance().getDiskDetails(brick.getDiskName());
+ Device disk = GlusterDataModelManager.getInstance().getDeviceDetails(brick.getDiskName());
if (columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal()) {
DEVICE_STATUS status = disk.getStatus();
@@ -63,17 +64,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 getDiskFreeSpace(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 getDiskSpace(Device device) {
+ if (device.isReady() && device.getSpace() != null && device.getSpace() != 0.0) {
+ return NumberUtil.formatNumber((device.getSpace() / 1024));
} else {
return "NA";
}
@@ -86,11 +87,11 @@ public class BrickTableLabelProvider extends TableLabelProviderAdapter {
}
Brick brick = (Brick) element;
- Disk disk = GlusterDataModelManager.getInstance().getDiskDetails(brick.getDiskName());
+ Device device = GlusterDataModelManager.getInstance().getDeviceDetails(brick.getDiskName());
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() ? getDiskFreeSpace(device)
+ : columnIndex == BRICK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal() ? getDiskSpace(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..3d569728 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,56 @@
*******************************************************************************/
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() {
+ // TODO Auto-generated constructor stub
+ }
@Override
public Image getColumnImage(Object element, int columnIndex) {
-
if (!(element instanceof Disk)) {
return null;
}
- // Brick brick = (Brick) element;
- // Disk disk = GlusterDataModelManager.getInstance().getDisk(brick.getDiskName());
Disk disk = (Disk) element;
-
if (columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal()) {
DEVICE_STATUS status = disk.getStatus();
- // TODO: Use different images for different statuses
+
+ if (status == null) {
+ if (element instanceof Partition) {
+ if (columnIndex == DISK_TABLE_COLUMN_INDICES.STATUS.ordinal()) {
+ status = disk.getStatus();
+ }
+ }
+ }
+
+ 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 +85,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 == DISK_TABLE_COLUMN_INDICES.DISK.ordinal()) {
+ if (device instanceof Disk) {
+ return device.getQualifiedName();
+ } else {
+ return "";
+ }
+ } else if (columnIndex == DISK_TABLE_COLUMN_INDICES.FREE_SPACE.ordinal()) {
+ return "" + device.getFreeSpace();
+ } else if (columnIndex == DISK_TABLE_COLUMN_INDICES.TOTAL_SPACE.ordinal()) {
+ return "" + device.getSpace();
+ } else if (columnIndex == DISK_TABLE_COLUMN_INDICES.PARTITION.ordinal()) {
+ if (device instanceof Partition) {
+ return device.getQualifiedName();
+ } else {
+ return "";
+ }
+ } else if (columnIndex == DISK_TABLE_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..25c2a07b 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 = getAvailableDisks(volume);
setPageComplete(false);
setErrorMessage("Please select bricks to be added to the volume [" + volume.getName() +"]");
}
- private boolean isDiskUsed(Volume volume, Disk disk){
+ private boolean isDiskUsed(Volume volume, Device device){
for (Brick volumeBrick : volume.getBricks()) { // expected form of volumeBrick is "server:/export/diskName/volumeName"
- if ( disk.getQualifiedBrickName(volume.getName()).equals(volumeBrick.getQualifiedName())) {
+ 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> getAvailableDisks(Volume volume) {
+ List<Device> availableDisks = new ArrayList<Device>();
+ for (Device device : GlusterDataModelManager.getInstance().getReadyDevicesOfAllServers()) {
+ if ( ! isDiskUsed(volume, device) ) {
+ availableDisks.add(device);
}
}
return availableDisks;
}
- public Set<Disk> getChosenDisks() {
- return new HashSet<Disk>(page.getChosenDisks());
+ public Set<Device> getChosenDisks() {
+ return new HashSet<Device>(page.getChosenDevice());
}
public Set<Brick> getChosenBricks( String volumeName ) {
@@ -122,13 +123,13 @@ 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> chosenDisks = 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, chosenDisks, 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> newChosenDisks = page.getChosenDevice();
// validate chosen disks
if(isValidDiskSelection(newChosenDisks.size())) {
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..538f03a8 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> chosenDevice = 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);
+ chosenDevice = getChosenDevice();
+ List<Device> selectedDisks = getSelectedChosenDevices();
+
+ chosenBricksContentProvider.removeElements(chosenDevice);
+ for (Device disk : selectedDisks) {
+ int index = chosenDevice.indexOf(disk);
+ Device diskAbove = chosenDevice.get(index - 1);
+ chosenDevice.set(index - 1, disk);
+ chosenDevice.set(index, diskAbove);
}
- chosenBricksContentProvider.addElements(chosenDisks);
+ chosenBricksContentProvider.addElements(chosenDevice);
dualTableViewer.refreshChosenViewer();
updateButtons();
}
@@ -162,17 +163,17 @@ public class BricksSelectionPage extends Composite {
@Override
public void widgetSelected(SelectionEvent e) {
- chosenDisks = getChosenDisks();
- List<Disk> selectedDisks = getSelectedChosenDisks();
+ chosenDevice = getChosenDevice();
+ List<Device> selectedDevice = 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(chosenDevice);
+ for (Device disk : selectedDevice) {
+ int index = chosenDevice.indexOf(disk);
+ Device diskBelow = chosenDevice.get(index + 1);
+ chosenDevice.set(index + 1, disk);
+ chosenDevice.set(index, diskBelow);
}
- chosenBricksContentProvider.addElements(chosenDisks);
+ chosenBricksContentProvider.addElements(chosenDevice);
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> selectedDevice = new ArrayList<Device>();
for (TableItem item : selectedItems) {
- selectedDisks.add((Disk) item.getData());
+ selectedDevice.add((Device) item.getData());
}
- return selectedDisks;
+ return selectedDevice;
}
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> allDevice, List<Device> selectedDevice, 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(allDevice,
+ selectedDevice)));
dualTableViewer.setAvailableLabelProvider(diskLabelProvider);
dualTableViewer.setChosenTableLinesVisible(true);
dualTableViewer.setChosenTableHeaderVisible(true);
- chosenBricksContentProvider = new RemovableContentProvider<Disk>(selectedDisks);
+ chosenBricksContentProvider = new RemovableContentProvider<Device>(selectedDevice);
dualTableViewer.setChosenContentProvider(chosenBricksContentProvider);
dualTableViewer.setChosenLabelProvider(diskLabelProvider);
@@ -256,9 +257,9 @@ 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) {
+ List<Device> selectedChosenDevice = getSelectedChosenDevices();
+ List<Device> chosenDisks = getChosenDevice();
+ for (Device disk : selectedChosenDevice) {
int index = chosenDisks.indexOf(disk);
if (index == 0) {
btnUp.setEnabled(false);
@@ -270,15 +271,15 @@ public class BricksSelectionPage extends Composite {
}
/**
- * @param allDisks
- * @param selectedDisks
+ * @param allDevice
+ * @param selectedDevice
* @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> allDevice, List<Device> selectedDevice) {
+ List<Device> availableDisks = new ArrayList<Device>();
+ for (Device device : allDevice) {
+ if (!selectedDevice.contains(device)) {
+ availableDisks.add(device);
}
}
return availableDisks;
@@ -304,14 +305,14 @@ public class BricksSelectionPage extends Composite {
setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
}
- public List<Disk> getChosenDisks() {
+ public List<Device> getChosenDevice() {
Object[] disksArr = (Object[]) chosenBricksContentProvider.getElements(dualTableViewer);
if (disksArr != null) {
- List<Disk> disks = new ArrayList<Disk>();
+ List<Device> device = new ArrayList<Device>();
for (Object disk : disksArr) {
- disks.add((Disk) disk);
+ device.add((Device) disk);
}
- return disks;
+ return device;
}
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..dec8d11b 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 List<Device> allDevice;
private Button btnNfs;
private Button btnStartVolume;
private Link linkCustomize;
- private List<Disk> selectedDisks;
+ private List<Device> selectedDevice;
/**
* 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);
+ allDevice = GlusterDataModelManager.getInstance().getReadyDevicesOfAllServers();
+ selectedDevice = allDevice; // 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(), allDevice, selectedDevice, 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>)");
+ selectedDevice = dialog.getSelectedDisks();
+ linkCustomize.setText("" + selectedDevice.size() + " Brick(s) (<a>customize</a>)");
validateForm();
}
}
@@ -306,7 +307,7 @@ public class CreateVolumePage1 extends WizardPage {
volume.setAccessControlList(txtAccessControl.getText());
- for(Disk disk : selectedDisks) {
+ for(Device disk : selectedDevice) {
Brick brick = new Brick(disk.getServerName(), BRICK_STATUS.ONLINE, disk.getName(), disk.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 = selectedDevice.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..78b7336b 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.getReadyDisksOfVolume(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..24817b18 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,14 @@ 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.Device;
import com.gluster.storage.management.core.model.Disk;
public class SelectDisksDialog extends Dialog {
private BricksSelectionPage disksPage;
- private List<Disk> allDisks;
- private List<Disk> selectedDisks;
+ private List<Device> allDevice;
+ private List<Device> selectedDevice;
private String volumeName;
/**
@@ -47,11 +48,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> allDisks, List<Device> selectedDevice, String volumeName) {
super(parentShell);
setShellStyle(getShellStyle() | SWT.RESIZE);
- this.allDisks = allDisks;
- this.selectedDisks = selectedDisks;
+ this.allDevice = allDisks;
+ this.selectedDevice = selectedDevice;
this.volumeName = volumeName;
}
@@ -70,7 +71,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, allDevice, selectedDevice, volumeName);
return container;
}
@@ -108,8 +109,8 @@ public class SelectDisksDialog extends Dialog {
}
}
- public List<Disk> getSelectedDisks() {
- return disksPage.getChosenDisks();
+ public List<Device> getSelectedDisks() {
+ return disksPage.getChosenDevice();
}
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..1cb8f5ce 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
@@ -26,7 +26,7 @@ public class DisksView extends ViewPart {
}
page = new DisksPage(parent, SWT.NONE, getSite(), getAllDisks(servers));
- page.layout(); // IMP: lays out the form properly
+ //page.layout(); // IMP: lays out the form properly
}
private List<Disk> getAllDisks(EntityGroup<GlusterServer> servers) {
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerDisksView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerDisksView.java
index 2a240706..e55543ab 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerDisksView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/GlusterServerDisksView.java
@@ -44,7 +44,7 @@ public class GlusterServerDisksView extends ViewPart {
}
page = new ServerDisksPage(parent, SWT.NONE, getSite(), server.getDisks());
- parent.layout(); // IMP: lays out the form properly
+// parent.layout(); // IMP: lays out the form properly
}
/* (non-Javadoc)
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..19073350 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,36 @@ 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);
+// @Override
+// protected ClusterListener createClusterListener() {
+// return new DefaultClusterListener();
+// }
+
+ 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 +113,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 disk1 = 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);
+ disk1 = (Device) item1.getData();
+ if (disk1 != null && disk1 == device) {
rowNum1 = i;
break;
}
@@ -165,29 +153,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 +185,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 +201,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 +217,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..f31708ac
--- /dev/null
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractTableTreeViewerPage.java
@@ -0,0 +1,165 @@
+/*******************************************************************************
+ * 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 Hyperlink linkAll, linkNone;
+ private ClusterListener clusterListener;
+ private Text filterText;
+
+ private void setupPageLayout() {
+ final GridLayout layout = new GridLayout(1, false);
+ layout.verticalSpacing = 10;
+ layout.marginTop = 10;
+ setLayout(layout);
+ }
+
+ private Composite createTableViewerComposite() {
+ 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 = createTableViewerComposite();
+ 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("Totla 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..ee1c75cb 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,52 @@ 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 getDiskTableColumeStr(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;