}
+static bool is_daemon(uint32_t module_type)
+{
+ if (module_type == CEPH_ENTITY_TYPE_OSD ||
+ module_type == CEPH_ENTITY_TYPE_MDS ||
+ module_type == CEPH_ENTITY_TYPE_MON) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
CephContext::CephContext(uint32_t module_type_, int init_flags_)
: nref(1),
- _conf(new md_config_t()),
+ _conf(new md_config_t(is_daemon(module_type_))),
_log(NULL),
_module_type(module_type_),
_init_flags(init_flags_),
-md_config_t::md_config_t()
+md_config_t::md_config_t(bool is_daemon)
: cluster(""),
lock("md_config_t", true, false)
{
// Load default values from the schema
for (const auto &i : schema) {
- // TODO: select daemon default if appropriate.
- values[i.first] = i.second.value;
+ bool has_daemon_default = !boost::get<boost::blank>(&i.second.daemon_value);
+ if (is_daemon && has_daemon_default) {
+ values[i.first] = i.second.daemon_value;
+ } else {
+ values[i.first] = i.second.value;
+ }
}
// Copy out values (defaults) into any legacy (C struct member) fields
} opt_type_t;
// Create a new md_config_t structure.
- md_config_t();
+ md_config_t(bool is_daemon=false);
~md_config_t();
// Adds a new observer to this configuration. You can do this at any time,
value_t value;
value_t daemon_value;
- value_t nondaemon_value;
std::list<std::string> tags;
std::list<std::string> see_also;
Option& set_daemon_default(const T& v) {
return set_value(daemon_value, v);
}
- template<typename T>
- Option& set_nondaemon_default(const T& v) {
- return set_value(nondaemon_value, v);
- }
Option& add_tag(const char* t) {
tags.push_back(t);
return *this;