]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/config: get_defaults_bl()
authorSage Weil <sage@redhat.com>
Fri, 5 Jan 2018 23:40:42 +0000 (17:40 -0600)
committerSage Weil <sage@redhat.com>
Tue, 6 Mar 2018 20:44:48 +0000 (14:44 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/config.cc
src/common/config.h

index 7a8150d2ef72340d913b594401aabf1cb06bb40b..f31b3631ba924df93dfac8371e8cc46b00912009 100644 (file)
@@ -885,6 +885,33 @@ int md_config_t::rm_val(const std::string& key)
   return _rm_val(key, CONF_OVERRIDE);
 }
 
+void md_config_t::get_defaults_bl(bufferlist *bl)
+{
+  Mutex::Locker l(lock);
+  if (defaults_bl.length() == 0) {
+    uint32_t n = 0;
+    bufferlist bl;
+    for (const auto &i : schema) {
+      ++n;
+      ::encode(i.second.name, bl);
+      auto j = values.find(i.second.name);
+      if (j != values.end()) {
+       auto k = j->second.find(CONF_DEFAULT);
+       if (k != j->second.end()) {
+         ::encode(stringify(k->second), bl);
+         continue;
+       }
+      }
+      string val;
+      conf_stringify(_get_val_default(i.second), &val);
+      ::encode(val, bl);
+    }
+    ::encode(n, defaults_bl);
+    defaults_bl.claim_append(bl);
+  }
+  *bl = defaults_bl;
+}
+
 void md_config_t::get_config_bl(bufferlist *bl)
 {
   Mutex::Locker l(lock);
index 6a515ad5012f813d88d74b82b2b76f6865f2566d..b9eba5cde40fab7fde8e5c5f86abf1fabc0b2163 100644 (file)
@@ -106,6 +106,9 @@ public:
   /// encoded, cached copy of of values
   bufferlist values_bl;
 
+  /// encoded copy of defaults (map<string,string>)
+  bufferlist defaults_bl;
+
   typedef enum {
     OPT_INT, OPT_LONGLONG, OPT_STR, OPT_DOUBLE, OPT_FLOAT, OPT_BOOL,
     OPT_ADDR, OPT_U32, OPT_U64, OPT_UUID
@@ -182,6 +185,9 @@ public:
   /// get encoded map<string,map<int32_t,string>> of entire config
   void get_config_bl(bufferlist *bl);
 
+  /// get encoded map<string,string> of compiled-in defaults
+  void get_defaults_bl(bufferlist *bl);
+
   // Get a configuration value.
   // No metavariables will be returned (they will have already been expanded)
   int get_val(const std::string &key, char **buf, int len) const;