summaryrefslogtreecommitdiffstats
path: root/com.gluster.storage.management.gui/src/com
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-03-25 16:18:22 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-03-25 16:18:22 +0530
commit4f208ebaa0d1910e635314f4a7261bc31c98ff8f (patch)
treeee517cd512150ce2e11d3da09bbba9df74108575 /com.gluster.storage.management.gui/src/com
parente40556bdf8fd27e35878a8c1942573da46204b7e (diff)
Create Volume - validations
Diffstat (limited to 'com.gluster.storage.management.gui/src/com')
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java44
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumeWizard.java22
-rw-r--r--com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/NavigationView.java29
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) {