});
}
-seastar::future<> MonMap::build_monmap(const crimson::common::ConfigProxy& conf,
- bool for_mkfs)
+bool MonMap::maybe_init_with_mon_host(const std::string& mon_host,
+ const bool for_mkfs)
{
- // -m foo?
- if (const auto mon_host = conf.get_val<std::string>("mon_host");
- !mon_host.empty()) {
+ if (!mon_host.empty()) {
if (auto ret = init_with_ips(mon_host, for_mkfs, "noname-"); ret == 0) {
- return make_ready_future<>();
+ return true;
}
// TODO: resolve_addrs() is a blocking call
if (auto ret = init_with_hosts(mon_host, for_mkfs, "noname-"); ret == 0) {
- return make_ready_future<>();
+ return true;
} else {
throw std::runtime_error(cpp_strerror(ret));
}
}
+ return false;
+}
+
+seastar::future<> MonMap::build_monmap(const crimson::common::ConfigProxy& conf,
+ bool for_mkfs)
+{
+ // -m foo?
+ if (maybe_init_with_mon_host(conf.get_val<std::string>("mon_host"), for_mkfs)) {
+ return make_ready_future<>();
+ }
// What monitors are in the config file?
ostringstream errout;
seastar::future<> MonMap::build_initial(const crimson::common::ConfigProxy& conf, bool for_mkfs)
{
// mon_host_override?
- if (auto mon_host_override = conf.get_val<std::string>("mon_host_override");
- !mon_host_override.empty()) {
- if (auto ret = init_with_ips(mon_host_override, for_mkfs, "noname-"); ret == 0) {
- return make_ready_future<>();
- }
- // TODO: resolve_addrs() is a blocking call
- if (auto ret = init_with_hosts(mon_host_override, for_mkfs, "noname-"); ret == 0) {
- return make_ready_future<>();
- } else {
- throw std::runtime_error(cpp_strerror(ret));
- }
+ if (maybe_init_with_mon_host(conf.get_val<std::string>("mon_host_override"),
+ for_mkfs)) {
+ return make_ready_future<>();
}
// file?
seastar::future<> build_monmap(const crimson::common::ConfigProxy& conf, bool for_mkfs);
/// initialize monmap by resolving given service name
seastar::future<> init_with_dns_srv(bool for_mkfs, const std::string& name);
+ /// initialize monmap with `mon_host` or `mon_host_override`
+ bool maybe_init_with_mon_host(const std::string& mon_host, bool for_mkfs);
#else
/// read from encoded monmap file
int init_with_monmap(const std::string& monmap, std::ostream& errout);