]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: LogMonitor: observe config changes
authorJoao Eduardo Luis <joao.luis@inktank.com>
Tue, 26 Aug 2014 15:45:17 +0000 (16:45 +0100)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 27 Aug 2014 18:02:04 +0000 (19:02 +0100)
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
src/mon/LogMonitor.cc
src/mon/LogMonitor.h

index b3e2c9d9156ac390f1bd7f9a40cca632e4f7498e..e0e32ce1276245cebd16e09b9678c858e2579f98 100644 (file)
@@ -649,3 +649,14 @@ void LogMonitor::log_channel_info::expand_channel_meta(map<string,string> &m)
   }
   generic_dout(10) << __func__ << " expanded map: " << m << dendl;
 }
+void LogMonitor::handle_conf_change(const struct md_config_t *conf,
+                                    const std::set<std::string> &changed)
+{
+  if (changed.count("mon_cluster_log_to_syslog") ||
+      changed.count("mon_cluster_log_to_syslog_level") ||
+      changed.count("mon_cluster_log_to_syslog_facility") ||
+      changed.count("mon_cluster_log_file") ||
+      changed.count("mon_cluster_log_file_level")) {
+    update_log_channels();
+  }
+}
index a7a40781d3356264434993b60ef746316d8d5af5..d8e799add38e3206802594dbbc981e09ba7180cb 100644 (file)
@@ -30,7 +30,8 @@ class MMonCommand;
 
 static const string LOG_META_CHANNEL = "$channel";
 
-class LogMonitor : public PaxosService {
+class LogMonitor : public PaxosService,
+                   public md_config_obs_t {
 private:
   multimap<utime_t,LogEntry> pending_log;
   LogSummary pending_summary, summary;
@@ -135,6 +136,12 @@ private:
  public:
   LogMonitor(Monitor *mn, Paxos *p, const string& service_name) 
     : PaxosService(mn, p, service_name) { }
+
+  void init() {
+    generic_dout(10) << "LogMonitor::init" << dendl;
+    g_conf->add_observer(this);
+    update_log_channels();
+  }
   
   void tick();  // check state, take actions
 
@@ -149,5 +156,22 @@ private:
    */
   int sub_name_to_id(const string& n);
 
+  void on_shutdown() {
+    g_conf->remove_observer(this);
+  }
+
+  const char **get_tracked_conf_keys() const {
+    static const char* KEYS[] = {
+      "mon_cluster_log_to_syslog",
+      "mon_cluster_log_to_syslog_level",
+      "mon_cluster_log_to_syslog_facility",
+      "mon_cluster_log_file",
+      "mon_cluster_log_file_level",
+      NULL
+    };
+    return KEYS;
+  }
+  void handle_conf_change(const struct md_config_t *conf,
+                          const std::set<std::string> &changed);
 };
 #endif