summaryrefslogtreecommitdiffstats
path: root/xlators/features/marker/utils/syncdaemon/gsyncd.py
diff options
context:
space:
mode:
authorCsaba Henk <csaba@gluster.com>2011-03-10 00:39:27 +0000
committerVijay Bellur <vijay@dev.gluster.com>2011-03-10 07:39:05 -0800
commitf9a982f30922d812097a70b87628a590b2f51f15 (patch)
treed8ead71b50a3740b977bc962c569f03e738405b0 /xlators/features/marker/utils/syncdaemon/gsyncd.py
parentcad088fe3a77bd3322de278c0337c1e29906f9cc (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.py47
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