]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/options: mark cluster log options with FLAG_RUNTIME, use get_val
authorSage Weil <sage@redhat.com>
Fri, 12 Apr 2019 20:58:35 +0000 (15:58 -0500)
committerSage Weil <sage@redhat.com>
Thu, 25 Apr 2019 21:26:06 +0000 (16:26 -0500)
We already have observers set up for these; switch to using the
runtime-safe accessor and flag them.

Signed-off-by: Sage Weil <sage@redhat.com>
qa/tasks/mgr/dashboard/test_cluster_configuration.py
src/common/LogClient.cc
src/common/options.cc
src/mon/LogMonitor.cc

index fd9298f56bcb134930e177d76858971b2b4df179..2a718447c1c6160da0d348480d5bee7125daa44a 100644 (file)
@@ -66,7 +66,7 @@ class ClusterConfigurationTest(DashboardTestCase):
         self._reset_original_values(config_name, orig_value)
 
     def test_create_cant_update_at_runtime(self):
-        config_name = 'clog_to_syslog'  # not updatable
+        config_name = 'public_bind_addr'  # not updatable
         config_value = [{'section': 'global', 'value': 'true'}]
         orig_value = self._get_config_by_name(config_name)
 
@@ -183,8 +183,8 @@ class ClusterConfigurationTest(DashboardTestCase):
 
     def test_bulk_set_cant_update_at_runtime(self):
         config_options = {
-            'clog_to_syslog': {'section': 'global', 'value': 'true'},  # not updatable
-            'clog_to_graylog': {'section': 'global', 'value': 'true'}  # not updatable
+            'public_bind_addr': {'section': 'global', 'value': '1.2.3.4:567'},  # not updatable
+            'public_network': {'section': 'global', 'value': '10.0.0.0/8'}  # not updatable
         }
         orig_values = dict()
 
@@ -207,7 +207,7 @@ class ClusterConfigurationTest(DashboardTestCase):
 
     def test_bulk_set_cant_update_at_runtime_partial(self):
         config_options = {
-            'clog_to_syslog': {'section': 'global', 'value': 'true'},  # not updatable
+            'public_bind_addr': {'section': 'global', 'value': 'true'},  # not updatable
             'log_to_stderr': {'section': 'global', 'value': 'true'}  # updatable
         }
         orig_values = dict()
@@ -221,7 +221,7 @@ class ClusterConfigurationTest(DashboardTestCase):
         self.assertError(code='config_option_not_updatable_at_runtime',
                          component='cluster_configuration',
                          detail='Config option {} is/are not updatable at runtime'.format(
-                             'clog_to_syslog'))
+                             'public_bind_addr'))
 
         # check if config option values are still the original ones
         for config_name, value in orig_values.items():
