#include "messages/MMgrConfigure.h"
#include "messages/MMgrMap.h"
#include "messages/MMgrOpen.h"
+#include "messages/MMgrReport.h"
namespace {
seastar::logger& logger()
void Client::report()
{
+ _send_report();
gate.dispatch_in_background(__func__, *this, [this] {
if (!conn) {
- logger().warn("report: no conn available; raport skipped");
+ logger().warn("report: no conn available; report skipped");
return seastar::now();
}
return with_stats.get_stats(
});
}
+void Client::_send_report()
+{
+ // TODO: implement daemon_health_metrics support
+ // https://tracker.ceph.com/issues/63766
+ gate.dispatch_in_background(__func__, *this, [this] {
+ if (!conn) {
+ logger().warn("cannot send report; no conn available");
+ return seastar::now();
+ }
+ auto report = make_message<MMgrReport>();
+ // Adding empty information since we don't support perfcounters yet
+ report->undeclare_types.emplace_back();
+ ENCODE_START(1, 1, report->packed);
+ report->declare_types.emplace_back();
+ ENCODE_FINISH(report->packed);
+
+ if (daemon_name.size()) {
+ report->daemon_name = daemon_name;
+ } else {
+ report->daemon_name = local_conf()->name.get_id();
+ }
+ report->service_name = service_name;
+ local_conf().get_config_bl(last_config_bl_version, &report->config_bl,
+ &last_config_bl_version);
+ return conn->send(std::move(report));
+ });
+}
+
void Client::print(std::ostream& out) const
{
out << "mgrc ";
seastar::timer<seastar::lowres_clock> report_timer;
crimson::common::Gated gate;
uint64_t last_config_bl_version = 0;
+ std::string service_name, daemon_name;
+
+ void _send_report();
};
inline std::ostream& operator<<(std::ostream& out, const Client& client) {
seastar::future<> Client::start() {
entity_name = crimson::common::local_conf()->name;
auth_registry.refresh_config();
+ sub.want("config", 0, 0);
return load_keyring().then([this] {
return monmap.build_initial(crimson::common::local_conf(), false);
}).then([this] {