diff options
Diffstat (limited to 'src/com.gluster.storage.management.gui')
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 } |
