]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph.in: --admin-daemon was not returning EINVAL on bad command 506/head
authorDan Mick <dan.mick@inktank.com>
Fri, 16 Aug 2013 00:10:56 +0000 (17:10 -0700)
committerDan Mick <dan.mick@inktank.com>
Fri, 16 Aug 2013 00:10:56 +0000 (17:10 -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>
src/ceph.in

index fe369f824679e85c559cc0c706baad22f080b9d1..38464dfc2a292c639736e42df9db47a67bbbf009 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