]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/global_init: parse environment
authorSage Weil <sage@redhat.com>
Mon, 8 Jan 2018 20:07:14 +0000 (14:07 -0600)
committerSage Weil <sage@redhat.com>
Tue, 6 Mar 2018 20:44:49 +0000 (14:44 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/config.cc
src/common/config.h
src/global/global_init.cc

index 8fa4d3d496b6a4ac485920a83f4e279b1c24236d..8d00d752905c7402e0fe0f564ce1426a9c886ae6 100644 (file)
@@ -458,15 +458,23 @@ int md_config_t::parse_config_files(const char *conf_files_str,
   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)
index 5cdc71e5eb219d0fdc72e6c4ac5c4e3d8a629554..bfa2bef2d5b4100b1da21b636090107aa4f309a0 100644 (file)
@@ -141,7 +141,7 @@ public:
                         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);
index ea454b11f1be562e30d0ac55a036cf50f6866e5a..e81023e50f36fca1e9bf51c852bb8ed957bc6535 100644 (file)
@@ -134,9 +134,11 @@ void global_pre_init(
     _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);