From e947fac485ad2a569cca6259162bd24e5530b54a Mon Sep 17 00:00:00 2001 From: haoyixing Date: Sat, 21 Nov 2020 22:31:00 +0800 Subject: [PATCH] mgr: fix "ceph pg dump_json/dump_pools_json" format error When execute ceph pg dump_json, the expected result is json format, but now is plain. Same to ceph pg dump_pools_json. So check args to show right format result. Signed-off-by: haoyixing Co-authored-by: Kefu Chai --- src/mgr/DaemonServer.cc | 20 ++++++++++++-------- src/mon/PGMap.cc | 2 -- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 91e6c3759b9f0..001f8f81bbf5d 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -12,6 +12,7 @@ */ #include "DaemonServer.h" +#include #include "mgr/Mgr.h" #include "include/stringify.h" @@ -889,8 +890,6 @@ bool DaemonServer::_handle_command( session->inst.name = m->get_source(); } - std::string format; - boost::scoped_ptr f; map param_str_map; std::stringstream ss; int r = 0; @@ -900,15 +899,20 @@ bool DaemonServer::_handle_command( return true; } - { - cmd_getval(cmdctx->cmdmap, "format", format, string("plain")); - f.reset(Formatter::create(format)); - } - string prefix; cmd_getval(cmdctx->cmdmap, "prefix", prefix); + dout(10) << "decoded-size=" << cmdctx->cmdmap.size() << " prefix=" << prefix << dendl; - dout(10) << "decoded-size=" << cmdctx->cmdmap.size() << " prefix=" << prefix << dendl; + boost::scoped_ptr f; + { + std::string format; + if (boost::algorithm::ends_with(prefix, "_json")) { + format = "json"; + } else { + cmd_getval(cmdctx->cmdmap, "format", format, string("plain")); + } + f.reset(Formatter::create(format)); + } // this is just for mgr commands - admin socket commands will fall // through and use the admin socket version of diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc index 176b64e15717f..26bfcf046731d 100644 --- a/src/mon/PGMap.cc +++ b/src/mon/PGMap.cc @@ -3496,13 +3496,11 @@ int process_pg_map_command( if (prefix == "pg dump_json") { vector v; v.push_back(string("all")); - cmd_putval(g_ceph_context, cmdmap, "format", string("json")); cmd_putval(g_ceph_context, cmdmap, "dumpcontents", v); prefix = "pg dump"; } else if (prefix == "pg dump_pools_json") { vector v; v.push_back(string("pools")); - cmd_putval(g_ceph_context, cmdmap, "format", string("json")); cmd_putval(g_ceph_context, cmdmap, "dumpcontents", v); prefix = "pg dump"; } else if (prefix == "pg ls-by-primary") { -- 2.39.5