summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Mick <dan.mick@inktank.com>2013-07-24 21:56:15 -0700
committerDan Mick <dan.mick@inktank.com>2013-07-26 16:11:12 -0700
commitd75b6ea1a47f8b240b5dfead28bd9a7d9257400e (patch)
tree9949d334bb883301c82d8ccbe830fb66dd792aa8
parent8985e1c9e80d1e0a646e4ae7d0e0d89c6b622068 (diff)
downloadceph-d75b6ea1a47f8b240b5dfead28bd9a7d9257400e.tar.gz
ceph_argparse.py: make find_cmd_target handle tell <pgid>
Signed-off-by: Dan Mick <dan.mick@inktank.com>
-rw-r--r--src/pybind/ceph_argparse.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/pybind/ceph_argparse.py b/src/pybind/ceph_argparse.py
index 354459a2cd5..ee71b76d6a1 100644
--- a/src/pybind/ceph_argparse.py
+++ b/src/pybind/ceph_argparse.py
@@ -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', ''