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
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()
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)