]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph.in: --admin-daemon was not returning EINVAL on bad command
authorDan Mick <dan.mick@inktank.com>
Fri, 16 Aug 2013 00:10:56 +0000 (17:10 -0700)
committerSage Weil <sage@inktank.com>
Fri, 16 Aug 2013 00:14:50 +0000 (17:14 -0700)
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>
(cherry picked from commit 266460e97ec9ef9711e9eaa4bd954f3188d8da69)

src/ceph.in

index fa79a720656f9bdb4872148dc3032d9134e0c891..e4fd6eb3d65301f8b7fe2edf0cc5656c9f8e8eb4 100755 (executable)
@@ -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