On 04/22/2015 09:04 AM, John Snow wrote: >> But it's still worth thinking about whether there is a more robust >> solution to be used. >> > > I done looked it up: > > I can probably squash patches 2&3 with a single fix to use the > ast.literal_eval() function, which does accept single or double quotes, > since it parses python syntax instead of JSON.
Our QMP parser accepts 'string' as an extension to JSON (which is "string" only). That's about the only JSON extension our parser has at the moment. Another thing to consider - JSON uses "bool-key":false while Python uses "bool-key":False (we don't yet support any QMP commands that would validly require a null argument, but JSON would use "key":null while Python uses "key":None). Once you get past that difference in spelling for True, False, and None (which could be done by string replace of bare 'true', 'false', and 'null'), then JSON is pretty much a strict subset of valid Python. Having qmp-shell be friendly and accept both JSON and Python spellings of the three keywords might actually be a nice hack. Maybe we should even extend our QMP parser to also accept True in place of true (output would still always be strict JSON, but there's no harm in making the input engine parse extensions, as we've already proven with the 'string' extension). > > I could probably also just have it 'try' each method until it finds > something it likes. I haven't used qmp-shell much myself, so at this point, I'll leave it up to you how much effort you want to put into it. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature