]> 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>
Fri, 26 Jul 2019 15:05:52 +0000 (10:05 -0500)
This indirectly tells us whether the cluster config is being used (vs
ceph.conf).

Signed-off-by: Sage Weil <sage@redhat.com>
src/mgr/ActivePyModules.cc
src/pybind/mgr/telemetry/module.py

index a3c4c41df1cd4cc278030ac5b288d4e00c15b7e1..2676d6c5ae9192dfe2124d05aadd2437dbe4e777 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 1b4154f13d70f82424c18557a8fdcec23eb011f6..d3ca8fb0e83546397fa6bf37c6a4aa3aba2864b1 100644 (file)
@@ -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):