f->close_section();
}
+void OSDMonitor::get_versions(std::map<string, list<string> > &versions)
+{
+ for (int osd = 0; osd < osdmap.get_max_osd(); ++osd) {
+ if (osdmap.is_up(osd)) {
+ map<string,string> meta;
+ load_metadata(osd, meta, nullptr);
+ auto p = meta.find("ceph_version_short");
+ if (p == meta.end()) continue;
+ versions[p->second].push_back(string("osd.") + stringify(osd));
+ }
+ }
+}
+
int OSDMonitor::get_osd_objectstore_type(int osd, string *type)
{
map<string, string> metadata;
void reencode_full_map(ceph::buffer::list& bl, uint64_t features);
public:
void count_metadata(const std::string& field, std::map<std::string,int> *out);
+ void get_versions(std::map<string, list<string> > &versions);
protected:
int get_osd_objectstore_type(int osd, std::string *type);
bool is_pool_currently_all_bluestore(int64_t pool_id, const pg_pool_t &pool,