]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common_init: allow init without config file
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Fri, 25 Mar 2011 00:01:51 +0000 (17:01 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Fri, 25 Mar 2011 00:28:46 +0000 (17:28 -0700)
Add a flag, CINIT_FLAG_NO_DEFAULT_CONFIG_FILE, that specifies that the
program should not read a config file by default.

Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
src/cauthtool.cc
src/common/ceph_argparse.cc
src/common/ceph_argparse.h
src/common/common_init.cc
src/common/common_init.h
src/common/config.cc
src/librados.cc
src/monmaptool.cc
src/osdmaptool.cc

index 133e4ddc87da621e3694a857a983f423b4fcb452..c49528153c1628a86fc409fd7c8371462ef48bd9 100644 (file)
@@ -53,7 +53,8 @@ int main(int argc, const char **argv)
   env_to_vec(args);
   DEFINE_CONF_VARS(usage);
 
-  common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY,
+             CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
   EntityName ename(*g_conf.name);
 
   const char *me = argv[0];
index 1838bab5919abc5a3a67265524c465f156cb215d..748fab0ac6f733ddd84dd0bfe06b1bf94268c443 100644 (file)
@@ -162,12 +162,12 @@ void parse_config_option_string(std::string& s)
 }
 
 // The defaults for CephInitParameters
-CephInitParameters::CephInitParameters(uint32_t module_type)
-  : conf_file(CEPH_CONF_FILE_DEFAULT)
+CephInitParameters::CephInitParameters(uint32_t module_type, const char *conf_file_)
+  : conf_file(conf_file_)
 {
-  const char *conf_file_ = getenv("CEPH_CONF");
-  if (conf_file_)
-    conf_file = conf_file_;
+  const char *c = getenv("CEPH_CONF");
+  if (c)
+    conf_file = c;
   name.set(module_type, "admin");
 }
 
@@ -235,10 +235,11 @@ bool ceph_argparse_witharg(std::vector<const char*> &args,
 }
 
 CephInitParameters ceph_argparse_early_args
-         (std::vector<const char*>& args, uint32_t module_type)
+         (std::vector<const char*>& args, uint32_t module_type, int flags)
 {
-
-  CephInitParameters iparams(module_type);
+  const char *conf = (flags & CINIT_FLAG_NO_DEFAULT_CONFIG_FILE) ?
+    "" : CEPH_CONF_FILE_DEFAULT;
+  CephInitParameters iparams(module_type, conf);
   std::string val;
   for (std::vector<const char*>::iterator i = args.begin(); i != args.end(); ) {
     if (strcmp(*i, "--") == 0)
index 28586c0b6f01d3db81c06cb745c8c644448c0179..b1f464d5e516006dd633afad94a47dc8a997e1ef 100644 (file)
@@ -47,7 +47,7 @@
 class CephInitParameters
 {
 public:
-  CephInitParameters(uint32_t module_type);
+  CephInitParameters(uint32_t module_type, const char *conf_file_);
   std::list<std::string> get_conf_files() const;
 
   std::string conf_file;
@@ -72,7 +72,7 @@ bool ceph_argparse_flag(std::vector<const char*> &args,
 bool ceph_argparse_witharg(std::vector<const char*> &args,
        std::vector<const char*>::iterator &i, std::string *ret, ...);
 extern CephInitParameters ceph_argparse_early_args
-               (std::vector<const char*>& args, uint32_t module_type);
+           (std::vector<const char*>& args, uint32_t module_type, int flags);
 extern void generic_server_usage();
 extern void generic_client_usage();
 
index 5eb0fc5f1ed6cf4efe1d364e7fea8e17cae410dd..d672904ecfc20f185c7001a0554de4d2a2845d79 100644 (file)
@@ -120,7 +120,7 @@ void common_init(std::vector < const char* >& args,
               uint32_t module_type, code_environment_t code_env, int flags)
 {
   CephInitParameters iparams =
-    ceph_argparse_early_args(args, module_type);
+    ceph_argparse_early_args(args, module_type, flags);
   md_config_t *conf = common_preinit(iparams, code_env, flags);
 
   int ret = conf->parse_config_files(iparams.get_conf_files());
@@ -128,8 +128,14 @@ void common_init(std::vector < const char* >& args,
     derr << "common_init: error parsing config file." << dendl;
     _exit(1);
   }
+  else if (ret == -EINVAL) {
+    if (!(flags & CINIT_FLAG_NO_DEFAULT_CONFIG_FILE)) {
+      derr << "common_init: unable to open config file." << dendl;
+      _exit(1);
+    }
+  }
   else if (ret) {
-    derr << "common_init: unable to open config file." << dendl;
+    derr << "common_init: error reading config file." << dendl;
     _exit(1);
   }
 
index dddf030ea806d719a3435d0c23d0054918c6bf8c..4e649fa9412a82f0e3306fedc66b43dfce61bbca 100644 (file)
@@ -13,6 +13,9 @@ class CephInitParameters;
 enum common_init_flags_t {
   // Set up defaults that make sense for an unprivileged deamon
   CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS = 0x1,
+
+  // By default, don't read a configuration file
+  CINIT_FLAG_NO_DEFAULT_CONFIG_FILE = 0x2,
 };
 
 int keyring_init(md_config_t *conf);
index f441574befa3e2d4a522578fdff8cd5fd16bc349..3590bd4d35f410b38300e6b289db6ce80a2e088e 100644 (file)
@@ -817,7 +817,7 @@ parse_config_files(const std::list<std::string> &conf_files)
     return -EINVAL;
   while (true) {
     if (c == conf_files.end())
-      return -EACCES;
+      return -EINVAL;
     ConfFile *cf_ = new ConfFile(c->c_str());
     cf_->set_post_process_func(conf_post_process_val);
     int res = cf_->parse();
index bd3e89147b16bf7d553cb0ac2a3c87c388a7236c..198850a97265df1ddf18fd4975669106b98c48c1 100644 (file)
@@ -2608,7 +2608,7 @@ extern "C" int rados_create(rados_t *pcluster, const char * const id)
 {
   rados_init_mutex.Lock();
   if (!rados_initialized) {
-    CephInitParameters iparams(CEPH_ENTITY_TYPE_CLIENT);
+    CephInitParameters iparams(CEPH_ENTITY_TYPE_CLIENT, CEPH_CONF_FILE_DEFAULT);
     iparams.conf_file = "";
     if (id) {
       iparams.name.set(CEPH_ENTITY_TYPE_CLIENT, id);
index e88b606bb898bd64b12fcb36def45cd77497333f..9f126c4b3ccff7d44798d439f0704ceb616e4ed8 100644 (file)
@@ -49,6 +49,8 @@ int main(int argc, const char **argv)
   map<string,entity_addr_t> add;
   list<string> rm;
 
+  common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY,
+             CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
   FOR_EACH_ARG(args) {
     if (CONF_ARG_EQ("print", '\0')) {
       CONF_SAFE_SET_ARG_VAL(&print, OPT_BOOL);
index 05b164e44c866db65b0920a8f7798e48abb47d5a..77c49b085e2038601f8c10c52ffbcc02cc5eb573 100644 (file)
@@ -49,7 +49,8 @@ int main(int argc, const char **argv)
   env_to_vec(args);
   DEFINE_CONF_VARS(usage);
 
-  common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+  common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY,
+             CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
 
   const char *me = argv[0];