On Tue, Nov 28, 2017 at 11:06 AM, Wido den Hollander <wido@xxxxxxxx> wrote: > Hi, > > Looking at 'ceph osd metadata' I see that we return a lot of values as Strings in the JSON instead of a Integer, for example: > > $ ceph osd metadata 2033 > > { > "id": 2033, > "arch": "x86_64", > "journal_rotational": "0", > "mem_swap_kb": "1046524", > "mem_total_kb": "63641808", > "rotational": "1" > } > > Looking at some code I found this: > > (*m)["mem_total_kb"] = std::to_string(size); > (*pm)["rotational"] = store_is_rotational ? "1" : "0"; > (*pm)["journal_rotational"] = journal_is_rotational ? "1" : "0"; > > Why can't we return a int/long there? Is it the internal JSON parser which can't handle it? There are various places where we send metadata as map<string, string> (in this instance, MOSDBoot), which is indeed kind of annoying -- converting them all to a JSON-ish structure would be a good thing. I'm imagining a helper class that wraps boost::property_tree and slots in everywhere we currently use map<string, string> for metadata. John > Otherwise I'll write a PR for this. Saves me casting the things to Integers again afterwards in Python. > > Wido > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html