From: Kefu Chai Date: Fri, 20 Dec 2019 07:53:43 +0000 (+0800) Subject: mon: add MonCommand::FLAG_TELL X-Git-Tag: v15.1.0~359^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a2c34794dc794cd2592d2bc14f3a0f90e2f165a3;p=ceph.git mon: add MonCommand::FLAG_TELL MonCommand::FLAG_TELL implies NOFORWARD and HIDDEN, so we don't need to specify both of them. Signed-off-by: Kefu Chai --- diff --git a/src/mon/MonCommand.h b/src/mon/MonCommand.h index 97c49127cca1..af8565109521 100644 --- a/src/mon/MonCommand.h +++ b/src/mon/MonCommand.h @@ -31,6 +31,9 @@ struct MonCommand { static const uint64_t FLAG_MGR = 1 << 3; static const uint64_t FLAG_POLL = 1 << 4; static const uint64_t FLAG_HIDDEN = 1 << 5; + // asok and tell commands are not forwarded, and they should not be listed + // in --help output. + static const uint64_t FLAG_TELL = (FLAG_NOFORWARD | FLAG_HIDDEN); bool has_flag(uint64_t flag) const { return (flags & flag) != 0; } void set_flag(uint64_t flag) { flags |= flag; } @@ -76,6 +79,10 @@ struct MonCommand { module == o->module && req_perms == o->req_perms; } + bool is_tell() const { + return has_flag(MonCommand::FLAG_TELL); + } + bool is_noforward() const { return has_flag(MonCommand::FLAG_NOFORWARD); } diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index 94a154e0ab01..b05253339896 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -114,6 +114,7 @@ * POLL - command is intended to be called periodically by the * client (see iostat) * HIDDEN - command is hidden (no reported by help etc) + * TELL - tell/asok command. it's an alias of (NOFORWARD | HIDDEN) * * A command should always be first considered DEPRECATED before being * considered OBSOLETE, giving due consideration to users and conforming @@ -190,7 +191,7 @@ COMMAND("auth rm " */ COMMAND_WITH_FLAG("compact", "cause compaction of monitor's leveldb/rocksdb storage", "mon", "rw", - FLAG(NOFORWARD)) + FLAG(TELL)) COMMAND_WITH_FLAG("scrub", "scrub the monitor stores", "mon", "rw", FLAG(OBSOLETE)) @@ -243,7 +244,7 @@ COMMAND("tell " "name=args,type=CephString,n=N", "send a command to a specific daemon", "mon", "rw") COMMAND_WITH_FLAG("version", "show mon daemon version", "mon", "r", - FLAG(NOFORWARD)) + FLAG(TELL)) COMMAND("node ls " "name=type,type=CephChoices,strings=all|osd|mon|mds|mgr,req=false", @@ -1238,45 +1239,57 @@ COMMAND("config generate-minimal-conf", // that shunts these off to the asok machinery. COMMAND_WITH_FLAG("injectargs " - "name=injected_args,type=CephString,n=N", - "inject config arguments into monitor", "mon", "rw", - FLAG(NOFORWARD)|FLAG(HIDDEN)) + "name=injected_args,type=CephString,n=N", + "inject config arguments into monitor", "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("smart name=devid,type=CephString,req=false", - "Query health metrics for underlying device", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) -COMMAND_WITH_FLAG("mon_status", "report status of monitors", "mon", "r", - FLAG(NOFORWARD)|FLAG(HIDDEN)) + "Query health metrics for underlying device", + "mon", "rw", + FLAG(TELL)) +COMMAND_WITH_FLAG("mon_status", + "report status of monitors", + "mon", "r", + FLAG(TELL)) COMMAND_WITH_FLAG("heap " "name=heapcmd,type=CephChoices,strings=dump|start_profiler|stop_profiler|release|stats " "name=value,type=CephString,req=false", "show heap usage info (available only if compiled with tcmalloc)", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("sync_force " "name=validate,type=CephChoices,strings=--yes-i-really-mean-it,req=false", "force sync of and clear monitor store", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("add_bootstrap_peer_hint " "name=addr,type=CephIPAddr", "add peer address as potential bootstrap " "peer for cluster bringup", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("add_bootstrap_peer_hintv " "name=addrv,type=CephString", "add peer address vector as potential bootstrap " "peer for cluster bringup", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("quorum enter ", "force monitor back into quorum", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("quorum exit", "force monitor out of the quorum", - "mon", "rw", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "rw", + FLAG(TELL)) COMMAND_WITH_FLAG("ops", "show the ops currently in flight", - "mon", "r", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "r", + FLAG(TELL)) COMMAND_WITH_FLAG("sessions", "list existing sessions", - "mon", "r", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "r", + FLAG(TELL)) COMMAND_WITH_FLAG("dump_historic_ops", "dump_historic_ops", - "mon", "r", FLAG(NOFORWARD)|FLAG(HIDDEN)) + "mon", "r", + FLAG(TELL)) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 9e04d076ffb6..93ae00fd7f0d 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -852,8 +852,7 @@ int Monitor::preinit() l.unlock(); // register tell/asock commands for (const auto& command : local_mon_commands) { - // all asock commands are noforward, vice versa - if (!command.is_noforward()) { + if (!command.is_tell()) { continue; } const auto prefix = cmddesc_get_prefix(command.cmdstring);