return false;
}
-void ConfigKeyService::store_dump(stringstream &ss)
+void ConfigKeyService::store_dump(stringstream &ss, const string& prefix)
{
KeyValueDB::Iterator iter =
mon->store->get_iterator(CONFIG_PREFIX);
+ dout(10) << __func__ << " prefix '" << prefix << "'" << dendl;
+ if (prefix.size()) {
+ iter->lower_bound(prefix);
+ }
+
JSONFormatter f(true);
f.open_object_section("config-key store");
while (iter->valid()) {
+ if (prefix.size() &&
+ iter->key().find(prefix) != 0) {
+ break;
+ }
f.dump_string(iter->key().c_str(), iter->value().to_str());
iter->next();
}
ret = 0;
} else if (prefix == "config-key dump") {
+ string prefix;
+ cmd_getval(g_ceph_context, cmdmap, "key", prefix);
stringstream tmp_ss;
- store_dump(tmp_ss);
+ store_dump(tmp_ss, prefix);
rdata.append(tmp_ss);
ret = 0;
MonitorDBStore::TransactionRef t,
const string &prefix);
void store_list(stringstream &ss);
- void store_dump(stringstream &ss);
+ void store_dump(stringstream &ss, const string& prefix);
bool store_exists(const string &key);
bool store_has_prefix(const string &prefix);
COMMAND_WITH_FLAG("config-key list ", "list keys", "config-key", "r", "cli,rest",
FLAG(DEPRECATED))
COMMAND("config-key ls ", "list keys", "config-key", "r", "cli,rest")
-COMMAND("config-key dump", "dump keys and values", "config-key", "r", "cli,rest")
+COMMAND("config-key dump " \
+ "name=key,type=CephString,req=false", "dump keys and values (with optional prefix)", "config-key", "r", "cli,rest")
/*
'string',
'toomany']))
+ def check_0_or_1_string_arg(self, prefix, command):
+ self.assert_valid_command([prefix, command, 'string'])
+ self.assert_valid_command([prefix, command])
+ assert_equal({}, validate_command(sigdict, [prefix, command, 'string',
+ 'toomany']))
+
def check_1_or_more_string_args(self, prefix, command):
assert_equal({}, validate_command(sigdict, [prefix,
command]))
self.check_1_string_arg('config-key', 'exists')
def test_dump(self):
- self.check_no_arg('config-key', 'dump')
+ self.check_0_or_1_string_arg('config-key', 'dump')
def test_list(self):
self.check_no_arg('config-key', 'list')