diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-03-25 16:18:22 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-03-25 16:18:22 +0530 |
| commit | 4f208ebaa0d1910e635314f4a7261bc31c98ff8f (patch) | |
| tree | ee517cd512150ce2e11d3da09bbba9df74108575 /com.gluster.storage.management.gui/src/com | |
| parent | e40556bdf8fd27e35878a8c1942573da46204b7e (diff) | |
Create Volume - validations
Diffstat (limited to 'com.gluster.storage.management.gui/src/com')
3 files changed, 60 insertions, 35 deletions
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 50f5e013..a4e0b715 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 @@ -24,6 +24,7 @@ import java.util.Set; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; @@ -102,10 +103,34 @@ public class CreateVolumePage1 extends WizardPage { setPageComplete(false); setErrorMessage("Please enter Access Control"); } - // TODO: acl validation - // String[] aclList = accessControl.split(","); - } + + // acl validation + String[] aclList = accessControl.split(","); + for (String ip : aclList) { + if (!isValidIP(ip)) { + setPageComplete(false); + setErrorMessage("Please enter valid access control list"); + } + } + + } + + private Boolean isValidIP(String ip) { + // String pattern = "^.[0-9]{1,3}/..[0-9]{1,3}/..[0-9]{1,3}/..[0-9]{1,3}"; + String pattern = "^.[0-9]{1,3}/."; + if (ip == "*") { + return true; + } + String[] ipQuads = ip.split("."); + for (String quad : ipQuads) { + if (!quad.matches(pattern)) { + return false; + } + } + return true; + + } } /** @@ -221,7 +246,6 @@ public class CreateVolumePage1 extends WizardPage { } public Volume getVolume() { - volume.setName(txtName.getText()); IStructuredSelection selection = (IStructuredSelection)typeComboViewer.getSelection(); @@ -242,4 +266,16 @@ public class CreateVolumePage1 extends WizardPage { public Boolean getStartVolumeRequest() { return btnStartVolume.getSelection(); } + + public Boolean isValidCreateVolumeForm() { + IStructuredSelection selection = (IStructuredSelection)typeComboViewer.getSelection(); + if (selection.getFirstElement().equals(VOLUME_TYPE.DISTRIBUTED_MIRROR) && ((int)volume.getDisks().size()) % 2 != 0 ) { + setErrorMessage("Mirror type volume requires disk in multiples of two"); + return false; + } else if(selection.getFirstElement().equals(VOLUME_TYPE.DISTRIBUTED_STRIPE) && ((int)volume.getDisks().size()) % 4 != 0) { + setErrorMessage("Stripe type volume requires disk in multiples of four"); + return false; + } + return true; + } } 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 dfa5a97c..36755bec 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,9 +18,6 @@ *******************************************************************************/ package com.gluster.storage.management.gui.dialogs; -import java.util.HashSet; -import java.util.Set; - import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.Wizard; @@ -45,22 +42,25 @@ public class CreateVolumeWizard extends Wizard { @Override public boolean performFinish() { CreateVolumePage1 page = (CreateVolumePage1) getPage(CreateVolumePage1.PAGE_NAME); - Volume newVol = page.getVolume(); + if (!page.isValidCreateVolumeForm()) { + return false; + } + + Volume newVolume = page.getVolume(); GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); VolumesClient volumesClient = new VolumesClient(modelManager.getSecurityToken()); - Status status = volumesClient.createVolume(newVol); + Status status = volumesClient.createVolume(newVolume); if (status.isSuccess()) { - newVol.setStatus(VOLUME_STATUS.OFFLINE); - + newVolume.setStatus(VOLUME_STATUS.OFFLINE); if (page.getStartVolumeRequest()) { - Status volumeStartStatus = volumesClient.startVolume(newVol.getName()); + Status volumeStartStatus = volumesClient.startVolume(newVolume.getName()); if (volumeStartStatus.isSuccess()) { - newVol.setStatus(VOLUME_STATUS.ONLINE); + newVolume.setStatus(VOLUME_STATUS.ONLINE); } } - - modelManager.addVolume(newVol); + //update the model + modelManager.addVolume(newVolume); MessageDialog.openInformation(getShell(), "Create Volume", "Volume created successfully and configuration added!"); } else { MessageDialog.openError(getShell(), "Create Volume", "Volume creation failed! [" + status.getCode() + "][" diff --git a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java index 35b5cd7a..4ad7ff67 100644 --- a/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java +++ b/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java @@ -84,29 +84,24 @@ public class NavigationView extends ViewPart implements ISelectionListener { // Refresh the navigation tree whenever there is a change to the data model GlusterDataModelManager.getInstance().addClusterListener(new DefaultClusterListener() { - @Override - public void serverAdded(GlusterServer server) { + public void clusterChanged() { treeViewer.refresh(); } - - /* - * (non-Javadoc) - * - * @see - * com.gluster.storage.management.core.model.DefaultClusterListener#volumeChanged(com.gluster.storage.management - * .core.model.Volume, com.gluster.storage.management.core.model.Event) - */ + @Override public void volumeChanged(Volume volume, Event event) { - treeViewer.refresh(); + super.volumeChanged(volume, event); selectEntity(volume); // this makes sure that the toolbar buttons get updated accoring to new status } + + @Override + public void volumeCreated(Volume volume) { + super.volumeCreated(volume); + selectEntity(volume); + } }); } - /** - * - */ private void setupContextMenu() { MenuManager menuManager = new MenuManager("&Gluster", "gluster.context.menu"); Menu contextMenu = menuManager.createContextMenu(treeViewer.getControl()); @@ -125,12 +120,6 @@ public class NavigationView extends ViewPart implements ISelectionListener { treeViewer.getControl().setFocus(); } - /* - * (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) { if (part instanceof NavigationView && selection instanceof TreeSelection) { |
