From 120b5d5ad51fa47a2bb0a144821635f5f81b5a2e Mon Sep 17 00:00:00 2001 From: Dan Mick Date: Mon, 28 Jul 2014 21:28:42 -0700 Subject: [PATCH] ceph.in: Pass global args to ceph-conf for proper lookup Fixes: #8944 Signed-off-by: Dan Mick (cherry picked from commit 6d89a99648630f81b85ad115fe7662dba6b08a55) --- src/ceph.in | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/ceph.in b/src/ceph.in index 0978882d8c1d1..82c90859bf30e 100755 --- a/src/ceph.in +++ b/src/ceph.in @@ -106,6 +106,14 @@ def mdsids(): l.append(mdsdict['name']) return l +# these args must be passed to all child programs +GLOBAL_ARGS = { + 'client_id': '--id', + 'client_name': '--name', + 'cluster': '--cluster', + 'cephconf': '--conf', +} + def parse_cmdargs(args=None, target=''): # alias: let the line-wrapping be sane AP = argparse.ArgumentParser @@ -339,15 +347,23 @@ def admin_socket(asok_path, cmd, format=''): return ret -def ceph_conf(field, name): +def ceph_conf(parsed_args, field, name): + args=['ceph-conf'] + + if name: + args.extend(['--name', name]) + + # add any args in GLOBAL_ARGS + for key, val in GLOBAL_ARGS.iteritems(): + # ignore name in favor of argument name, if any + if name and key == 'client_name': + continue + if getattr(parsed_args, key): + args.extend([val, getattr(parsed_args, key)]) + + args.extend(['--show-config-value', field]) p = subprocess.Popen( - args=[ - 'ceph-conf', - '--show-config-value', - field, - '-n', - name, - ], + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) outdata, errdata = p.communicate() @@ -538,7 +554,8 @@ def main(): else: # try resolve daemon name try: - sockpath = ceph_conf('admin_socket', childargs[1]) + sockpath = ceph_conf(parsed_args, 'admin_socket', + childargs[1]) except Exception as e: print >> sys.stderr, \ 'Can\'t get admin socket path: ' + str(e) -- 2.39.5