index 951588ff44bf8b76827332d3df3d6a00ab84a95b..982bbe35b49e98c65dfb5d0660566cc58400fcb0 100644 (file)
@@ -35,50 +35,57 @@ int parse_log_client_options(CephContext *cct,
 {
   ostringstream oss;
 
-  int r = get_conf_str_map_helper(cct->_conf->clog_to_monitors, oss,
-                                  &log_to_monitors, CLOG_CONFIG_DEFAULT_KEY);
+  int r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_monitors"), oss,
+    &log_to_monitors, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_monitors'" << dendl;
     return r;
   }
 
-  r = get_conf_str_map_helper(cct->_conf->clog_to_syslog, oss,
+  r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_syslog"), oss,
                               &log_to_syslog, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_syslog'" << dendl;
     return r;
   }
 
-  r = get_conf_str_map_helper(cct->_conf->clog_to_syslog_facility, oss,
-                              &log_channels, CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_syslog_facility"), oss,
+    &log_channels, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_syslog_facility'" << dendl;
     return r;
   }
 
-  r = get_conf_str_map_helper(cct->_conf->clog_to_syslog_level, oss,
-                              &log_prios, CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_syslog_level"), oss,
+    &log_prios, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_syslog_level'" << dendl;
     return r;
   }
 
-  r = get_conf_str_map_helper(cct->_conf->clog_to_graylog, oss,
-                              &log_to_graylog, CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_graylog"), oss,
+    &log_to_graylog, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_graylog'" << dendl;
     return r;
   }
 
-  r = get_conf_str_map_helper(cct->_conf->clog_to_graylog_host, oss,
-                              &log_to_graylog_host, CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_graylog_host"), oss,
+    &log_to_graylog_host, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_graylog_host'" << dendl;
     return r;
   }
 
-  r = get_conf_str_map_helper(cct->_conf->clog_to_graylog_port, oss,
-                              &log_to_graylog_port, CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    cct->_conf.get_val<string>("clog_to_graylog_port"), oss,
+    &log_to_graylog_port, CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     lderr(cct) << __func__ << " error parsing 'clog_to_graylog_port'" << dendl;
     return r;
index 4be614f17117da3abee7ac5c48b68ef5e13a6109..dd025aac2c4e7500d651ac49983ae45985c5ecb7 100644 (file)
@@ -634,67 +634,80 @@ std::vector<Option> get_global_options() {
     // unmodified
     Option("clog_to_monitors", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("default=true")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Make daemons send cluster log messages to monitors"),
 
     Option("clog_to_syslog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("false")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Make daemons send cluster log messages to syslog"),
 
     Option("clog_to_syslog_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("info")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Syslog level for cluster log messages")
     .add_see_also("clog_to_syslog"),
 
     Option("clog_to_syslog_facility", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("default=daemon audit=local0")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Syslog facility for cluster log messages")
     .add_see_also("clog_to_syslog"),
 
     Option("clog_to_graylog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("false")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Make daemons send cluster log to graylog"),
 
     Option("clog_to_graylog_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("127.0.0.1")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Graylog host to cluster log messages")
     .add_see_also("clog_to_graylog"),
 
     Option("clog_to_graylog_port", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("12201")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Graylog port number for cluster log messages")
     .add_see_also("clog_to_graylog"),
 
     Option("mon_cluster_log_to_stderr", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(false)
     .add_service("mon")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Make monitor send cluster log messages to stderr (prefixed by channel)")
     .add_see_also("log_stderr_prefix"),
 
     Option("mon_cluster_log_to_syslog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("default=false")
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("Make monitor send cluster log messages to syslog"),
 
     Option("mon_cluster_log_to_syslog_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("info")
     .add_service("mon")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Syslog level for cluster log messages")
     .add_see_also("mon_cluster_log_to_syslog"),
 
     Option("mon_cluster_log_to_syslog_facility", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("daemon")
     .add_service("mon")
+    .set_flag(Option::FLAG_RUNTIME)
     .set_description("Syslog facility for cluster log messages")
     .add_see_also("mon_cluster_log_to_syslog"),
 
     Option("mon_cluster_log_to_file", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(true)
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("Make monitor send cluster log messages to file")
     .add_see_also("mon_cluster_log_file"),
 
     Option("mon_cluster_log_file", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("default=/var/log/ceph/$cluster.$channel.log cluster=/var/log/ceph/$cluster.log")
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("File(s) to write cluster log to")
     .set_long_description("This can either be a simple file name to receive all messages, or a list of key/value pairs where the key is the log channel and the value is the filename, which may include $cluster and $channel metavariables")
@@ -702,28 +715,33 @@ std::vector<Option> get_global_options() {
 
     Option("mon_cluster_log_file_level", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("debug")
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("Lowest level to include is cluster log file")
     .add_see_also("mon_cluster_log_file"),
 
     Option("mon_cluster_log_to_graylog", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("false")
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("Make monitor send cluster log to graylog"),
 
     Option("mon_cluster_log_to_graylog_host", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("127.0.0.1")
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("Graylog host for cluster log messages")
     .add_see_also("mon_cluster_log_to_graylog"),
 
     Option("mon_cluster_log_to_graylog_port", Option::TYPE_STR, Option::LEVEL_ADVANCED)
     .set_default("12201")
+    .set_flag(Option::FLAG_RUNTIME)
     .add_service("mon")
     .set_description("Graylog port for cluster log messages")
     .add_see_also("mon_cluster_log_to_graylog"),
 
     Option("enable_experimental_unrecoverable_data_corrupting_features", Option::TYPE_STR, Option::LEVEL_ADVANCED)
+    .set_flag(Option::FLAG_RUNTIME)
     .set_default("")
     .set_description("Enable named (or all with '*') experimental features that may be untested, dangerous, and/or cause permanent data loss"),
 
index 2d2ddad54dd96e34ea58bb85a8db64d3273e32dc..087f58008260d1b75c855cf740e1d65104071636 100644 (file)
@@ -717,70 +717,78 @@ void LogMonitor::update_log_channels()
 
   channels.clear();
 
-  int r = get_conf_str_map_helper(g_conf()->mon_cluster_log_to_syslog,
-                                  oss, &channels.log_to_syslog,
-                                  CLOG_CONFIG_DEFAULT_KEY);
+  int r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_to_syslog"),
+    oss, &channels.log_to_syslog,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_syslog'" << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_to_syslog_level,
-                              oss, &channels.syslog_level,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_to_syslog_level"),
+    oss, &channels.syslog_level,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_syslog_level'"
          << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_to_syslog_facility,
-                              oss, &channels.syslog_facility,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_to_syslog_facility"),
+    oss, &channels.syslog_facility,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_syslog_facility'"
          << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_file, oss,
-                              &channels.log_file,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_file"), oss,
+    &channels.log_file,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_file'" << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_file_level, oss,
-                              &channels.log_file_level,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_file_level"), oss,
+    &channels.log_file_level,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_file_level'"
          << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_to_graylog, oss,
-                              &channels.log_to_graylog,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_to_graylog"), oss,
+    &channels.log_to_graylog,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_graylog'"
          << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_to_graylog_host, oss,
-                              &channels.log_to_graylog_host,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_to_graylog_host"), oss,
+    &channels.log_to_graylog_host,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_graylog_host'"
          << dendl;
     return;
   }
 
-  r = get_conf_str_map_helper(g_conf()->mon_cluster_log_to_graylog_port, oss,
-                              &channels.log_to_graylog_port,
-                              CLOG_CONFIG_DEFAULT_KEY);
+  r = get_conf_str_map_helper(
+    g_conf().get_val<string>("mon_cluster_log_to_graylog_port"), oss,
+    &channels.log_to_graylog_port,
+    CLOG_CONFIG_DEFAULT_KEY);
   if (r < 0) {
     derr << __func__ << " error parsing 'mon_cluster_log_to_graylog_port'"
          << dendl;