]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
compatset: dump json
authorSage Weil <sage@newdream.net>
Thu, 18 Aug 2011 17:07:12 +0000 (10:07 -0700)
committerSage Weil <sage@newdream.net>
Thu, 18 Aug 2011 17:07:12 +0000 (10:07 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/include/CompatSet.h
src/mds/MDSMap.cc

index a7cb8f6f2dbf33fc24489585ed4a4a1ef00a5b83..014d231d8eddd3dfd049532cf60cb1db411f6156 100644 (file)
@@ -17,6 +17,8 @@
 #include "include/buffer.h"
 #include <vector>
 
+#include "common/Formatter.h"
+
 #define END_FEATURE CompatSet::Feature(0, "")
 
 struct CompatSet {
@@ -58,6 +60,16 @@ struct CompatSet {
       ::decode(mask, bl);
       ::decode(names, bl);
     }
+
+    void dump(Formatter *f) const {
+      for (map<uint64_t,string>::const_iterator p = names.begin();
+          p != names.end();
+          ++p) {
+       char s[10];
+       snprintf(s, sizeof(s), "%lld", (unsigned long long)p->first);
+       f->dump_string(s, p->second);
+      }
+    }
   };
 
   FeatureSet compat, ro_compat, incompat;
@@ -154,6 +166,18 @@ struct CompatSet {
     ro_compat.decode(bl);
     incompat.decode(bl);
   }
+
+  void dump(Formatter *f) const {
+    f->open_object_section("compat");
+    compat.dump(f);
+    f->close_section();
+    f->open_object_section("ro_compat");
+    ro_compat.dump(f);
+    f->close_section();
+    f->open_object_section("incompat");
+    incompat.dump(f);
+    f->close_section();
+  }
 };
 WRITE_CLASS_ENCODER(CompatSet)
 
index e3a948a41d5cfd6caea70da6cca564ba483c12f9..81e18a0da0236202dbd07fe3c3b24a4f94dc8448 100644 (file)
@@ -90,7 +90,9 @@ void MDSMap::dump(Formatter *f) const
   f->dump_int("session_autoclose", session_autoclose);
   f->dump_int("last_failure", last_failure);
   f->dump_int("last_failure_osd_epoch", last_failure_osd_epoch);
-  f->dump_stream("compat") << compat;
+  f->open_object_section("compat");
+  compat.dump(f);
+  f->close_section();
   f->dump_int("max_mds", max_mds);
   f->open_array_section("in");
   for (set<int32_t>::const_iterator p = in.begin(); p != in.end(); ++p)