From: Nitzan Mordechai Date: Wed, 19 Jan 2022 09:36:31 +0000 (-0600) Subject: mon/ConfigMonitor: fix config get key with whitespaces X-Git-Tag: v18.0.0~1314^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=94cac0795f64751b9e37d4e025b0c0f41b82fd39;p=ceph.git mon/ConfigMonitor: fix config get key with whitespaces Currently, a config-set\get\rm command does not handle keys with blanks. Here - we normalize the keys, replacing spaces with underscores. Fixes: https://tracker.ceph.com/issues/44092 Signed-off-by: Nitzan Mordechai --- diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index 39aa9f9b1773..471aebf6dd6b 100644 --- a/src/mon/ConfigMonitor.cc +++ b/src/mon/ConfigMonitor.cc @@ -191,6 +191,7 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op) stringstream ss; string name; cmd_getval(cmdmap, "key", name); + name = ConfFile::normalize_key_name(name); const Option *opt = g_conf().find_option(name); if (!opt) { opt = mon.mgrmon()->find_module_option(name); @@ -321,11 +322,13 @@ bool ConfigMonitor::preprocess_command(MonOpRequestRef op) &src); if (cmd_getval(cmdmap, "key", name)) { + name = ConfFile::normalize_key_name(name); const Option *opt = g_conf().find_option(name); if (!opt) { opt = mon.mgrmon()->find_module_option(name); } if (!opt) { + ss << "unrecognized key '" << name << "'"; err = -ENOENT; goto reply; } @@ -535,7 +538,8 @@ bool ConfigMonitor::prepare_command(MonOpRequestRef op) cmd_getval(cmdmap, "name", name); cmd_getval(cmdmap, "value", value); cmd_getval(cmdmap, "force", force); - + name = ConfFile::normalize_key_name(name); + if (prefix == "config set" && !force) { const Option *opt = g_conf().find_option(name); if (!opt) {