summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.core
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-04-13 13:50:33 +0530
committerDhandapani <dhandapani@gluster.com>2011-04-13 16:09:33 +0530
commite0efe1a6d06870034ca3eef5f50913a0ef6e957a (patch)
tree9b578f5b99b3ecfb897e74d6ce9469b442ac6693 /src/com.gluster.storage.management.core
parent86856e550d8c20b51e1da94a3ca0a3dfed750e06 (diff)
parentfa13d4c3807584cd9f7e690ed1b2c1377fc0b256 (diff)
Merge commit 'upstream/master'
Diffstat (limited to 'src/com.gluster.storage.management.core')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java3
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java2
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java7
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java68
4 files changed, 76 insertions, 4 deletions
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java
index 65501a2b..bac86a2e 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Event.java
@@ -24,7 +24,8 @@ public class Event {
DISK_REMOVED,
NETWORK_INTERFACE_ADDED,
NETWORK_INTERFACE_REMOVED,
- VOLUME_STATUS_CHANGED
+ VOLUME_STATUS_CHANGED,
+ VOLUME_OPTIONS_RESET
}
private EVENT_TYPE eventType;
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
index baa3edb9..daa96cd4 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Volume.java
@@ -49,7 +49,7 @@ public class Volume extends Entity {
GLUSTERFS, NFS
};
- private static final String OPTION_AUTH_ALLOW = "auth.allow:";
+ private static final String OPTION_AUTH_ALLOW = "auth.allow";
private static final String[] VOLUME_TYPE_STR = new String[] { "Plain Distribute", "Distributed Mirror",
"Distributed Stripe" };
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
index 38de196a..5ed83810 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/GlusterUtil.java
@@ -49,6 +49,7 @@ public class GlusterUtil {
private static final String VOLUME_TRANSPORT_TYPE_PFX = "Transport-type:";
private static final String VOLUME_BRICKS_GROUP_PFX = "Bricks";
private static final String VOLUME_OPTIONS_RECONFIG_PFX = "Options Reconfigured";
+ private static final String VOLUME_OPTION_AUTH_ALLOW = "auth.allow:";
private static final ProcessUtil processUtil = new ProcessUtil();
@@ -178,9 +179,11 @@ public class GlusterUtil {
List<String> command = prepareVolumeCreateCommand(volume, bricks, count, volumeType, transportTypeStr);
ProcessResult result = processUtil.executeCommand(command);
if(!result.isSuccess()) {
+ // TODO: Perform cleanup on all nodes before returning
return new Status(result);
}
- return new Status(result);
+
+ return createOptions(volume);
}
private List<String> prepareVolumeCreateCommand(Volume volume, List<String> bricks, int count, String volumeType,
@@ -322,7 +325,7 @@ public class GlusterUtil {
String volumeName = extractToken(line, VOLUME_NAME_PFX);
if (volumeName != null) {
if (volume != null) {
- // add the previously read volume to volume list
+
volumes.add(volume);
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java
new file mode 100644
index 00000000..ac77c76f
--- /dev/null
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/ValidationUtil.java
@@ -0,0 +1,68 @@
+package com.gluster.storage.management.core.utils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class ValidationUtil {
+
+ // Access control may contains IP with wild card(*), hostname and/or multiple ip/hostnames
+ public static boolean isValidAccessControl(String ac) {
+ String access[] = ac.split(",");
+ boolean isValidAccessControl = true;
+ for (int i = 0; i < access.length && isValidAccessControl; i++) {
+ isValidAccessControl = (isValidIpWithWC(access[i]) || isValidHostName(access[i]));
+ }
+ return isValidAccessControl;
+ }
+
+ public static boolean isValidIpWithWC(String ip) {
+ String ipAddress[] = ip.split("\\.");
+ boolean isValid = true;
+
+ if (ip.equals("0.0.0.0") || ip.equals("255.255.255.255")) { // Invalidate the special ip's
+ isValid = false;
+ }
+
+ for (int i = 0; i < ipAddress.length && isValid; i++) {
+ if (ipAddress[i].equals("*")) {
+ isValid = (i == ipAddress.length - 1) ? isValid : false;
+ } else {
+ isValid = isValidIpQuad(ipAddress[i]);
+ }
+ }
+ return isValid;
+ }
+
+ public static boolean isValidIp(String ip) {
+ String ipAddress[] = ip.split("\\.");
+ boolean isValid = true;
+
+ if (ip.equals("0.0.0.0") || ip.equals("255.255.255.255")) { // Invalidate the special ip's
+ isValid = false;
+ }
+
+ for (int i = 0; i < ipAddress.length && isValid; i++) {
+ isValid = isValidIpQuad(ipAddress[i]);
+ }
+ return isValid;
+ }
+
+ private static boolean isValidIpQuad(String ipQuad) {
+ Pattern pattern = Pattern.compile("([01]?\\d\\d?|2[0-4]\\d|25[0-5])");
+ return pattern.matcher(ipQuad).matches();
+ }
+
+ public static boolean isValidHostName(String hostName) {
+ Pattern pattern = Pattern
+ .compile("^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\\-]*[A-Za-z0-9])$");
+ return pattern.matcher(hostName).matches();
+ }
+
+ public static void main(String[] argv) {
+ String ip = "0.0.0.0";
+ System.out.println("Is valid ip (" + ip + ")? " + isValidIp(ip));
+ String hostName = "Selvam-sd.com";
+ System.out.println(isValidHostName(hostName));
+ }
+
+}