summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Mick <dan.mick@inktank.com>2013-08-15 17:10:56 -0700
committerDan Mick <dan.mick@inktank.com>2013-08-15 17:10:56 -0700
commit266460e97ec9ef9711e9eaa4bd954f3188d8da69 (patch)
tree743191a9aee60ff5057a28227149d3ab7d689f67
parent35565ee64e41d7fddc7849c6006692c78227132c (diff)
downloadceph-266460e97ec9ef9711e9eaa4bd954f3188d8da69.tar.gz
ceph.in: --admin-daemon was not returning EINVAL on bad command
Fix by restructuring code to hoist common code and have only one place where admin_socket is actually called. Signed-off-by: Dan Mick <dan.mick@inktank.com>
-rwxr-xr-xsrc/ceph.in37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/ceph.in b/src/ceph.in
index fe369f82467..38464dfc2a2 100755
--- a/src/ceph.in
+++ b/src/ceph.in
@@ -506,35 +506,36 @@ def main():
format = parsed_args.output_format
+ sockpath = None
if parsed_args.admin_socket:
- try:
- print admin_socket(parsed_args.admin_socket, childargs, format)
- except Exception as e:
- print >> sys.stderr, 'admin_socket: {0}'.format(e)
- return 0
-
- if len(childargs) > 0 and childargs[0] == "daemon":
+ sockpath = parsed_args.admin_socket
+ elif len(childargs) > 0 and childargs[0] == "daemon":
+ # Treat "daemon <path>" or "daemon <name>" like --admin_daemon <path>
if len(childargs) > 2:
if childargs[1].find('/') >= 0:
- try:
- print admin_socket(childargs[1], childargs[2:], format)
- except Exception as e:
- print >> sys.stderr, 'admin_socket: {0}'.format(e)
- return errno.EINVAL
- return 0
+ sockpath = childargs[1]
else:
# try resolve daemon name
- path = ceph_conf('admin_socket', childargs[1])
try:
- print admin_socket(path, childargs[2:], format)
+ sockpath = ceph_conf('admin_socket', childargs[1])
except Exception as e:
- print >> sys.stderr, 'admin_socket: {0}'.format(e)
+ print >> sys.stderr, \
+ 'Can\'t get admin socket path: ' + str(e)
return errno.EINVAL
- return 0
+ # for both:
+ childargs = childargs[2:]
else:
- print >> sys.stderr, 'Daemon requires at least 2 arguments'
+ print >> sys.stderr, 'daemon requires at least 3 arguments'
return errno.EINVAL
+ if sockpath:
+ try:
+ print admin_socket(sockpath, childargs, format)
+ except Exception as e:
+ print >> sys.stderr, 'admin_socket: {0}'.format(e)
+ return errno.EINVAL
+ return 0
+
# handle any 'generic' ceph arguments that we didn't parse here
global cluster_handle