]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph.in: Pass global args to ceph-conf for proper lookup
authorDan Mick <dan.mick@inktank.com>
Tue, 29 Jul 2014 04:28:42 +0000 (21:28 -0700)
committerDan Mick <dan.mick@inktank.com>
Fri, 8 Aug 2014 01:24:37 +0000 (18:24 -0700)
Fixes: #8944
Signed-off-by: Dan Mick <dan.mick@inktank.com>
(cherry picked from commit 6d89a99648630f81b85ad115fe7662dba6b08a55)

src/ceph.in

index 0978882d8c1d1cbe72a9e4c99ff237d98d177769..82c90859bf30e4e3fd5fada9b2d7ccc421bf2a9f 100755 (executable)
@@ -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)