}
});
return f.get();
+ } else if (what == "modified_config_options") {
+ PyEval_RestoreThread(tstate);
+ auto all_daemons = daemon_state.get_all();
+ set<string> 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") {
return metadata
def gather_configs(self):
- configs = set()
+ # cluster config options
+ cluster = set()
r, outb, outs = self.mon_command({
'prefix': 'config dump',
'format': 'json'
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):