]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-conf: make --show-config-value reflect daemon defaults
authorSage Weil <sage@inktank.com>
Wed, 19 Jun 2013 23:27:34 +0000 (16:27 -0700)
committerSage Weil <sage@inktank.com>
Thu, 20 Jun 2013 02:44:45 +0000 (19:44 -0700)
We want DAEMON defaults, but we don't want global_init to do anything else
daemonish like print a banner or mkdir /var/run/ceph.  This lets us use

 ceph-conf -n osd.0 --show-config-value log_file

to get the default, while

 ceph-conf -n osd.0 log_file

only reflects what is in the config file.

Signed-off-by: Sage Weil <sage@inktank.com>
src/ceph_conf.cc
src/common/common_init.h
src/global/global_init.cc
src/test/cli/ceph-conf/show-config-value.t [new file with mode: 0644]

index 608c0852122512698c4fbd45176c4899e84c1e15..b2286f4e0944fc6c320995664b87a2e6359f3b07 100644 (file)
@@ -156,7 +156,9 @@ int main(int argc, const char **argv)
 
   argv_to_vec(argc, argv, args);
   env_to_vec(args);
-  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
+
+  global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_DAEMON,
+             CINIT_FLAG_NO_DAEMON_ACTIONS);
 
   // do not common_init_finish(); do not start threads; do not do any of thing
   // wonky things the daemon whose conf we are examining would do (like initialize
index 3dfd12915f4cbea858594be3fb5b554213370ed3..f48b349bf0011b4218614fce3b239090b6bbdcb7 100644 (file)
@@ -34,6 +34,9 @@ enum common_init_flags_t {
 
   // Don't close stderr (in daemonize)
   CINIT_FLAG_NO_CLOSE_STDERR = 0x4,
+
+  // don't do anything daemonish, like create /var/run/ceph, or print a banner
+  CINIT_FLAG_NO_DAEMON_ACTIONS = 0x8,
 };
 
 /*
index 8363d0e191a36fd26aec36eb328e6b044c2056de..e96c317f820718afb41bec871df5e55d6e5408ad 100644 (file)
@@ -120,7 +120,8 @@ void global_init(std::vector < const char * > *alt_def_args, std::vector < const
     g_ceph_context->_log->set_flush_on_exit();
 
   if (g_conf->run_dir.length() &&
-      code_env == CODE_ENVIRONMENT_DAEMON) {
+      code_env == CODE_ENVIRONMENT_DAEMON &&
+      !(flags & CINIT_FLAG_NO_DAEMON_ACTIONS)) {
     int r = ::mkdir(g_conf->run_dir.c_str(), 0755);
     if (r < 0 && errno != EEXIST) {
       r = -errno;
@@ -138,7 +139,7 @@ void global_init(std::vector < const char * > *alt_def_args, std::vector < const
   // and opening the log file immediately.
   conf->call_all_observers();
 
-  if (code_env == CODE_ENVIRONMENT_DAEMON)
+  if (code_env == CODE_ENVIRONMENT_DAEMON && !(flags & CINIT_FLAG_NO_DAEMON_ACTIONS))
     output_ceph_version();
 }
 
diff --git a/src/test/cli/ceph-conf/show-config-value.t b/src/test/cli/ceph-conf/show-config-value.t
new file mode 100644 (file)
index 0000000..03d7ed8
--- /dev/null
@@ -0,0 +1,5 @@
+
+# should reflect daemon defaults
+
+  $ ceph-conf -n osd.0 --show-config-value log_file -c /dev/null
+  /var/log/ceph/ceph-osd.0.log