]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_argparse.py: make find_cmd_target handle tell <pgid>
authorDan Mick <dan.mick@inktank.com>
Thu, 25 Jul 2013 04:56:15 +0000 (21:56 -0700)
committerDan Mick <dan.mick@inktank.com>
Fri, 26 Jul 2013 23:11:12 +0000 (16:11 -0700)
Signed-off-by: Dan Mick <dan.mick@inktank.com>
src/pybind/ceph_argparse.py

index 354459a2cd57a00c919dc97c28ab7016df3d93eb..ee71b76d6a1f3f8bcb5ecc56bd99c4051c817c39 100644 (file)
@@ -897,20 +897,35 @@ def find_cmd_target(childargs):
     sig = parse_funcsig(['tell', {'name':'target','type':'CephName'}])
     try:
         valid_dict = validate(childargs, sig, partial=True);
+    except ArgumentError:
+        pass
+    else:
         if len(valid_dict) == 2:
+            # revalidate to isolate type and id
             name = CephName()
+            # if this fails, something is horribly wrong, as it just
+            # validated successfully above
             name.valid(valid_dict['target'])
             return name.nametype, name.nameid
+
+    sig = parse_funcsig(['tell', {'name':'pgid','type':'CephPgid'}])
+    try:
+        valid_dict = validate(childargs, sig, partial=True);
     except ArgumentError:
         pass
+    else:
+        if len(valid_dict) == 2:
+            # pg doesn't need revalidation; the string is fine
+            return 'pg', valid_dict['pgid']
 
     sig = parse_funcsig(['pg', {'name':'pgid','type':'CephPgid'}])
     try:
         valid_dict = validate(childargs, sig, partial=True);
-        if len(valid_dict) == 2:
-            return 'pg', valid_dict['pgid']
     except ArgumentError:
         pass
+    else:
+        if len(valid_dict) == 2:
+            return 'pg', valid_dict['pgid']
 
     return 'mon', ''