From: Joao Eduardo Luis Date: Mon, 12 Oct 2020 11:29:16 +0000 (+0000) Subject: mon: have 'mon stat' output json as well X-Git-Tag: v15.2.8~5^2~1^2~41^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=2ff4428f12eddcc907df885c7202f6fdb0e4543b;p=ceph.git mon: have 'mon stat' output json as well Fixes: https://tracker.ceph.com/issues/46816 Signed-off-by: Joao Eduardo Luis (cherry picked from commit c148a3cde5c256576d0a67a40321e543fdf891bf) --- diff --git a/src/mon/MonmapMonitor.cc b/src/mon/MonmapMonitor.cc index 9f52d5e6f7c95..7e8b965fb5328 100644 --- a/src/mon/MonmapMonitor.cc +++ b/src/mon/MonmapMonitor.cc @@ -278,10 +278,29 @@ bool MonmapMonitor::preprocess_command(MonOpRequestRef op) boost::scoped_ptr 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;