diff --git a/src/messages/MMgrOpen.h b/src/messages/MMgrOpen.h index 171ef5a1e25..4f08f2751cd 100644 --- a/src/messages/MMgrOpen.h +++ b/src/messages/MMgrOpen.h @@ -34,6 +34,9 @@ public: // encode map> of current config bufferlist config_bl; + // encode map of compiled-in defaults + bufferlist config_defaults_bl; + void decode_payload() override { bufferlist::iterator p = payload.begin(); @@ -48,6 +51,7 @@ public: } if (header.version >= 3) { ::decode(config_bl, p); + ::decode(config_defaults_bl, p); } } @@ -61,6 +65,7 @@ public: encode(daemon_status, payload); } ::encode(config_bl, payload); + ::encode(config_defaults_bl, payload); } const char *get_type_name() const override { return "mgropen"; } diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index dcbbde15802..7b0ef76c245 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -395,6 +395,10 @@ bool DaemonServer::handle_open(MMgrOpen *m) ::decode(daemon->config, p); dout(20) << " got config " << daemon->config << dendl; } + daemon->config_defaults_bl = m->config_defaults_bl; + daemon->config_defaults.clear(); + dout(20) << " got config_defaults_bl " << daemon->config_defaults_bl.length() + << " bytes" << dendl; } if (m->get_connection()->get_peer_type() != entity_name_t::TYPE_CLIENT && diff --git a/src/mgr/DaemonState.h b/src/mgr/DaemonState.h index 352541583b3..4efd91b8770 100644 --- a/src/mgr/DaemonState.h +++ b/src/mgr/DaemonState.h @@ -109,6 +109,10 @@ class DaemonState // running config std::map> config; + // compiled-in config defaults (rarely used, so we leave them encoded!) + bufferlist config_defaults_bl; + std::map config_defaults; + // The perf counters received in MMgrReport messages DaemonPerfCounters perf_counters; diff --git a/src/mgr/MgrClient.cc b/src/mgr/MgrClient.cc index 2b557d0acef..7f50258b771 100644 --- a/src/mgr/MgrClient.cc +++ b/src/mgr/MgrClient.cc @@ -175,6 +175,7 @@ void MgrClient::_send_open() open->daemon_metadata = daemon_metadata; } cct->_conf->get_config_bl(&open->config_bl); + cct->_conf->get_defaults_bl(&open->config_defaults_bl); session->con->send_message(open); } }