]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mon/MonClient: add callback for (any) config change
authorSage Weil <sage@redhat.com>
Sat, 17 Nov 2018 12:50:17 +0000 (06:50 -0600)
committerSage Weil <sage@redhat.com>
Sat, 17 Nov 2018 12:50:17 +0000 (06:50 -0600)
This is a coarse "there was some config update".  It's fired whether or
not it values are observed.

Signed-off-by: Sage Weil <sage@redhat.com>
src/mon/MonClient.cc
src/mon/MonClient.h

index e78cd9d0420e53dff9e053776853ec74204a580f..b408f95c5d409c78b1dc39e5a43551dfab45a023 100644 (file)
@@ -374,6 +374,9 @@ void MonClient::handle_config(MConfig *m)
   ldout(cct,10) << __func__ << " " << *m << dendl;
   finisher.queue(new FunctionContext([this, m](int r) {
        cct->_conf.set_mon_vals(cct, m->config, config_cb);
+       if (config_notify_cb) {
+         config_notify_cb();
+       }
        m->put();
       }));
   got_config = true;
index 4d0755c1469707f58231a9cc8a2b8166f84bdbac..b16a7f22f1aa9ccd0fc90763dda34b30ddda361b 100644 (file)
@@ -439,6 +439,9 @@ public:
   }
 
   void register_config_callback(md_config_t::config_callback fn);
+  void register_config_notify_callback(std::function<void(void)> f) {
+    config_notify_cb = f;
+  }
   md_config_t::config_callback get_config_callback();
 
 private:
@@ -453,6 +456,7 @@ private:
   void handle_get_version_reply(MMonGetVersionReply* m);
 
   md_config_t::config_callback config_cb;
+  std::function<void(void)> config_notify_cb;
 };
 
 #endif