]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: send progress events to mon
authorSage Weil <sage@redhat.com>
Tue, 5 Feb 2019 16:16:22 +0000 (10:16 -0600)
committerSage Weil <sage@redhat.com>
Fri, 8 Feb 2019 19:50:27 +0000 (13:50 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MMonMgrReport.h
src/mgr/DaemonServer.cc
src/mgr/PyModuleRegistry.h

index d4f1d47670095d0e16bcc2e238ea00b26e21f5ed..8ca5ed232fbe0725b5864a88b3fb17eb8b0ee85c 100644 (file)
@@ -24,13 +24,14 @@ class MMonMgrReport : public MessageInstance<MMonMgrReport, PaxosServiceMessage>
 public:
   friend factory;
 private:
-  static constexpr int HEAD_VERSION = 1;
+  static constexpr int HEAD_VERSION = 2;
   static constexpr int COMPAT_VERSION = 1;
 
 public:
   // PGMapDigest is in data payload
   health_check_map_t health_checks;
   bufferlist service_map_bl;  // encoded ServiceMap
+  std::map<std::string,ProgressEvent> progress_events;
 
   MMonMgrReport()
     : MessageInstance(MSG_MON_MGR_REPORT, 0, HEAD_VERSION, COMPAT_VERSION)
@@ -42,7 +43,8 @@ public:
   std::string_view get_type_name() const override { return "monmgrreport"; }
 
   void print(ostream& out) const override {
-    out << get_type_name() << "(" << health_checks.checks.size() << " checks)";
+    out << get_type_name() << "(" << health_checks.checks.size() << " checks, "
+       << progress_events.size() << " progress events)";
   }
 
   void encode_payload(uint64_t features) override {
@@ -50,12 +52,16 @@ public:
     paxos_encode();
     encode(health_checks, payload);
     encode(service_map_bl, payload);
+    if (header.version >= 2) {
+      encode(progress_events, payload);
+    }
   }
   void decode_payload() override {
     auto p = payload.cbegin();
     paxos_decode(p);
     decode(health_checks, p);
     decode(service_map_bl, p);
+    decode(progress_events, p);
   }
 };
 
index a05dd37c8be7bf0307ad66a863b6f115ddf91093..c9e1feab34e41fcad6cbea292f328123aa82a010 100644 (file)
@@ -2192,6 +2192,7 @@ void DaemonServer::send_report()
 
   auto m = new MMonMgrReport();
   py_modules.get_health_checks(&m->health_checks);
+  py_modules.get_progress_events(&m->progress_events);
 
   cluster_state.with_mutable_pgmap([&](PGMap& pg_map) {
       cluster_state.update_delta_stats();
index eccc2bfb0f6a63dc021fc84f128b0184a57a71dd..7245c677d9f8aa1f1607caeb1b495e16c00914db 100644 (file)
@@ -151,6 +151,10 @@ public:
    */
   void get_health_checks(health_check_map_t *checks);
 
+  void get_progress_events(map<std::string,ProgressEvent> *events) {
+    return active_modules->get_progress_events(events);
+  }
+
   // FIXME: breaking interface so that I don't have to go rewrite all
   // the places that call into these (for now)
   // >>>