#include <boost/optional.hpp>
#include "msg/Message.h"
+#include "mgr/OSDPerfMetricReport.h"
#include "common/perf_counters.h"
#include "mgr/DaemonHealthMetric.h"
friend factory;
private:
- static constexpr int HEAD_VERSION = 6;
+ static constexpr int HEAD_VERSION = 7;
static constexpr int COMPAT_VERSION = 1;
public:
// encode map<string,map<int32_t,string>> of current config
bufferlist config_bl;
+ std::list<OSDPerfMetricReport> osd_perf_metric_reports;
+
void decode_payload() override
{
auto p = payload.cbegin();
if (header.version >= 6) {
decode(config_bl, p);
}
+ if (header.version >= 7) {
+ decode(osd_perf_metric_reports, p);
+ }
}
void encode_payload(uint64_t features) override {
encode(daemon_status, payload);
encode(daemon_health_metrics, payload);
encode(config_bl, payload);
+ encode(osd_perf_metric_reports, payload);
}
const char *get_type_name() const override { return "mgrreport"; }
--- /dev/null
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+#ifndef OSD_PERF_METRIC_REPORT_H_
+#define OSD_PERF_METRIC_REPORT_H_
+#include "include/denc.h"
+
+#include "common/perf_counters.h"
+
+struct PerformanceCounterDescriptor {
+ std::string name;
+ perfcounter_type_d type;
+};
+
+
+struct OSDPerfMetricReport {
+ std::vector<PerformanceCounterDescriptor> performance_counter_descriptors;
+ std::map<std::string, bufferlist> group_packed_performance_counters;
+
+ DENC(OSDPerfMetricReport, v, p) {
+ DENC_START(1, 1, p);
+// denc(v.performance_counter_descriptors, p);
+ DENC_FINISH(p);
+ }
+};
+WRITE_CLASS_DENC(OSDPerfMetricReport)
+
+#endif // OSD_PERF_METRIC_REPORT_H_