]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: have 'mon stat' output json as well
authorJoao Eduardo Luis <joao@suse.com>
Mon, 12 Oct 2020 11:29:16 +0000 (11:29 +0000)
committerNathan Cutler <ncutler@suse.com>
Sat, 21 Nov 2020 15:41:28 +0000 (16:41 +0100)
Fixes: https://tracker.ceph.com/issues/46816
Signed-off-by: Joao Eduardo Luis <joao@suse.com>
(cherry picked from commit c148a3cde5c256576d0a67a40321e543fdf891bf)

src/mon/MonmapMonitor.cc

index 76356807c3ae0eaa90da87cd506999e9a27d29ce..4770c1cded3e0494c21429383da8033c9aa9b727 100644 (file)
@@ -277,10 +277,29 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op)
   boost::scoped_ptr<Formatter> f(Formatter::create(format));
 
   if (prefix == "mon stat") {
-    mon->monmap->print_summary(ss);
-    ss << ", election epoch " << mon->get_epoch() << ", leader "
-       << mon->get_leader() << " " << mon->get_leader_name()
-       << ", quorum " << mon->get_quorum() << " " << mon->get_quorum_names();
+    if (f) {
+      f->open_object_section("monmap");
+      mon->monmap->dump_summary(f.get());
+      f->dump_string("leader", mon->get_leader_name());
+      f->open_array_section("quorum");
+      for (auto rank: mon->get_quorum()) {
+        std::string name = mon->monmap->get_name(rank);
+        f->open_object_section("mon");
+        f->dump_int("rank", rank);
+        f->dump_string("name", name);
+        f->close_section();  // mon
+      }
+      f->close_section();  // quorum
+      f->close_section();  // monmap
+      f->flush(ss);
+    } else {
+      mon->monmap->print_summary(ss);
+      ss << ", election epoch " << mon->get_epoch() << ", leader "
+         << mon->get_leader() << " " << mon->get_leader_name()
+         << ", quorum " << mon->get_quorum()
+         << " " << mon->get_quorum_names();
+    }
+
     rdata.append(ss);
     ss.str("");
     r = 0;