f->dump_string("op", "take");
{
int item = get_rule_arg1(ruleset, j);
+ f->dump_int("item", item);
+
const char *name = get_item_name(item);
- if (name == NULL)
- f->dump_int("item", item);
- else
- f->dump_string("item", name);
+ f->dump_string("item_name", name ? name : "");
}
break;
case CRUSH_RULE_EMIT:
delete f;
EXPECT_EQ((unsigned)0, ss.str().find("<rule><rule_id>0</rule_id><rule_name>NAME</rule_name>"));
EXPECT_NE(string::npos,
- ss.str().find("<step><op>take</op><item>default</item></step>"));
+ ss.str().find("<item_name>default</item_name></step>"));
}
delete c;
function TEST_crush_rule_create_simple() {
local dir=$1
./ceph --format xml osd crush rule dump replicated_ruleset | \
- grep '<op>take</op><item>default</item>' | \
+ egrep '<op>take</op><item>[^<]+</item><item_name>default</item_name>' | \
grep '<op>chooseleaf_firstn</op><num>0</num><type>host</type>' || return 1
local ruleset=ruleset0
local root=host1
./ceph osd crush rule create-simple $ruleset $root $failure_domain 2>&1 | \
grep "$ruleset already exists" || return 1
./ceph --format xml osd crush rule dump $ruleset | \
- grep '<op>take</op><item>'$root'</item>' | \
+ egrep '<op>take</op><item>[^<]+</item><item_name>'$root'</item_name>' | \
grep '<op>choose_firstn</op><num>0</num><type>'$failure_domain'</type>' || return 1
./ceph osd crush rule rm $ruleset || return 1
}