From 08d1a6fc3c57ccbeb6dff8fce1aae429edca97f3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 5 Feb 2019 10:16:22 -0600 Subject: [PATCH] mgr: send progress events to mon Signed-off-by: Sage Weil --- src/messages/MMonMgrReport.h | 10 ++++++++-- src/mgr/DaemonServer.cc | 1 + src/mgr/PyModuleRegistry.h | 4 ++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/messages/MMonMgrReport.h b/src/messages/MMonMgrReport.h index d4f1d47670095..8ca5ed232fbe0 100644 --- a/src/messages/MMonMgrReport.h +++ b/src/messages/MMonMgrReport.h @@ -24,13 +24,14 @@ class MMonMgrReport : public MessageInstance 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 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); } }; diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index a05dd37c8be7b..c9e1feab34e41 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -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(); diff --git a/src/mgr/PyModuleRegistry.h b/src/mgr/PyModuleRegistry.h index eccc2bfb0f6a6..7245c677d9f8a 100644 --- a/src/mgr/PyModuleRegistry.h +++ b/src/mgr/PyModuleRegistry.h @@ -151,6 +151,10 @@ public: */ void get_health_checks(health_check_map_t *checks); + void get_progress_events(map *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) // >>> -- 2.39.5