redo_full_sets();
}
- void dump_json(ostream& ss) const {
- ss << "{ \"version\": " << version << ",\n";
- ss << " \"last_osdmap_epoch\": " << last_osdmap_epoch << ",\n";
- ss << " \"last_pg_scan\": " << last_pg_scan << ",\n";
- ss << " \"full_ratio\": " << full_ratio << ",\n";
- ss << " \"nearfull_ratio\": " << nearfull_ratio << ",\n";
-
- ss << " \"pg_stat\": [\n";
- hash_map<pg_t,pg_stat_t>::const_iterator i = pg_stat.begin();
- while (i != pg_stat.end()) {
- i->second.dump_json(ss, i->first, " ");
- if (++i == pg_stat.end())
- break;
- ss << ",\n";
+ void dump(Formatter *f) const {
+ f->dump_unsigned("version", version);
+ f->dump_unsigned("last_osdmap_epoch", last_osdmap_epoch);
+ f->dump_unsigned("last_pg_scan", last_pg_scan);
+ f->dump_float("full_ratio", full_ratio);
+ f->dump_float("near_full_ratio", nearfull_ratio);
+ f->open_array_section("pg_stats");
+ for (hash_map<pg_t,pg_stat_t>::const_iterator i = pg_stat.begin();
+ i != pg_stat.end();
+ ++i) {
+ f->open_object_section("pg_stat");
+ f->dump_stream("pgid") << i->first;
+ i->second.dump(f);
+ f->close_section();
}
- ss << "\n ],\n";
+ f->close_section();
- ss << " \"pool_stat\": [\n";
- hash_map<int,pool_stat_t>::const_iterator p = pg_pool_sum.begin();
- while (p != pg_pool_sum.end()) {
- p->second.dump_json(ss, p->first, " ");
- if (++p == pg_pool_sum.end())
- break;
- ss << ",\n";
+ f->open_array_section("pool_stats");
+ for (hash_map<int,pool_stat_t>::const_iterator p = pg_pool_sum.begin();
+ p != pg_pool_sum.end();
+ ++p) {
+ f->open_object_section("pool_stat");
+ f->dump_int("poolid", p->first);
+ p->second.dump(f);
+ f->close_section();
}
- ss << "\n ],\n";
+ f->close_section();
- ss << " \"osd_stat\": [\n";
- hash_map<int,osd_stat_t>::const_iterator q = osd_stat.begin();
- while (q != osd_stat.end()) {
- q->second.dump_json(ss, q->first, " ");
- if (++q == osd_stat.end())
- break;
- ss << ",\n";
+ f->open_array_section("osd_stats");
+ for (hash_map<int,osd_stat_t>::const_iterator q = osd_stat.begin();
+ q != osd_stat.end();
+ ++q) {
+ f->open_object_section("osd_stat");
+ f->dump_int("osd", q->first);
+ q->second.dump(f);
+ f->close_section();
}
- ss << "\n ]\n";
- ss << "}\n";
+ f->close_section();
}
osd_stat_t() : kb(0), kb_used(0), kb_avail(0),
snap_trim_queue_len(0), num_snap_trimming(0) {}
- void dump_json(ostream& o, int osd, string prefix) const {
- o << prefix << "{ \"osd\": " << osd << ",\n"
- << prefix << " \"kb\": " << kb << ",\n"
- << prefix << " \"kb_used\": " << kb_used << ",\n"
- << prefix << " \"kb_avail\": " << kb_avail << ",\n"
- << prefix << " \"hb_in\": [" << hb_in << "],\n"
- << prefix << " \"hb_out\": [" << hb_out << "],\n"
- << prefix << " \"snap_trim_queue_len\": " << snap_trim_queue_len << ",\n"
- << prefix << " \"num_snap_trimming\": " << num_snap_trimming << "}";
+ void dump(Formatter *f) const {
+ f->dump_unsigned("kb", kb);
+ f->dump_unsigned("kb_used", kb_used);
+ f->dump_unsigned("kb_avail", kb_avail);
+ f->open_array_section("hb_in");
+ for (vector<int>::const_iterator p = hb_in.begin(); p != hb_in.end(); ++p)
+ f->dump_int("osd", *p);
+ f->close_section();
+ f->open_array_section("hb_out");
+ for (vector<int>::const_iterator p = hb_out.begin(); p != hb_out.end(); ++p)
+ f->dump_int("osd", *p);
+ f->close_section();
+ f->dump_int("snap_trim_queue_len", snap_trim_queue_len);
+ f->dump_int("num_snap_trimming", num_snap_trimming);
}
void encode(bufferlist &bl) const {
num_rd(0), num_rd_kb(0), num_wr(0), num_wr_kb(0)
{ }
- void dump_json(ostream& o, pg_t pgid, string prefix) const {
- o << prefix << "{ \"pgid\": \"" << pgid << "\",\n"
- << prefix << " \"version\": \"" << version << "\",\n"
- << prefix << " \"reported\": \"" << reported << "\",\n"
- << prefix << " \"state\": \"" << pg_state_string(state) << "\",\n"
- << prefix << " \"log_start\": \"" << log_start << "\",\n"
- << prefix << " \"ondisk_log_start\": \"" << ondisk_log_start << "\",\n"
- << prefix << " \"created\": " << created << ",\n"
- << prefix << " \"parent\": \"" << parent << "\",\n"
- << prefix << " \"parent_split_bits\": " << parent_split_bits << ",\n"
- << prefix << " \"last_scrub\": \"" << last_scrub << "\",\n"
- << prefix << " \"last_scrub_stamp\": \"" << last_scrub_stamp << "\",\n"
- << prefix << " \"num_bytes\": " << num_bytes << ",\n"
- << prefix << " \"num_kb\": " << num_kb << ",\n"
- << prefix << " \"num_objects\": " << num_objects << ",\n"
- << prefix << " \"num_object_clones\": " << num_object_clones << ",\n"
- << prefix << " \"num_object_copies\": " << num_object_copies << ",\n"
- << prefix << " \"num_objects_missing_on_primary\": " << num_objects_missing_on_primary << ",\n"
- << prefix << " \"num_objects_degraded\": " << num_objects_degraded << ",\n"
- << prefix << " \"num_objects_unfound\": " << num_objects_unfound << ",\n"
- << prefix << " \"log_size\": " << log_size << ",\n"
- << prefix << " \"ondisk_log_size\": " << ondisk_log_size << ",\n"
- << prefix << " \"num_read\": " << num_rd << ",\n"
- << prefix << " \"num_read_kb\": " << num_rd_kb << ",\n"
- << prefix << " \"num_write\": " << num_wr << ",\n"
- << prefix << " \"num_write_kb\": " << num_wr_kb << ",\n"
- << prefix << " \"up\": " << up << ",\n"
- << prefix << " \"acting\": " << acting << " }";
+ void dump(Formatter *f) const {
+ f->dump_stream("version") << version;
+ f->dump_stream("reported") << reported;
+ f->dump_string("state", pg_state_string(state));
+ f->dump_stream("log_start") << log_start;
+ f->dump_stream("ondisk_log_start") << ondisk_log_start;
+ f->dump_unsigned("created", created);
+ f->dump_stream("parent") << parent;
+ f->dump_unsigned("parent_split_bits", parent_split_bits);
+ f->dump_stream("last_scrub") << last_scrub;
+ f->dump_stream("last_scrub_stamp") << last_scrub_stamp;
+ f->dump_unsigned("num_bytes", num_bytes);
+ f->dump_unsigned("num_kb", num_kb);
+ f->dump_unsigned("num_objects", num_objects);
+ f->dump_unsigned("num_object_clones", num_object_clones);
+ f->dump_unsigned("num_object_copies", num_object_copies);
+ f->dump_unsigned("num_objects_missing_on_primary", num_objects_missing_on_primary);
+ f->dump_unsigned("num_objects_degraded", num_objects_degraded);
+ f->dump_unsigned("num_objects_unfound", num_objects_unfound);
+ f->dump_unsigned("log_size", log_size);
+ f->dump_unsigned("ondisk_log_size", ondisk_log_size);
+ f->dump_unsigned("num_read", num_rd);
+ f->dump_unsigned("num_read_kb", num_rd_kb);
+ f->dump_unsigned("num_write", num_wr);
+ f->dump_unsigned("num_write_kb", num_wr_kb);
+ f->open_array_section("up");
+ for (vector<int>::const_iterator p = up.begin(); p != up.end(); ++p)
+ f->dump_int("osd", *p);
+ f->close_section();
+ f->open_array_section("acting");
+ for (vector<int>::const_iterator p = acting.begin(); p != acting.end(); ++p)
+ f->dump_int("osd", *p);
+ f->close_section();
}
void encode(bufferlist &bl) const {
num_rd(0), num_rd_kb(0), num_wr(0), num_wr_kb(0)
{ }
- void dump_json(ostream& o, int pool, string prefix) const {
- o << prefix << "{ \"pool\": " << pool << ",\n"
- << prefix << " \"num_bytes\": " << num_bytes << ",\n"
- << prefix << " \"num_kb\": " << num_kb << ",\n"
- << prefix << " \"num_objects\": " << num_objects << ",\n"
- << prefix << " \"num_object_clones\": " << num_object_clones << ",\n"
- << prefix << " \"num_object_copies\": " << num_object_copies << ",\n"
- << prefix << " \"num_objects_missing_on_primary\": " << num_objects_missing_on_primary << ",\n"
- << prefix << " \"num_objects_degraded\": " << num_objects_degraded << ",\n"
- << prefix << " \"num_objects_unfound\": " << num_objects_unfound << ",\n"
- << prefix << " \"log_size\": " << log_size << ",\n"
- << prefix << " \"ondisk_log_size\": " << ondisk_log_size << ",\n"
- << prefix << " \"num_read\": " << num_rd << ",\n"
- << prefix << " \"num_read_kb\": " << num_rd_kb << ",\n"
- << prefix << " \"num_write\": " << num_wr << ",\n"
- << prefix << " \"num_write_kb\": " << num_wr_kb << "}";
+ void dump(Formatter *f) const {
+ f->dump_unsigned("num_bytes", num_bytes);
+ f->dump_unsigned("num_kb", num_kb);
+ f->dump_unsigned("num_objects", num_objects);
+ f->dump_unsigned("num_object_clones", num_object_clones);
+ f->dump_unsigned("num_object_copies", num_object_copies);
+ f->dump_unsigned("num_objects_missing_on_primary", num_objects_missing_on_primary);
+ f->dump_unsigned("num_objects_degraded", num_objects_degraded);
+ f->dump_unsigned("num_objects_unfound", num_objects_unfound);
+ f->dump_unsigned("log_size", log_size);
+ f->dump_unsigned("ondisk_log_size", ondisk_log_size);
+ f->dump_unsigned("num_read", num_rd);
+ f->dump_unsigned("num_read_kb", num_rd_kb);
+ f->dump_unsigned("num_write", num_wr);
+ f->dump_unsigned("num_write_kb", num_wr_kb);
}
void encode(bufferlist &bl) const {