From 94cac0795f64751b9e37d4e025b0c0f41b82fd39 Mon Sep 17 00:00:00 2001 From: Nitzan Mordechai Date: Wed, 19 Jan 2022 03:36:31 -0600 Subject: [PATCH] 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 --- src/mon/ConfigMonitor.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index 39aa9f9b177..471aebf6dd6 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) { -- 2.47.3