From: Sage Weil Date: Tue, 10 Mar 2020 14:26:22 +0000 (-0500) Subject: mgr: add 'mgr_status' tell command X-Git-Tag: v15.1.1~45^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3e056ca5c6d2359ff585b3c4223506992b96e857;p=ceph.git mgr: add 'mgr_status' tell command For now just dump the mgrmap_epoch Signed-off-by: Sage Weil --- diff --git a/src/mgr/Mgr.cc b/src/mgr/Mgr.cc index 367942717e33..b36320edb137 100644 --- a/src/mgr/Mgr.cc +++ b/src/mgr/Mgr.cc @@ -324,6 +324,12 @@ void Mgr::init() cluster_state.final_init(); + AdminSocket *admin_socket = g_ceph_context->get_admin_socket(); + r = admin_socket->register_command( + "mgr_status", this, + "Dump mgr status"); + ceph_assert(r == 0); + dout(4) << "Complete." << dendl; initializing = false; initialized = true; @@ -687,3 +693,29 @@ std::map Mgr::get_services() const return py_module_registry->get_services(); } +int Mgr::call( + std::string_view admin_command, + const cmdmap_t& cmdmap, + Formatter *f, + std::ostream& errss, + bufferlist& out) +{ + try { + if (admin_command == "mgr_status") { + f->open_object_section("mgr_status"); + cluster_state.with_mgrmap( + [f](const MgrMap& mm) { + f->dump_unsigned("mgrmap_epoch", mm.get_epoch()); + }); + f->dump_bool("initialized", initialized); + f->close_section(); + return 0; + } else { + return -ENOSYS; + } + } catch (const TOPNSPC::common::bad_cmd_get& e) { + errss << e.what(); + return -EINVAL; + } + return 0; +} diff --git a/src/mgr/Mgr.h b/src/mgr/Mgr.h index 9a712edcc764..157105d788e7 100644 --- a/src/mgr/Mgr.h +++ b/src/mgr/Mgr.h @@ -37,7 +37,7 @@ class MServiceMap; class Objecter; class Client; -class Mgr { +class Mgr : public AdminSocketHook { protected: MonClient *monc; Objecter *objecter; @@ -97,6 +97,13 @@ public: void handle_signal(int signum); std::map get_services() const; + + int call( + std::string_view command, + const cmdmap_t& cmdmap, + Formatter *f, + std::ostream& errss, + ceph::buffer::list& out) override; }; /**