On Wed, Feb 23, 2022 at 10:41:11AM -0500, John Snow wrote: > On Wed, Feb 23, 2022 at 10:27 AM Daniel P. Berrangé <berra...@redhat.com> > wrote: > > > > On Wed, Feb 23, 2022 at 10:22:11AM -0500, John Snow wrote: > > > On Mon, Feb 21, 2022 at 10:55 AM Damien Hedde > > > <damien.he...@greensocs.com> wrote: > > > > > > > > This option makes qmp_shell exit (with error code 1) > > > > as soon as one of the following error occurs: > > > > + command parsing error > > > > + disconnection > > > > + command failure (response is an error) > > > > > > > > _execute_cmd() method now returns None or the response > > > > so that read_exec_command() can do the last check. > > > > > > > > This is meant to be used in combination with an input file > > > > redirection. It allows to store a list of commands > > > > into a file and try to run them by qmp_shell and easily > > > > see if it failed or not. > > > > > > > > Signed-off-by: Damien Hedde <damien.he...@greensocs.com> > > > > > > Based on this patch, it looks like you really want something > > > scriptable, so I think the qemu-send idea that Dan has suggested might > > > be the best way to go. Are you still hoping to use the interactive > > > "short" QMP command format? That might be a bad idea, given how flaky > > > the parsing is -- and how we don't actually have a published standard > > > for that format. We've *never* liked the bad parsing here, so I have a > > > reluctance to use it in more places. > > > > > > I'm having the naive idea that a script file could be as simple as a > > > list of QMP commands to send: > > > > > > [ > > > {"execute": "block-dirty-bitmap-add", "arguments": { ... }}, > > > ... > > > ] > > > > I'd really recommend against creating a new format for the script > > file, especially one needing opening & closing [] like this, as > > that isn't so amenable to dynamic usage/creation. ie you can't > > just append an extcra command to an existing file. > > > > IMHO, the "file" format should be identical to the result of > > capturing the socket data off the wire. ie just a concatenation > > of QMP commands, with no extra wrapping / change in format. > > > > Eugh. That's just so hard to parse, because there's no off-the-shelf > tooling for "load a sequence of JSON documents". Nothing in Python > does it. :\
It isn't that hard if you require each JSON doc to be followed by a newline. Feed one line at a time to the JSON parser, until you get a complete JSON doc, process that, then re-init the parser and carry on feeding it lines until it emits the next JSON doc, and so on. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|