From f8142628c1890831d75d12799a39087de618a5d4 Mon Sep 17 00:00:00 2001 From: xinxin shu Date: Fri, 30 Jan 2015 14:09:16 +0800 Subject: [PATCH] fix error : ceph pg ls 0 no valid command found; 10 closest matches: pg ls-by-primary {} {active|clean|down|replay|splitting|scrubbing|scrubq|degraded|inconsistent|peering|repair|recovery|backfill_wait|incomplete|stale|remapped|deep_scrub|backfill|backfill_toofull|recovery_wait|undersized [active|clean|down|replay|splitting|scrubbing|scrubq|degraded|inconsistent|peering|repair|recovery|backfill_wait|incomplete|stale|remapped|deep_scrub|backfill|backfill_toofull|recovery_wait|undersized...]} Error EINVAL: invalid command this is due to partial compare of prefix Signed-off-by: xinxin shu --- src/pybind/ceph_argparse.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pybind/ceph_argparse.py b/src/pybind/ceph_argparse.py index 029a552be148e..3d202da5bcdef 100644 --- a/src/pybind/ceph_argparse.py +++ b/src/pybind/ceph_argparse.py @@ -727,7 +727,10 @@ def matchnum(args, signature, partial=False): word = words.pop(0) try: - validate_one(word, desc, partial) + # only allow partial matching if we're on the last supplied + # word; avoid matching foo bar and foot bar just because + # partial is set + validate_one(word, desc, partial and (len(words) == 0)) valid = True except ArgumentError: # matchnum doesn't care about type of error -- 2.39.5