From: Sage Weil Date: Tue, 5 Feb 2013 22:31:10 +0000 (-0800) Subject: mon: 'osd crush rules list|ls' X-Git-Tag: v0.58~141^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c370d85b428cdf7cf4ae98c7484e9ac4614fb9fc;p=ceph.git mon: 'osd crush rules list|ls' Signed-off-by: Sage Weil --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 608edb905347..ff46a6e948e8 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1996,6 +1996,33 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) ss << "listed " << osdmap.blacklist.size() << " entries"; r = 0; } + else if (m->cmd.size() >= 4 && m->cmd[1] == "crush" && m->cmd[2] == "rule" && (m->cmd[3] == "list" || + m->cmd[3] == "ls")) { + JSONFormatter jf(true); + jf.open_array_section("rules"); + for (int rule = 0; rule < osdmap.crush->get_max_rules(); rule++) { + if (!osdmap.crush->rule_exists(rule)) + continue; + jf.dump_string("name", osdmap.crush->get_rule_name(rule)); + } + jf.close_section(); + ostringstream rs; + jf.flush(rs); + rs << "\n"; + rdata.append(rs.str()); + r = 0; + } + else if (m->cmd.size() >= 4 && m->cmd[1] == "crush" && m->cmd[2] == "rule" && m->cmd[3] == "dump") { + JSONFormatter jf(true); + jf.open_array_section("rules"); + osdmap.crush->dump_rules(&jf); + jf.close_section(); + ostringstream rs; + jf.flush(rs); + rs << "\n"; + rdata.append(rs.str()); + r = 0; + } else if (m->cmd.size() == 3 && m->cmd[1] == "crush" && m->cmd[2] == "dump") { JSONFormatter jf(true); jf.open_object_section("crush_map");