From d8460714fab61d0a3092b3e7b290c0c19ad58beb Mon Sep 17 00:00:00 2001 From: David Zafman Date: Mon, 22 Jun 2015 20:11:10 -0700 Subject: [PATCH] tools: Check for valid --op earlier so we can get a better error message Signed-off-by: David Zafman --- src/test/ceph_objectstore_tool.py | 4 ++++ src/tools/ceph_objectstore_tool.cc | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/test/ceph_objectstore_tool.py b/src/test/ceph_objectstore_tool.py index c23206bf4f882..44c03c25849b0 100755 --- a/src/test/ceph_objectstore_tool.py +++ b/src/test/ceph_objectstore_tool.py @@ -654,6 +654,10 @@ def main(argv): cmd = CFSD_PREFIX.format(osd=ONEOSD) ERRORS += test_failure(cmd, "Must provide --op or object command...") + # Specify a bad --op command + cmd = (CFSD_PREFIX + "--op oops").format(osd=ONEOSD) + ERRORS += test_failure(cmd, "Must provide --op (info, log, remove, export, import, list, fix-lost, list-pgs, rm-past-intervals, set-allow-sharded-objects, dump-journal, dump-super, meta-list)") + TMPFILE = r"/tmp/tmp.{pid}".format(pid=pid) ALLPGS = OBJREPPGS + OBJECPGS OSDS = get_osds(ALLPGS[0], OSDDIR) diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index ee07946496fd6..80b08b35cbe5e 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -2436,6 +2436,15 @@ int main(int argc, char **argv) goto out; } + // If not an object command nor any of the ops handled below, then output this usage + // before complaining about a bad pgid + if (!vm.count("objcmd") && op != "export" && op != "info" && op != "log" && op != "rm-past-intervals") { + cerr << "Must provide --op (info, log, remove, export, import, list, fix-lost, list-pgs, rm-past-intervals, set-allow-sharded-objects, dump-journal, dump-super, meta-list)" + << std::endl; + usage(desc); + ret = 1; + goto out; + } epoch_t map_epoch; // The following code for export, info, log require omap or !skip-mount-omap if (it != ls.end()) { @@ -2688,10 +2697,7 @@ int main(int argc, char **argv) cout << "Removal succeeded" << std::endl; } } else { - cerr << "Must provide --op (info, log, remove, export, import, list, fix-lost, list-pgs, rm-past-intervals, set-allow-sharded-objects, dump-journal, dump-super, meta-list)" - << std::endl; - usage(desc); - ret = 1; + assert(!"Should have already checked for valid --op"); } } else { cerr << "PG '" << pgid << "' not found" << std::endl; -- 2.39.5