diff options
author | Csaba Henk <csaba@gluster.com> | 2011-03-10 00:39:27 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2011-03-10 07:39:05 -0800 |
commit | f9a982f30922d812097a70b87628a590b2f51f15 (patch) | |
tree | d8ead71b50a3740b977bc962c569f03e738405b0 /xlators/features/marker/utils/syncdaemon/gsyncd.py | |
parent | cad088fe3a77bd3322de278c0337c1e29906f9cc (diff) |
syncdaemon: configinterface: add support for regexp based pattern-matching sections
Signed-off-by: Kaushik BV <kaushikbv@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 2427 (set a proper default for remote syncdaemon)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2427
Diffstat (limited to 'xlators/features/marker/utils/syncdaemon/gsyncd.py')
-rw-r--r-- | xlators/features/marker/utils/syncdaemon/gsyncd.py | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/xlators/features/marker/utils/syncdaemon/gsyncd.py b/xlators/features/marker/utils/syncdaemon/gsyncd.py index b8b92056b..d8166baea 100644 --- a/xlators/features/marker/utils/syncdaemon/gsyncd.py +++ b/xlators/features/marker/utils/syncdaemon/gsyncd.py @@ -199,9 +199,14 @@ def main_i(): a[-1].values.__dict__.update(log_level='DEBUG'))) op.add_option('--config-get', metavar='OPT', type=str, dest='config', action='callback', callback=store_local) op.add_option('--config-get-all', dest='config', action='callback', callback=store_local_curry(True)) - op.add_option('--config-set', metavar='OPT VAL', type=str, nargs=2, dest='config', action='callback', callback=store_local) + op.add_option('--config-set', metavar='OPT VAL', type=str, nargs=2, dest='config', action='callback', + callback=lambda o, oo, vx, p: store_local(o, oo, (vx[0], vx[1], False), p)) + op.add_option('--config-set-rx', metavar='OPT VAL', type=str, nargs=2, dest='config', action='callback', + callback=lambda o, oo, vx, p: store_local(o, oo, (vx[0], vx[1], True), p)) op.add_option('--config-del', metavar='OPT', type=str, dest='config', action='callback', callback=lambda o, oo, vx, p: - store_local(o, oo, (vx, False), p)) + store_local(o, oo, (vx, False, False), p)) + op.add_option('--config-del-rx', metavar='OPT', type=str, dest='config', action='callback', callback=lambda o, oo, vx, p: + store_local(o, oo, (vx, False, True), p)) # precedence for sources of values: 1) commandline, 2) cfg file, 3) defaults # -- for this to work out we need to tell apart defaults from explicitly set @@ -209,25 +214,30 @@ def main_i(): # values container. defaults = op.get_default_values() opts, args = op.parse_args(values=optparse.Values()) - if not (len(args) == 2 or (len(args) == 1 and rconf.get('listen')) or (len(args) <= 2 and rconf.get('config'))): + confdata = rconf.get('config') + if not (len(args) == 2 or (len(args) == 1 and rconf.get('listen')) or (len(args) <= 2 and confdata)): sys.stderr.write("error: incorrect number of arguments\n\n") sys.stderr.write(op.get_usage() + "\n") sys.exit(1) - local = remote = None - if args: - local = resource.parse_url(args[0]) - if len(args) > 1: - remote = resource.parse_url(args[1]) - if not local.can_connect_to(remote): - raise RuntimeError("%s cannot work with %s" % (local.path, remote and remote.path)) - pa = ([], []) - canon = [False, True] - for x in (local, remote): - if x: - for i in range(2): - pa[i].append(x.get_url(canonical=canon[i])) - peers, canon_peers = pa + if confdata and isinstance(confdata, tuple) and confdata[2]: + # peers are regexen, don't try to parse them + canon_peers = args + else: + local = remote = None + if args: + local = resource.parse_url(args[0]) + if len(args) > 1: + remote = resource.parse_url(args[1]) + if not local.can_connect_to(remote): + raise RuntimeError("%s cannot work with %s" % (local.path, remote and remote.path)) + pa = ([], []) + canon = [False, True] + for x in (local, remote): + if x: + for i in range(2): + pa[i].append(x.get_url(canonical=canon[i])) + peers, canon_peers = pa if not 'config_file' in rconf: rconf['config_file'] = os.path.join(os.path.dirname(sys.argv[0]), "conf/gsyncd.conf") confp = os.path.dirname(sys.argv[0]) + "conf/" @@ -241,13 +251,12 @@ def main_i(): raise gcnf = GConffile(rconf['config_file'], canon_peers) - confdata = rconf.get('config') if confdata: if isinstance(confdata, tuple): if confdata[1]: gcnf.set(*confdata) else: - gcnf.delete(confdata[0]) + gcnf.delete(confdata[0], confdata[1]) else: if confdata == True: confdata = None |