return 0;
}
-void md_config_t::parse_env()
+void md_config_t::parse_env(const char *args_var)
{
- Mutex::Locker l(lock);
if (safe_to_start_threads)
return;
+ if (!args_var) {
+ args_var = "CEPH_ARGS";
+ }
if (getenv("CEPH_KEYRING")) {
+ Mutex::Locker l(lock);
string k = getenv("CEPH_KEYRING");
values["keyring"][CONF_ENV] = Option::value_t(k);
}
+ if (getenv(args_var)) {
+ vector<const char *> env_args;
+ env_to_vec(env_args, args_var);
+ parse_argv(env_args, CONF_ENV);
+ }
}
void md_config_t::show_config(std::ostream& out)
std::ostream *warnings, int flags);
// Absorb config settings from the environment
- void parse_env();
+ void parse_env(const char *env_var = "CEPH_ARGS");
// Absorb config settings from argv
int parse_argv(std::vector<const char*>& args, int level=CONF_CMDLINE);
_exit(1);
}
- conf->parse_env(); // environment variables override
+ // environment variables override (CEPH_ARGS, CEPH_KEYRING)
+ conf->parse_env();
- conf->parse_argv(args); // argv override
+ // command line (as passed by caller)
+ conf->parse_argv(args);
if (!iparams.no_mon_config) {
MonClient mc_bootstrap(g_ceph_context);