summaryrefslogtreecommitdiff
path: root/src/mon/OSDMonitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mon/OSDMonitor.cc')
-rw-r--r--src/mon/OSDMonitor.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc
index 608edb90534..ff46a6e948e 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");