]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/telemetry: separate out cluster config vs running daemons
authorSage Weil <sage@redhat.com>
Fri, 26 Jul 2019 15:05:36 +0000 (10:05 -0500)
committerSage Weil <sage@redhat.com>
Wed, 6 Nov 2019 12:41:50 +0000 (06:41 -0600)
This indirectly tells us whether the cluster config is being used (vs
ceph.conf).

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 58135db31757c45f9c92c37f9ebb263c68125f31)

src/mgr/ActivePyModules.cc
src/pybind/mgr/telemetry/module.py

index 907bb0c81c934e2bbc5d9bd664d72def85b58aad..b59a0b57282cab213c33c1cc39467ed02893939a 100644 (file)
@@ -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<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") {
index 724864d914e9c9bf2ea3e90054adecc92953a764..98aeb85462195e7792ca5a370fbcfee2f2bef032 100644 (file)
@@ -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):