summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-02-05 14:31:10 -0800
committerSage Weil <sage@inktank.com>2013-02-05 14:31:10 -0800
commitc370d85b428cdf7cf4ae98c7484e9ac4614fb9fc (patch)
tree1c2bb10ed06cab0137368ffea786b143cdbd82f3
parentb6036a58b910da82a47065045ae12813b5b7a8be (diff)
downloadceph-c370d85b428cdf7cf4ae98c7484e9ac4614fb9fc.tar.gz
mon: 'osd crush rules list|ls'
Signed-off-by: Sage Weil <sage@inktank.com>
-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");