mgr: 'config show <who> <key>'

Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
Sage Weil 2018-01-08 18:47:26 -06:00
parent ee423a4f44
commit 4af9c9677b
3 changed files with 34 additions and 14 deletions

View File

@ -1355,8 +1355,25 @@ bool DaemonServer::handle_command(MCommand *m)
key.first = who.substr(0, dot);
key.second = who.substr(dot + 1);
DaemonStatePtr daemon = daemon_state.get(key);
if (daemon &&
daemon->config_defaults_bl.length() > 0) {
string name;
if (!daemon) {
ss << "no config state for daemon " << who;
r = -ENOENT;
} else if (cmd_getval(g_ceph_context, cmdctx->cmdmap, "key", name)) {
auto p = daemon->config.find(name);
if (p != daemon->config.end() &&
!p->second.empty()) {
cmdctx->odata.append(p->second.rbegin()->second + "\n");
} else {
auto& defaults = daemon->get_config_defaults();
auto q = defaults.find(name);
if (q != defaults.end()) {
cmdctx->odata.append(q->second + "\n");
} else {
r = -ENOENT;
}
}
} else if (daemon->config_defaults_bl.length() > 0) {
Mutex::Locker l(daemon->lock);
TextTable tbl;
if (f) {
@ -1414,14 +1431,8 @@ bool DaemonServer::handle_command(MCommand *m)
}
} else {
// show-with-defaults
if (daemon->config_defaults.empty()) {
auto p = daemon->config_defaults_bl.begin();
try {
::decode(daemon->config_defaults, p);
} catch (buffer::error e) {
}
}
for (auto& i : daemon->config_defaults) {
auto& defaults = daemon->get_config_defaults();
for (auto& i : defaults) {
if (f) {
f->open_object_section("value");
f->dump_string("name", i.first);
@ -1486,9 +1497,6 @@ bool DaemonServer::handle_command(MCommand *m)
} else {
cmdctx->odata.append(stringify(tbl));
}
} else {
ss << "no config state for daemon " << who;
r = -ENOENT;
}
cmdctx->reply(r, ss);
return true;

View File

@ -120,6 +120,18 @@ class DaemonState
: perf_counters(types_)
{
}
const std::map<std::string,std::string>& get_config_defaults() {
if (config_defaults.empty() &&
config_defaults_bl.length()) {
auto p = config_defaults_bl.begin();
try {
::decode(config_defaults, p);
} catch (buffer::error e) {
}
}
return config_defaults;
}
};
typedef std::shared_ptr<DaemonState> DaemonStatePtr;

View File

@ -133,7 +133,7 @@ COMMAND("service status",
"dump service state", "service", "r", "cli,rest")
COMMAND("config show " \
"name=who,type=CephString",
"name=who,type=CephString name=key,type=CephString,req=False",
"Show running configuration",
"mgr", "r", "cli,rest")
COMMAND("config show-with-defaults " \