mirror of
https://github.com/ceph/ceph
synced 2025-02-21 01:47:25 +00:00
mon: add ruleset name to crush rule dump
The crush rule name is made an optional first argument. If not provided, it defaults to dumping all rules. Signed-off-by: Loic Dachary <loic@dachary.org>
This commit is contained in:
parent
fce4d68404
commit
4784a687c1
@ -364,8 +364,9 @@ COMMAND("osd blacklist ls", "show blacklisted clients", "osd", "r", "cli,rest")
|
||||
COMMAND("osd crush rule list", "list crush rules", "osd", "r", "cli,rest")
|
||||
COMMAND("osd crush rule ls", "list crush rules", "osd", "r", "cli,rest")
|
||||
COMMAND("osd crush rule dump " \
|
||||
"name=name,type=CephString,goodchars=[A-Za-z0-9-_.],req=false " \
|
||||
"name=format,type=CephChoices,strings=json|json-pretty|xml|xml-pretty,req=false", \
|
||||
"dump crush rules formatted as <format> (default json-pretty)", \
|
||||
"dump crush rule <name> (default all) formatted as <format> (default json-pretty)", \
|
||||
"osd", "r", "cli,rest")
|
||||
COMMAND("osd crush dump " \
|
||||
"name=format,type=CephChoices,strings=json|json-pretty|xml|xml-pretty,req=false", \
|
||||
|
@ -2529,15 +2529,27 @@ stats_out:
|
||||
rs << "\n";
|
||||
rdata.append(rs.str());
|
||||
} else if (prefix == "osd crush rule dump") {
|
||||
string name;
|
||||
cmd_getval(g_ceph_context, cmdmap, "name", name);
|
||||
string format;
|
||||
cmd_getval(g_ceph_context, cmdmap, "format", format, string("json-pretty"));
|
||||
Formatter *fp = new_formatter(format);
|
||||
if (!fp)
|
||||
fp = new_formatter("json-pretty");
|
||||
boost::scoped_ptr<Formatter> f(fp);
|
||||
f->open_array_section("rules");
|
||||
osdmap.crush->dump_rules(f.get());
|
||||
f->close_section();
|
||||
if (name == "") {
|
||||
f->open_array_section("rules");
|
||||
osdmap.crush->dump_rules(f.get());
|
||||
f->close_section();
|
||||
} else {
|
||||
int ruleset = osdmap.crush->get_rule_id(name);
|
||||
if (ruleset < 0) {
|
||||
ss << "unknown crush ruleset '" << name << "'";
|
||||
r = ruleset;
|
||||
goto reply;
|
||||
}
|
||||
osdmap.crush->dump_rule(ruleset, f.get());
|
||||
}
|
||||
ostringstream rs;
|
||||
f->flush(rs);
|
||||
rs << "\n";
|
||||
|
@ -576,11 +576,13 @@ class TestOSD(TestArgparse):
|
||||
|
||||
def test_crush_rule_dump(self):
|
||||
self.assert_valid_command(['osd', 'crush', 'rule', 'dump'])
|
||||
self.assert_valid_command(['osd', 'crush', 'rule', 'dump', 'RULE'])
|
||||
for format in ('json', 'json-pretty', 'xml', 'xml-pretty'):
|
||||
self.assert_valid_command(['osd', 'crush', 'rule', 'dump', format])
|
||||
self.assert_valid_command(['osd', 'crush', 'rule',
|
||||
'dump', 'RULE', format])
|
||||
assert_equal({}, validate_command(sigdict, ['osd', 'crush',
|
||||
'rule', 'dump',
|
||||
'json',
|
||||
'RULE', 'json',
|
||||
'toomany']))
|
||||
|
||||
def test_crush_dump(self):
|
||||
|
Loading…
Reference in New Issue
Block a user