#include "msg/Message.h"
#include "common/perf_counters.h"
+#include "osd/OSDHealthMetric.h"
class PerfCounterType
{
class MMgrReport : public Message
{
- static const int HEAD_VERSION = 4;
+ static const int HEAD_VERSION = 5;
static const int COMPAT_VERSION = 1;
public:
// for service registration
boost::optional<std::map<std::string,std::string>> daemon_status;
+ std::vector<OSDHealthMetric> osd_health_metrics;
+
void decode_payload() override
{
bufferlist::iterator p = payload.begin();
::decode(service_name, p);
::decode(daemon_status, p);
}
+ if (header.version >= 5) {
+ ::decode(osd_health_metrics, p);
+ }
}
void encode_payload(uint64_t features) override {
::encode(undeclare_types, payload);
::encode(service_name, payload);
::encode(daemon_status, payload);
+ ::encode(osd_health_metrics, payload);
}
const char *get_type_name() const override { return "mgrreport"; }
if (daemon_status) {
out << " status=" << daemon_status->size();
}
+ if (!osd_health_metrics.empty()) {
+ out << " osd_metrics=" << osd_health_metrics.size();
+ }
out << ")";
}
daemon_dirty_status = false;
}
+ report->osd_health_metrics = std::move(osd_health_metrics);
session->con->send_message(report);
}
daemon_dirty_status = true;
return 0;
}
+
+void MgrClient::update_osd_health(std::vector<OSDHealthMetric>&& metrics)
+{
+ osd_health_metrics = std::move(metrics);
+}
#ifndef MGR_CLIENT_H_
#define MGR_CLIENT_H_
+#include "msg/Connection.h"
#include "msg/Dispatcher.h"
#include "mon/MgrMap.h"
-
-#include "msg/Connection.h"
+#include "osd/OSDHealthMetric.h"
#include "common/perf_counters.h"
#include "common/Timer.h"
std::string service_name, daemon_name;
std::map<std::string,std::string> daemon_metadata;
std::map<std::string,std::string> daemon_status;
+ std::vector<OSDHealthMetric> osd_health_metrics;
void reconnect();
void _send_open();
const std::map<std::string,std::string>& metadata);
int service_daemon_update_status(
std::map<std::string,std::string>&& status);
+ void update_osd_health(std::vector<OSDHealthMetric>&& metrics);
private:
void send_stats();