]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: add 'mgr_status' tell command
authorSage Weil <sage@redhat.com>
Tue, 10 Mar 2020 14:26:22 +0000 (09:26 -0500)
committerSage Weil <sage@redhat.com>
Tue, 10 Mar 2020 14:30:50 +0000 (09:30 -0500)
For now just dump the mgrmap_epoch

Signed-off-by: Sage Weil <sage@redhat.com>
src/mgr/Mgr.cc
src/mgr/Mgr.h

index 367942717e33761642e6fec7d5015775128c48ff..b36320edb1377e9a7002e05df0e30b755b2c061d 100644 (file)
@@ -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<std::string, std::string> 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;
+}
index 9a712edcc7648448b999d8d54285943a45be55c0..157105d788e7c9ea687ebfb516a99ab75d41d785 100644 (file)
@@ -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<std::string, std::string> get_services() const;
+
+  int call(
+    std::string_view command,
+    const cmdmap_t& cmdmap,
+    Formatter *f,
+    std::ostream& errss,
+    ceph::buffer::list& out) override;
 };
 
 /**