From: Dan Mick Date: Tue, 29 Jul 2014 04:28:42 +0000 (-0700) Subject: ceph.in: Pass global args to ceph-conf for proper lookup X-Git-Tag: v0.85~124^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6d89a99648630f81b85ad115fe7662dba6b08a55;p=ceph.git ceph.in: Pass global args to ceph-conf for proper lookup Fixes: #8944 Signed-off-by: Dan Mick --- diff --git a/src/ceph.in b/src/ceph.in index 8f58aa1ea530..4cc5c42470d2 100755 --- a/src/ceph.in +++ b/src/ceph.in @@ -113,6 +113,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 @@ -346,15 +354,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() @@ -553,7 +569,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)