diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-18 12:23:38 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-18 12:23:38 +0530 |
| commit | c606dc633d93da1f22e759e3ad29e7b0291e7ce9 (patch) | |
| tree | 9011d6bad19e695e63cf335023371f84f562e374 /com.gluster.storage.management.gui/src/com | |
| parent | e7a0887c7e2f47a757fee4c9d15cc72714e7f8e1 (diff) | |
Create Volume functionality
Diffstat (limited to 'com.gluster.storage.management.gui/src/com')
4 files changed, 103 insertions, 26 deletions
diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java index 44d1d8c3..ce6df74c 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeDisksPage.java @@ -18,6 +18,7 @@ *******************************************************************************/ package com.gluster.storage.management.gui.dialogs; +import java.util.Arrays; import java.util.List; import org.eclipse.jface.viewers.ITableLabelProvider; @@ -38,6 +39,8 @@ import com.gluster.storage.management.gui.TableLabelProviderAdapter; import com.gluster.storage.management.gui.utils.EntityViewerFilter; import com.gluster.storage.management.gui.utils.GUIHelper; import com.richclientgui.toolbox.duallists.CustomTableDualListComposite; +import com.richclientgui.toolbox.duallists.DualListComposite.ListContentChangedListener; +import com.richclientgui.toolbox.duallists.IRemovableContentProvider; import com.richclientgui.toolbox.duallists.RemovableContentProvider; import com.richclientgui.toolbox.duallists.TableColumnData; @@ -51,12 +54,14 @@ public class CreateVolumeDisksPage extends Composite { private GUIHelper guiHelper = GUIHelper.getInstance(); private CustomTableDualListComposite<Disk> dualTableViewer; private Text filterText; - + + private IRemovableContentProvider<Disk> chosenDisksContentProvider; + public CreateVolumeDisksPage(final Composite parent, int style, List<Disk> disks) { super(parent, style); createPage(disks); - + parent.layout(); } @@ -72,39 +77,40 @@ public class CreateVolumeDisksPage extends Composite { 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.SPACE.ordinal() ? NumberUtil.formatNumber(disk.getSpace()) - : columnIndex == DISK_TABLE_COLUMN_INDICES.SPACE_USED.ordinal() ? NumberUtil.formatNumber(disk.getSpaceInUse()) - : "Invalid"); + : columnIndex == DISK_TABLE_COLUMN_INDICES.SPACE.ordinal() ? NumberUtil + .formatNumber(disk.getSpace()) + : columnIndex == DISK_TABLE_COLUMN_INDICES.SPACE_USED.ordinal() ? NumberUtil + .formatNumber(disk.getSpaceInUse()) : "Invalid"); } }; } private void createPage(List<Disk> disks) { setupPageLayout(); - + filterText = guiHelper.createFilterText(this); new Label(this, SWT.NONE); - - createDualTableViewer(disks); + + createDualTableViewer(disks); createFilter(filterText, false); // attach filter text to the dual table viewer for auto-filtering - + Composite buttonContainer = new Composite(this, SWT.NONE); buttonContainer.setLayout(new GridLayout(1, false)); GridData buttonContainerData = new GridData(SWT.FILL, SWT.CENTER, true, true); buttonContainerData.minimumWidth = 40; buttonContainer.setLayoutData(buttonContainerData); - + Button btnUp = new Button(buttonContainer, SWT.TOGGLE); GridData btnUpData = new GridData(SWT.LEFT, SWT.BOTTOM, true, false); btnUpData.minimumWidth = 30; btnUp.setLayoutData(btnUpData); btnUp.setImage(guiHelper.getImage(IImageKeys.ARROW_UP)); - + Button btnDown = new Button(buttonContainer, SWT.TOGGLE); btnDown.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, false)); btnDown.setImage(guiHelper.getImage(IImageKeys.ARROW_DOWN)); } - + private void createFilter(final Text filterText, boolean caseSensitive) { final String initialFilterString = filterText.getText(); @@ -137,10 +143,9 @@ public class CreateVolumeDisksPage extends Composite { private void createDualTableViewer(List<Disk> disks) { TableColumnData[] columnData = createColumnData(); - ITableLabelProvider diskLabelProvider = getDiskLabelProvider(); + ITableLabelProvider diskLabelProvider = getDiskLabelProvider(); - dualTableViewer = new CustomTableDualListComposite<Disk>(this, SWT.NONE, - columnData, columnData); + dualTableViewer = new CustomTableDualListComposite<Disk>(this, SWT.NONE, columnData, columnData); dualTableViewer.setViewerLabels("Available:", "Chosen:"); @@ -148,10 +153,12 @@ public class CreateVolumeDisksPage extends Composite { dualTableViewer.setAvailableTableHeaderVisible(true); dualTableViewer.setAvailableContentProvider(new RemovableContentProvider<Disk>()); dualTableViewer.setAvailableLabelProvider(diskLabelProvider); - + dualTableViewer.setChosenTableLinesVisible(true); dualTableViewer.setChosenTableHeaderVisible(true); - dualTableViewer.setChosenContentProvider(new RemovableContentProvider<Disk>(disks)); + + chosenDisksContentProvider = new RemovableContentProvider<Disk>(disks); + dualTableViewer.setChosenContentProvider(chosenDisksContentProvider); dualTableViewer.setChosenLabelProvider(diskLabelProvider); } @@ -174,4 +181,13 @@ public class CreateVolumeDisksPage extends Composite { setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); } + + public List<Disk> getSelectedDisks() { + // dualTableViewer.getChosenTable().getI + Disk[] disks = (Disk[])chosenDisksContentProvider.getElements(dualTableViewer); + if(disks != null) { + return Arrays.asList(disks); + } + return null; + } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java index 142d51d8..e47adcaf 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java @@ -18,9 +18,15 @@ *******************************************************************************/ package com.gluster.storage.management.gui.dialogs; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -34,13 +40,20 @@ import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Text; +import com.gluster.storage.management.core.model.Disk; import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.model.Volume.NAS_PROTOCOL; +import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE; import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE; public class CreateVolumePage1 extends WizardPage { - private static final String PAGE_NAME = "create.volume.page.1"; + public static final String PAGE_NAME = "create.volume.page.1"; private Text txtName; + private ComboViewer typeComboViewer; private Text txtAccessControl; + private Volume volume = new Volume(); + private List<Disk> disks; + private Button btnNfs; /** * Create the wizard. @@ -82,7 +95,7 @@ public class CreateVolumePage1 extends WizardPage { lblType.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblType.setText("Type: "); - ComboViewer typeComboViewer = new ComboViewer(container, SWT.READ_ONLY); + typeComboViewer = new ComboViewer(container, SWT.READ_ONLY); Combo typeCombo = typeComboViewer.getCombo(); GridData typeComboData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); typeCombo.setLayoutData(typeComboData); @@ -113,7 +126,10 @@ public class CreateVolumePage1 extends WizardPage { public void handleEvent(Event event) { SelectDisksDialog dialog = new SelectDisksDialog(getShell()); dialog.create(); - dialog.open(); + if(dialog.open() == Window.OK) { + // user has customized disks. get them from the dialog box. + volume.setDisks(dialog.getSelectedDisks()); + } } }); @@ -127,7 +143,7 @@ public class CreateVolumePage1 extends WizardPage { btnGluster.setText("Gluster"); new Label(container, SWT.NONE); - Button btnNfs = new Button(container, SWT.CHECK); + btnNfs = new Button(container, SWT.CHECK); btnNfs.setSelection(true); btnNfs.setText("NFS"); @@ -146,4 +162,22 @@ public class CreateVolumePage1 extends WizardPage { lblAccessControlInfo.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1)); lblAccessControlInfo.setText("(Comma separated list of IP addresses)"); } + + public Volume getVolume() { + volume.setName(txtName.getText()); + + IStructuredSelection selection = (IStructuredSelection)typeComboViewer.getSelection(); + volume.setVolumeType((VOLUME_TYPE)selection.getFirstElement()); + + volume.setTransportType(TRANSPORT_TYPE.ETHERNET); + Set<NAS_PROTOCOL> nasProtocols = new HashSet<Volume.NAS_PROTOCOL>(); + nasProtocols.add(NAS_PROTOCOL.GLUSTERFS); + if(btnNfs.getSelection()) { + nasProtocols.add(NAS_PROTOCOL.NFS); + } + + volume.setAccessControlList(txtAccessControl.getText()); + + return volume; + } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java index 0a9508fc..e21286d2 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java @@ -18,8 +18,14 @@ *******************************************************************************/ package com.gluster.storage.management.gui.dialogs; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.Wizard; +import com.gluster.storage.management.client.GlusterDataModelManager; +import com.gluster.storage.management.client.VolumesClient; +import com.gluster.storage.management.core.model.Status; +import com.gluster.storage.management.core.model.Volume; + public class CreateVolumeWizard extends Wizard { public CreateVolumeWizard() { @@ -34,8 +40,21 @@ public class CreateVolumeWizard extends Wizard { @Override public boolean performFinish() { - System.out.println("Finishing volume creation!"); - // TODO: Add code to create volume + CreateVolumePage1 page = (CreateVolumePage1) getPage(CreateVolumePage1.PAGE_NAME); + Volume newVol = page.getVolume(); + + GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); + VolumesClient volumesClient = new VolumesClient(modelManager.getServerName(), modelManager.getSecurityToken()); + Status status = volumesClient.createVolume(newVol); + if (status.isSuccess()) { + new MessageDialog(getShell(), "Create Volume", null, "Volume created successfully!", + MessageDialog.INFORMATION, new String[] { "OK" }, 0); + // TODO: Update the model + } else { + new MessageDialog(getShell(), "Create Volume", null, "Volume creation failed! [" + status.getCode() + "][" + + status.getMessage() + "]", MessageDialog.INFORMATION, new String[] { "OK" }, 0); + } + return true; } } diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java index c312e34b..b6d0a227 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/SelectDisksDialog.java @@ -18,6 +18,8 @@ *******************************************************************************/ package com.gluster.storage.management.gui.dialogs; +import java.util.List; + import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.SWT; @@ -29,9 +31,12 @@ import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import com.gluster.storage.management.client.GlusterDataModelManager; +import com.gluster.storage.management.core.model.Disk; public class SelectDisksDialog extends Dialog { + private CreateVolumeDisksPage disksPage; + /** * Create the dialog. * @@ -56,7 +61,7 @@ public class SelectDisksDialog extends Dialog { container.setLayoutData(containerLayoutData); getShell().setText("Create Volume - Select Disks"); - CreateVolumeDisksPage disksPage = new CreateVolumeDisksPage(container, SWT.NONE, GlusterDataModelManager + disksPage = new CreateVolumeDisksPage(container, SWT.NONE, GlusterDataModelManager .getInstance().getReadyDisksOfAllServers()); return container; @@ -83,13 +88,16 @@ public class SelectDisksDialog extends Dialog { @Override protected void cancelPressed() { - // TODO Auto-generated method stub super.cancelPressed(); } @Override protected void okPressed() { - // TODO Auto-generated method stub + // TODO Validations super.okPressed(); } + + public List<Disk> getSelectedDisks() { + return disksPage.getSelectedDisks(); + } } |
