]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: introduce tick() calls through the system
authorGreg Farnum <gfarnum@redhat.com>
Sat, 11 Mar 2017 02:48:47 +0000 (18:48 -0800)
committerSage Weil <sage@redhat.com>
Fri, 2 Jun 2017 16:58:15 +0000 (12:58 -0400)
Still empty for the moment

Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/messages/MMonMgrReport.h
src/mgr/ClusterState.cc
src/mgr/ClusterState.h
src/mgr/DaemonServer.h
src/mgr/Mgr.cc
src/mgr/Mgr.h
src/mgr/MgrStandby.cc

index 0e5abec2a8be0ee9ea2d5ad4068b6289d03e77b7..d45a1e545f95d6f83bb045306ed10b3cd8ca3e89 100644 (file)
@@ -33,7 +33,7 @@ private:
   ~MMonMgrReport() override {}
 
 public:
-
+  bool needs_send = false;
   const char *get_type_name() const override { return "monmgrreport"; }
 
   void print(ostream& out) const override {
index 153dc34cdf3607061fc4b0a6884f2144b2cfe425..d96d1e99e3b751457cdabaef5b629d9fd32c4ff9 100644 (file)
@@ -12,6 +12,7 @@
  */
 
 #include "messages/MMgrDigest.h"
+#include "messages/MMonMgrReport.h"
 #include "messages/MPGStats.h"
 
 #include "mgr/ClusterState.h"
@@ -113,3 +114,7 @@ void ClusterState::notify_osdmap(const OSDMap &osd_map)
   // while the full-blown PGMap lives only here.
 }
 
+void ClusterState::tick(MMonMgrReport *m)
+{
+  dout(0) << __func__ << dendl;
+}
index fb967e17fc1969af0ed70d61817120818e9fb237..72643dba20b1f1e955c455c3da7c202b300db94d 100644 (file)
@@ -22,6 +22,7 @@
 #include "mon/PGMap.h"
 
 class MMgrDigest;
+class MMonMgrReport;
 class MPGStats;
 
 
@@ -57,6 +58,8 @@ public:
 
   void notify_osdmap(const OSDMap &osd_map);
 
+  void tick(MMonMgrReport *m);
+
   bool have_fsmap() const {
     Mutex::Locker l(lock);
     return fsmap.get_epoch() > 0;
index 0ef4a5655ee14739b6dbfaa8fc8773e9e26b6eec..66b8045c8f0c0cebe1d22844d485cda339255422 100644 (file)
@@ -32,6 +32,7 @@
 
 class MMgrReport;
 class MMgrOpen;
+class MMonMgrReport;
 class MCommand;
 struct MgrCommand;
 
@@ -111,6 +112,7 @@ public:
   bool handle_open(MMgrOpen *m);
   bool handle_report(MMgrReport *m);
   bool handle_command(MCommand *m);
+  void tick(MMonMgrReport *m) {}
 };
 
 #endif
index b4892c3f8efda143baf93e978a0289f64b502d07..158a8ac1a5200101fcf647a2df0b7c0cc5af9c6f 100644 (file)
@@ -27,6 +27,7 @@
 #include "DaemonServer.h"
 #include "messages/MMgrBeacon.h"
 #include "messages/MMgrDigest.h"
+#include "messages/MMonMgrReport.h"
 #include "messages/MCommand.h"
 #include "messages/MCommandReply.h"
 #include "messages/MLog.h"
@@ -583,3 +584,14 @@ void Mgr::handle_mgr_digest(MMgrDigest* m)
   m->put();
 }
 
+void Mgr::tick()
+{
+  dout(0) << __func__ << dendl;
+  MMonMgrReport *m = new MMonMgrReport();
+  cluster_state.tick(m);
+  server.tick(m);
+  // TODO? We currently do not notify the PyModules
+  if (m->needs_send) {
+    monc->send_mon_message(m);
+  }
+}
index 2efb2683f8a3248fb93491535d14aa351dd72185..0aa5b5c5be0c35eb5b1997b05a3d6841d385b634 100644 (file)
@@ -86,6 +86,8 @@ public:
 
   bool ms_dispatch(Message *m);
 
+  void tick();
+
   void background_init();
   void shutdown();
 };
index d94e3fd68655acb166ec72b02e3af2ee1a594961..a6b76643b73376bdbdadc6b06cea0b29ea26f69d 100644 (file)
@@ -159,8 +159,13 @@ void MgrStandby::send_beacon()
 
 void MgrStandby::tick()
 {
+  dout(0) << __func__ << dendl;
   send_beacon();
 
+  if (active_mgr) {
+    active_mgr->tick();
+  }
+
   timer.add_event_after(g_conf->mgr_tick_period, new FunctionContext(
         [this](int r){
           tick();