]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: 'osd crush rules list|ls'
authorSage Weil <sage@inktank.com>
Tue, 5 Feb 2013 22:31:10 +0000 (14:31 -0800)
committerSage Weil <sage@inktank.com>
Tue, 5 Feb 2013 22:31:10 +0000 (14:31 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/OSDMonitor.cc

index 608edb905347d68d867d596d95c9fe0233c384a5..ff46a6e948e826ff1cde33da9dfd5c9ee8f69471 100644 (file)
@@ -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");