From 3855a1793a6fe697866188b1ac85008b7eb83adf Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 26 Jul 2019 10:05:36 -0500 Subject: [PATCH] mgr/telemetry: separate out cluster config vs running daemons This indirectly tells us whether the cluster config is being used (vs ceph.conf). Signed-off-by: Sage Weil (cherry picked from commit 58135db31757c45f9c92c37f9ebb263c68125f31) --- src/mgr/ActivePyModules.cc | 16 ++++++++++++++++ src/pybind/mgr/telemetry/module.py | 13 ++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/mgr/ActivePyModules.cc b/src/mgr/ActivePyModules.cc index 907bb0c81c934..b59a0b57282ca 100644 --- a/src/mgr/ActivePyModules.cc +++ b/src/mgr/ActivePyModules.cc @@ -199,6 +199,22 @@ PyObject *ActivePyModules::get_python(const std::string &what) } }); return f.get(); + } else if (what == "modified_config_options") { + PyEval_RestoreThread(tstate); + auto all_daemons = daemon_state.get_all(); + set names; + for (auto& [key, daemon] : all_daemons) { + std::lock_guard l(daemon->lock); + for (auto& [name, valmap] : daemon->config) { + names.insert(name); + } + } + f.open_array_section("options"); + for (auto& name : names) { + f.dump_string("name", name); + } + f.close_section(); + return f.get(); } else if (what.substr(0, 6) == "config") { PyEval_RestoreThread(tstate); if (what == "config_options") { diff --git a/src/pybind/mgr/telemetry/module.py b/src/pybind/mgr/telemetry/module.py index 724864d914e9c..98aeb85462195 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -203,7 +203,8 @@ class Module(MgrModule): return metadata def gather_configs(self): - configs = set() + # cluster config options + cluster = set() r, outb, outs = self.mon_command({ 'prefix': 'config dump', 'format': 'json' @@ -217,9 +218,15 @@ class Module(MgrModule): for opt in dump: name = opt.get('name') if name: - configs.add(name) + cluster.add(name) + # daemon-reported options (which may include ceph.conf) + active = set() + ls = self.get("modified_config_options"); + for opt in ls.get('options', {}): + active.add(opt) return { - 'non_default_options': [ sorted(list(configs)) ] + 'cluster_changed': sorted(list(cluster)), + 'active_changed': sorted(list(active)), } def gather_crashinfo(self): -- 2.39.5