summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.gui')
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java17
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java13
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java45
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeDisksView.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java65
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java3
7 files changed, 106 insertions, 43 deletions
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java
index 80811226..c78601d9 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java
@@ -291,13 +291,26 @@ public class CreateVolumeDisksPage extends Composite {
setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
}
-
+
+
public List<Disk> getChosenDisks() {
Object[] disksArr = (Object[]) chosenDisksContentProvider.getElements(dualTableViewer);
if (disksArr != null) {
List<Disk> disks = new ArrayList<Disk>();
for (Object disk : disksArr) {
- disks.add((Disk) disk);
+ disks.add( (Disk)disk );
+ }
+ return disks;
+ }
+ return null;
+ }
+
+ public List<String> getChosenBricks() {
+ Object[] disksArr = (Object[]) chosenDisksContentProvider.getElements(dualTableViewer);
+ if (disksArr != null) {
+ List<String> disks = new ArrayList<String>();
+ for (Object disk : disksArr) {
+ disks.add( ((Disk)disk).getServerName() + ":" + ((Disk)disk).getName() ); // Format: Server:disk
}
return disks;
}
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 d919fd84..b09bbb44 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
@@ -18,6 +18,7 @@
*******************************************************************************/
package com.gluster.storage.management.gui.dialogs;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -73,7 +74,15 @@ public class CreateVolumePage1 extends WizardPage {
// by default, we create volume with all available disks
allDisks = GlusterDataModelManager.getInstance().getReadyDisksOfAllServers();
- volume.setDisks(allDisks);
+ volume.setDisks(getBricks(allDisks)); // volume.setDisks(allDisks);
+ }
+
+ private List<String> getBricks(List<Disk> allDisks) {
+ List<String> disks = new ArrayList<String>();
+ for(Disk disk: allDisks) {
+ disks.add(disk.getServerName() + ":" + disk.getName());
+ }
+ return disks;
}
private class ValidationListener implements ModifyListener {
@@ -206,7 +215,7 @@ public class CreateVolumePage1 extends WizardPage {
dialog.create();
if(dialog.open() == Window.OK) {
// user has customized disks. get them from the dialog box.
- volume.setDisks(dialog.getSelectedDisks());
+ volume.setDisks(dialog.getSelectedBricks());
linkCustomize.setText("" + volume.getDisks().size() + " Disk(s) (<a>customize</a>)");
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java
index 7dc0b03d..f484a346 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java
@@ -166,7 +166,7 @@ public class MigrateDiskPage1 extends WizardPage {
GlusterDummyModel glusterDummyModel = GlusterDummyModel.getInstance();
List<Disk> fromDisks = glusterDummyModel.getReadyDisksOfVolume(volume);
- List<Disk> toDisks = glusterDummyModel.getReadyDisksOfAllServersExcluding(volume.getDisks());
+ List<Disk> toDisks = glusterDummyModel.getReadyDisksOfAllServersExcluding( glusterDummyModel.getReadyDisksOfVolume(volume));
TableViewer tableViewerFrom = createTableViewer(container, diskLabelProvider, fromDisks, txtFilterFrom);
if(fromDisk != null) {
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 10a36fb0..0ec19d5b 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
@@ -18,6 +18,7 @@
*******************************************************************************/
package com.gluster.storage.management.gui.dialogs;
+import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
@@ -47,11 +48,24 @@ public class SelectDisksDialog extends Dialog {
*
* @param parentShell
*/
- public SelectDisksDialog(Shell parentShell, List<Disk> allDisks, List<Disk> selectedDisks) {
+ public SelectDisksDialog(Shell parentShell, List<Disk> allDisks, List<String> selectedDisks) {
super(parentShell);
setShellStyle(getShellStyle() | SWT.RESIZE);
this.allDisks = allDisks;
- this.selectedDisks = selectedDisks;
+ this.selectedDisks = getSelectedDisks(allDisks, selectedDisks);
+ }
+
+ private List<Disk> getSelectedDisks(List<Disk> allDisks, List<String> selectedDisks) {
+ List<Disk> disks = new ArrayList<Disk>();
+ for (String selectedDisk : selectedDisks) {
+ for (Disk disk : disks) {
+ String brick[] = selectedDisk.split(":");
+ if (disk.getServerName() == brick[0] && disk.getName() == brick[1]) {
+ disks.add(disk);
+ }
+ }
+ }
+ return disks;
}
/**
@@ -64,12 +78,14 @@ public class SelectDisksDialog extends Dialog {
Composite container = new Composite(parent, SWT.NONE);
GridLayout containerLayout = new GridLayout(2, false);
container.setLayout(containerLayout);
- GridData containerLayoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ GridData containerLayoutData = new GridData(SWT.FILL, SWT.FILL, true,
+ true);
container.setLayoutData(containerLayoutData);
getShell().setText("Create Volume - Select Disks");
-
- disksPage = new CreateVolumeDisksPage(container, SWT.NONE, allDisks, selectedDisks);
+
+ disksPage = new CreateVolumeDisksPage(container, SWT.NONE, allDisks,
+ selectedDisks);
return container;
}
@@ -81,8 +97,10 @@ public class SelectDisksDialog extends Dialog {
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
- createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
- createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
+ createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
+ true);
+ createButton(parent, IDialogConstants.CANCEL_ID,
+ IDialogConstants.CANCEL_LABEL, false);
}
/**
@@ -100,14 +118,19 @@ public class SelectDisksDialog extends Dialog {
@Override
protected void okPressed() {
- if (this.getSelectedDisks().size() == 0 ) {
- MessageDialog.openError(getShell(), "Select Disk(s)", "Please select atlease one disk");
+ if (this.getSelectedDisks().size() == 0) {
+ MessageDialog.openError(getShell(), "Select Disk(s)",
+ "Please select atlease one disk");
} else {
super.okPressed();
}
}
-
+
public List<Disk> getSelectedDisks() {
- return disksPage.getChosenDisks();
+ return disksPage.getChosenDisks();
+ }
+
+ public List<String> getSelectedBricks() {
+ return disksPage.getChosenBricks();
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeDisksView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeDisksView.java
index cbf6736b..57065928 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeDisksView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumeDisksView.java
@@ -4,6 +4,8 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.ViewPart;
+import com.gluster.storage.management.client.GlusterDataModelManager;
+import com.gluster.storage.management.core.model.GlusterDataModel;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.views.details.DisksPage;
@@ -27,7 +29,7 @@ public class VolumeDisksView extends ViewPart {
* @param parent
*/
private void createPage(Composite parent) {
- page = new DisksPage(parent, SWT.NONE, getSite(), volume.getDisks());
+ page = new DisksPage(parent, SWT.NONE, getSite(), GlusterDataModelManager.getInstance().getReadyDisksOfVolume(volume));
parent.layout(); // IMP: lays out the form properly
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
index 9477e170..72987d0a 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/VolumesSummaryView.java
@@ -31,9 +31,11 @@ import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.part.ViewPart;
import com.gluster.storage.management.core.constants.CoreConstants;
+import com.gluster.storage.management.core.model.Alert;
import com.gluster.storage.management.core.model.EntityGroup;
import com.gluster.storage.management.core.model.Cluster;
import com.gluster.storage.management.core.model.GlusterDataModel;
+import com.gluster.storage.management.core.model.RunningTaskStatus;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.RunningTask;
import com.gluster.storage.management.core.model.Volume;
@@ -50,7 +52,12 @@ public class VolumesSummaryView extends ViewPart {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private ScrolledForm form;
private EntityGroup<Volume> volumes;
-
+
+ private static final String ALERTS = "Alerts";
+ private static final String RUNNING_TASKS = "Running Tasks";
+ private static final String VOLUMES_SUMMARY = "Volumes - Summary";
+ private static final String AVAILABILITY = "Availability";
+
/*
* (non-Javadoc)
*
@@ -61,55 +68,63 @@ public class VolumesSummaryView extends ViewPart {
if (volumes == null) {
Object selectedObj = guiHelper.getSelectedEntity(getSite(), EntityGroup.class);
if (selectedObj != null && ((EntityGroup) selectedObj).getEntityType() == Volume.class) {
- volumes = (EntityGroup<Volume>)selectedObj;
+ volumes = (EntityGroup<Volume>) selectedObj;
}
}
-
+
createSections(parent);
}
private void createSections(Composite parent) {
- form = guiHelper.setupForm(parent, toolkit, "Volumes - Summary");
+ form = guiHelper.setupForm(parent, toolkit, VOLUMES_SUMMARY);
createSummarySection();
createRunningTasksSection();
createAlertsSection();
-
+
parent.layout(); // IMP: lays out the form properly
}
-
+
private void createAlertsSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Alerts", null, 2, false);
+ Composite section = guiHelper.createSection(form, toolkit, ALERTS, null, 1, false);
+ // toolkit.createLabel(section, "Any alerts related to volumes\nwill be displayed here.");
- toolkit.createLabel(section, "Any alerts related to volumes\nwill be displayed here.");
+ Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster();
+ List<Alert> alerts = cluster.getAlerts();
+ for (Alert alert : alerts) {
+ if (alert.getType() == Alert.ALERT_TYPES.DISK_USAGE_ALERT ||
+ alert.getType() == Alert.ALERT_TYPES.OFFLINE_VOLUME_DISKS_ALERT) {
+ toolkit.createLabel(section, alert.getMessage());
+ }
+ }
}
private void createRunningTasksSection() {
- Composite section = guiHelper.createSection(form, toolkit, "Running Tasks", null, 2, false);
-
- GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
- GlusterDataModel model = modelManager.getModel();
- Cluster cluster = (Cluster) model.getChildren().get(0); // Assume the first/root node of the model is cluster (invisible)
-
- List<RunningTask> runningTasks = cluster.getRunningTasks();
- String taskMessage = "";
- for(RunningTask task : runningTasks) {
- if (task.getStatus().isPercentageSupported()) {
- //TODO Progress bar
+ Composite section = guiHelper.createSection(form, toolkit, RUNNING_TASKS, null, 1, false);
+
+ List<RunningTask> runningTasks = GlusterDataModelManager.getInstance().getModel().getCluster().getRunningTasks();
+
+ for (RunningTask task : runningTasks) {
+ if (task.getType() == RunningTask.TASK_TYPES.MIGRATE_DISK
+ || task.getType() == RunningTask.TASK_TYPES.VOLUME_REBALANCE) {
+ if (task.getStatus().isPercentageSupported()) {
+ // TODO Progress bar
+ }
+ toolkit.createLabel(section, task.getTaskInfo());
}
- //TODO show different labels for each task
- taskMessage = taskMessage + CoreConstants.NEWLINE + task.getDescription();
}
- toolkit.createLabel(section, taskMessage);
}
private void createSummarySection() {
- Composite section = guiHelper.createSection(form, toolkit, "Availability", null, 2, false);
+ Composite section = guiHelper.createSection(form, toolkit, AVAILABILITY, null, 2, false);
+
+ // Cluster cluster = GlusterDataModelManager.getInstance().getModel().getCluster();
Double[] values = new Double[] { Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.ONLINE)),
Double.valueOf(getVolumeCountByStatus(volumes, VOLUME_STATUS.OFFLINE)) };
createStatusChart(toolkit, section, values);
}
-
+
+ @SuppressWarnings("unchecked")
private int getVolumeCountByStatus(EntityGroup<Volume> volumes, VOLUME_STATUS status) {
int count = 0;
for (Volume volume : (List<Volume>) volumes.getEntities()) {
@@ -130,7 +145,7 @@ public class VolumesSummaryView extends ViewPart {
data.heightHint = 250;
chartViewerComposite.setLayoutData(data);
}
-
+
/*
* (non-Javadoc)
*
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java
index 3e5382cc..7f78829e 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/details/tabcreators/VolumeTabCreator.java
@@ -34,6 +34,7 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.ui.forms.widgets.ScrolledForm;
+import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.NAS_PROTOCOL;
@@ -247,7 +248,7 @@ public class VolumeTabCreator implements TabCreator {
private void createVolumeDisksTab(Volume volume, TabFolder tabFolder, FormToolkit toolkit, IWorkbenchSite site) {
Composite volumeDisksTab = guiHelper.createTab(tabFolder, "Disks", IImageKeys.VOLUME);
- DisksPage page = new DisksPage(volumeDisksTab, SWT.NONE, site, volume.getDisks());
+ DisksPage page = new DisksPage(volumeDisksTab, SWT.NONE, site, GlusterDataModelManager.getInstance().getReadyDisksOfVolume(volume));
volumeDisksTab.layout(); // IMP: lays out the form properly
}