diff options
author | Dan Mick <dan.mick@inktank.com> | 2013-07-24 21:56:15 -0700 |
---|---|---|
committer | Dan Mick <dan.mick@inktank.com> | 2013-07-26 16:11:12 -0700 |
commit | d75b6ea1a47f8b240b5dfead28bd9a7d9257400e (patch) | |
tree | 9949d334bb883301c82d8ccbe830fb66dd792aa8 | |
parent | 8985e1c9e80d1e0a646e4ae7d0e0d89c6b622068 (diff) | |
download | ceph-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.py | 19 |
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', '' |