From 2f5a1becb88faea0f05fa174bead6994d9853268 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 2 Jan 2019 16:29:17 -0600 Subject: [PATCH] mon/ConfigMonitor: add --force flag to 'config set' Add a force flag to override option and/or value checks. Signed-off-by: Sage Weil --- src/mon/ConfigMonitor.cc | 20 ++++++++++++-------- src/mon/MonCommands.h | 3 ++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/mon/ConfigMonitor.cc b/src/mon/ConfigMonitor.cc index 235fe679c27ba..f730cffaa53de 100644 --- a/src/mon/ConfigMonitor.cc +++ b/src/mon/ConfigMonitor.cc @@ -416,11 +416,13 @@ bool ConfigMonitor::prepare_command(MonOpRequestRef op) prefix == "config rm") { string who; string name, value; + bool force = false; cmd_getval(g_ceph_context, cmdmap, "who", who); cmd_getval(g_ceph_context, cmdmap, "name", name); cmd_getval(g_ceph_context, cmdmap, "value", value); + cmd_getval(g_ceph_context, cmdmap, "force", force); - if (prefix == "config set") { + if (prefix == "config set" && !force) { const Option *opt = g_conf().find_option(name); if (!opt) { opt = mon->mgrmon()->find_module_option(name); @@ -430,13 +432,15 @@ bool ConfigMonitor::prepare_command(MonOpRequestRef op) err = -EINVAL; goto reply; } - - Option::value_t real_value; - string errstr; - err = opt->parse_value(value, &real_value, &errstr, &value); - if (err < 0) { - ss << "error parsing value: " << errstr; - goto reply; + + if (opt) { + Option::value_t real_value; + string errstr; + err = opt->parse_value(value, &real_value, &errstr, &value); + if (err < 0) { + ss << "error parsing value: " << errstr; + goto reply; + } } } diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index 3ae0e7fac5f49..7e10e2628f39f 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -1131,7 +1131,8 @@ COMMAND("mgr versions", \ COMMAND("config set" \ " name=who,type=CephString" \ " name=name,type=CephString" \ - " name=value,type=CephString", \ + " name=value,type=CephString" \ + " name=force,type=CephBool,req=false", "Set a configuration option for one or more entities", "config", "rw") COMMAND("config rm" \ -- 2.39.5