From 2449ed76ee63375846e62656e98cb88cdfce51ed Mon Sep 17 00:00:00 2001 From: Harshavardhana Ranganath Date: Fri, 4 Dec 2009 20:48:02 +0000 Subject: glusterfs-volgen honours now build level prefix Signed-off-by: Harshavardhana Signed-off-by: Anand V. Avati BUG: 437 (Fix critical argument validation check on Fedora11 systems) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=437 --- configure.ac | 1 + extras/volgen/glusterfs-volgen | 183 ------------------------------------- extras/volgen/glusterfs-volgen.in | 185 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 186 insertions(+), 183 deletions(-) delete mode 100755 extras/volgen/glusterfs-volgen create mode 100755 extras/volgen/glusterfs-volgen.in diff --git a/configure.ac b/configure.ac index 25367a933..a02f1884d 100644 --- a/configure.ac +++ b/configure.ac @@ -125,6 +125,7 @@ AC_CONFIG_FILES([Makefile extras/init.d/glusterfsd-SuSE extras/benchmarking/Makefile extras/volgen/Makefile + extras/volgen/glusterfs-volgen glusterfs.spec]) AC_CANONICAL_HOST diff --git a/extras/volgen/glusterfs-volgen b/extras/volgen/glusterfs-volgen deleted file mode 100755 index 5275b9093..000000000 --- a/extras/volgen/glusterfs-volgen +++ /dev/null @@ -1,183 +0,0 @@ -#!/usr/bin/python - -import getopt, sys, os, string -from optparse import OptionParser,OptionGroup,make_option - -if not "/usr/share/glusterfs" in sys.path: - sys.path.append("/usr/share/glusterfs") - -from CreateVolfile import * -from CreateBooster import * - -def check_duplicate_entry(args): - """Check duplicate entries in incoming arguments""" - _tmp = [] - for server in args: - if server not in _tmp: - _tmp.append (server) - else: - print "Duplicate arguments detected (%s)" % server - raise ValueError - - return - -def args2dict(args): - - keyvalue = {} - for arg in args: - first = arg.split(':')[0] - keyvalue[first] = [] - - for arg in args: - first = arg.split(':')[0] - if arg.split(':')[1] not in keyvalue[first]: - if arg.split(':')[1][0] != '/': - print "Absolute export path required for %s" % arg - raise ValueError - keyvalue[first].append (arg.split(':')[1]) - - return keyvalue - -def args2array(args): - - array = [] - array = args - - return array - -def generate_volume_files (): - - num_stripe = 4 - num_replica = 2 - - usage_str = "%prog: -n -t -p -a -r " - version_str = "%prog 3.0" - desc_str = "A tool to generate volume files for GlusterFS." - - parse = OptionParser(usage=usage_str, version=version_str, description=desc_str) - - # Basic option list - group = OptionGroup(parse, "Basic Options") - group.add_option("-n", "--name", dest="volume_name", - help="") - group.add_option("-t", "--transport", dest="transport_type", - default="tcp", help="tcp,ib-verbs default: tcp") - group.add_option("-p", "--port", type="int", - dest="port", default=6996, - help=" number") - group.add_option("-a", "--auth", dest="auth_param", default="*", - help="comma seperated ip range") - group.add_option("-r", "--raid", type="int", dest="raid_type", - help="0|1") - group.add_option("--nfs", action="store_true", dest="need_nfs", - default=False, help="booster nfs reexport") - group.add_option("--cifs", action="store_true", dest="need_cifs", - default=False, help="booster cifs reexport"), - parse.add_option_group(group) - - # CIFS option list - group = OptionGroup(parse, "CIFS Options") - group.add_option("--username", dest="cifs_username", - default="gluster", help="") - group.add_option("--guest", action="store_true", - dest="enable_guest", default=False, - help="enable guest access") - parse.add_option_group(group) - # NFS option list - - # Advanced option list - group = OptionGroup(parse, "Advanced Options") - group.add_option("--ibdev", type="int", dest="ib_dev", - default=1, help="Infiniband device number ") - group.add_option("-c", "--conf-dir", dest="conf_dir", - help="output directory for volume files"), - parse.add_option_group(group) - - group = OptionGroup(parse, "Extra Options") - group.add_option("--unused", action="store_true", - dest="unused", default=False, - help="enable unused options") - group.add_option("--debug", action="store_true", - dest="debug", default=False, - help="add all debug modules to volumes") - - parse.add_option_group(group) - - (options, args) = parse.parse_args() - - if options.volume_name is None: - print "Error: volume name is mandatory, please provide volume name" - raise ValueError - - if options.transport_type: - transports = options.transport_type.split(',') - for transport in transports: - if (transport != "tcp" and transport != "ib-verbs"): - print "Error: --transport: option " + transport + \ - " is not valid transport type" - raise ValueError - - if options.raid_type: - if (options.raid_type != 1 and options.raid_type != 0): - print "Error: --raid: option " + str(options.raid_type) + " is not valid raid type" - raise ValueError - - - check_duplicate_entry(args) - - server_dict = {} - - server_dict = args2dict(args) - - server_array = args2array(args) - - if len (server_dict.keys()) == 0: - print "Error: no servers provided, please provide atleast one server" - raise ValueError - - if options.raid_type == 1: - if (len(server_array) % num_replica) != 0: - print "raid type (%d) and number of volumes (%d) invalid" % (options.raid_type, - len(server_array)) - raise ValueError - - if options.raid_type == 0: - if (len(server_array) % num_stripe) != 0: - print "raid type (%d) and number of volumes (%d) invalid" % (options.raid_type, - len(server_array)) - raise ValueError - - for server in server_dict.keys(): - create_exp = CreateVolfile (server_dict, server, - None, transports, - options, None) - try: - create_exp.create_export_volfile () - except IOError, (errno, strerror): - print "Got %s creating server volfiles for %s" % (strerror, server) - - for transport in transports: - create_mnt = CreateVolfile (server_dict, None, - transport, transports, - options, server_array) - try: - create_mnt.create_mount_volfile () - except IOError, (errno, strerror): - print "Got %s creating client volfiles for transport '%s'" % (strerror, transport) - - - create_booster = CreateBooster (options, transports) - try: - create_booster.configure_booster () - except IOError, (errno, strerror): - print "Got %s creating booster configuration" % (strerror) - -def main (): - - try: - generate_volume_files() - except ValueError: - sys.exit(1) - - -main() diff --git a/extras/volgen/glusterfs-volgen.in b/extras/volgen/glusterfs-volgen.in new file mode 100755 index 000000000..5d9c579cf --- /dev/null +++ b/extras/volgen/glusterfs-volgen.in @@ -0,0 +1,185 @@ +#!/usr/bin/python + +import getopt, sys, os, string +from optparse import OptionParser,OptionGroup,make_option + +prefix = "@prefix@" + +if not (prefix + "/share/glusterfs") in sys.path: + sys.path.append(prefix + "/share/glusterfs") + +from CreateVolfile import * +from CreateBooster import * + +def check_duplicate_entry(args): + """Check duplicate entries in incoming arguments""" + _tmp = [] + for server in args: + if server not in _tmp: + _tmp.append (server) + else: + print "Duplicate arguments detected (%s)" % server + raise ValueError + + return + +def args2dict(args): + + keyvalue = {} + for arg in args: + first = arg.split(':')[0] + keyvalue[first] = [] + + for arg in args: + first = arg.split(':')[0] + if arg.split(':')[1] not in keyvalue[first]: + if arg.split(':')[1][0] != '/': + print "Absolute export path required for %s" % arg + raise ValueError + keyvalue[first].append (arg.split(':')[1]) + + return keyvalue + +def args2array(args): + + array = [] + array = args + + return array + +def generate_volume_files (): + + num_stripe = 4 + num_replica = 2 + + usage_str = "%prog: -n -t -p -a -r " + version_str = "%prog 3.0" + desc_str = "A tool to generate volume files for GlusterFS." + + parse = OptionParser(usage=usage_str, version=version_str, description=desc_str) + + # Basic option list + group = OptionGroup(parse, "Basic Options") + group.add_option("-n", "--name", dest="volume_name", + help="") + group.add_option("-t", "--transport", dest="transport_type", + default="tcp", help="tcp,ib-verbs default: tcp") + group.add_option("-p", "--port", type="int", + dest="port", default=6996, + help=" number") + group.add_option("-a", "--auth", dest="auth_param", default="*", + help="comma seperated ip range") + group.add_option("-r", "--raid", type="int", dest="raid_type", + help="0|1") + group.add_option("--nfs", action="store_true", dest="need_nfs", + default=False, help="booster nfs reexport") + group.add_option("--cifs", action="store_true", dest="need_cifs", + default=False, help="booster cifs reexport"), + parse.add_option_group(group) + + # CIFS option list + group = OptionGroup(parse, "CIFS Options") + group.add_option("--username", dest="cifs_username", + default="gluster", help="") + group.add_option("--guest", action="store_true", + dest="enable_guest", default=False, + help="enable guest access") + parse.add_option_group(group) + # NFS option list + + # Advanced option list + group = OptionGroup(parse, "Advanced Options") + group.add_option("--ibdev", type="int", dest="ib_dev", + default=1, help="Infiniband device number ") + group.add_option("-c", "--conf-dir", dest="conf_dir", + help="output directory for volume files"), + parse.add_option_group(group) + + group = OptionGroup(parse, "Extra Options") + group.add_option("--unused", action="store_true", + dest="unused", default=False, + help="enable unused options") + group.add_option("--debug", action="store_true", + dest="debug", default=False, + help="add all debug modules to volumes") + + parse.add_option_group(group) + + (options, args) = parse.parse_args() + + if options.volume_name is None: + print "Error: volume name is mandatory, please provide volume name" + raise ValueError + + if options.transport_type: + transports = options.transport_type.split(',') + for transport in transports: + if (transport != "tcp" and transport != "ib-verbs"): + print "Error: --transport: option " + transport + \ + " is not valid transport type" + raise ValueError + + if options.raid_type: + if (options.raid_type != 1 and options.raid_type != 0): + print "Error: --raid: option " + str(options.raid_type) + " is not valid raid type" + raise ValueError + + + check_duplicate_entry(args) + + server_dict = {} + + server_dict = args2dict(args) + + server_array = args2array(args) + + if len (server_dict.keys()) == 0: + print "Error: no servers provided, please provide atleast one server" + raise ValueError + + if options.raid_type == 1: + if (len(server_array) % num_replica) != 0: + print "raid type (%d) and number of volumes (%d) invalid" % (options.raid_type, + len(server_array)) + raise ValueError + + if options.raid_type == 0: + if (len(server_array) % num_stripe) != 0: + print "raid type (%d) and number of volumes (%d) invalid" % (options.raid_type, + len(server_array)) + raise ValueError + + for server in server_dict.keys(): + create_exp = CreateVolfile (server_dict, server, + None, transports, + options, None) + try: + create_exp.create_export_volfile () + except IOError, (errno, strerror): + print "Got %s creating server volfiles for %s" % (strerror, server) + + for transport in transports: + create_mnt = CreateVolfile (server_dict, None, + transport, transports, + options, server_array) + try: + create_mnt.create_mount_volfile () + except IOError, (errno, strerror): + print "Got %s creating client volfiles for transport '%s'" % (strerror, transport) + + + create_booster = CreateBooster (options, transports) + try: + create_booster.configure_booster () + except IOError, (errno, strerror): + print "Got %s creating booster configuration" % (strerror) + +def main (): + + try: + generate_volume_files() + except ValueError: + sys.exit(1) + + +main() -- cgit