From: Sage Weil Date: Fri, 26 Jul 2019 15:05:36 +0000 (-0500) Subject: mgr/telemetry: separate out cluster config vs running daemons X-Git-Tag: v15.1.0~1999^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=58135db31757c45f9c92c37f9ebb263c68125f31;p=ceph.git 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 --- diff --git a/src/mgr/ActivePyModules.cc b/src/mgr/ActivePyModules.cc index a3c4c41df1c..2676d6c5ae9 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 1b4154f13d7..d3ca8fb0e83 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -193,7 +193,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' @@ -207,9 +208,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):