From 9438e5a4b6b16e7ca3276c94c05ec73541690c10 Mon Sep 17 00:00:00 2001 From: Sridhar Seshasayee Date: Wed, 30 Jun 2021 14:52:50 +0530 Subject: [PATCH] common/config: Add methods to return the default value of a config option Add wrapper method "get_val_default()" to the ConfigProxy class that takes the config option key to search. This method in-turn calls another method with the same name added to md_config_t class that does the actual work of searching for the config option. If the option is valid, _get_val_default() is used to get the default value. Otherwise, the wrapper method returns std::nullopt. Fixes: https://tracker.ceph.com/issues/51464 Signed-off-by: Sridhar Seshasayee --- src/common/config.cc | 10 ++++++++++ src/common/config.h | 3 +++ src/common/config_proxy.h | 3 +++ 3 files changed, 16 insertions(+) diff --git a/src/common/config.cc b/src/common/config.cc index a58d9d9e1f2..c8101587b71 100644 --- a/src/common/config.cc +++ b/src/common/config.cc @@ -1024,6 +1024,16 @@ void md_config_t::get_config_bl( } } +std::optional md_config_t::get_val_default(std::string_view key) +{ + std::string val; + const Option *opt = find_option(key); + if (opt && (conf_stringify(_get_val_default(*opt), &val) == 0)) { + return std::make_optional(std::move(val)); + } + return std::nullopt; +} + int md_config_t::get_val(const ConfigValues& values, const std::string_view key, char **buf, int len) const { diff --git a/src/common/config.h b/src/common/config.h index ce5f9277796..bafac663127 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -192,6 +192,9 @@ public: /// get encoded map of compiled-in defaults void get_defaults_bl(const ConfigValues& values, ceph::buffer::list *bl); + /// Get the default value of a configuration option + std::optional get_val_default(std::string_view key); + // Get a configuration value. // No metavariables will be returned (they will have already been expanded) int get_val(const ConfigValues& values, const std::string_view key, char **buf, int len) const; diff --git a/src/common/config_proxy.h b/src/common/config_proxy.h index cb30a2d7f1f..e43a7c6dd67 100644 --- a/src/common/config_proxy.h +++ b/src/common/config_proxy.h @@ -344,6 +344,9 @@ public: const std::string& get_conf_path() const { return config.get_conf_path(); } + std::optional get_val_default(std::string_view key) { + return config.get_val_default(key); + } }; } -- 2.39.5