From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=34237 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCv39-0005lF-UW for qemu-devel@nongnu.org; Fri, 14 May 2010 09:35:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCv2C-0003zL-M1 for qemu-devel@nongnu.org; Fri, 14 May 2010 09:34:38 -0400 Received: from mx1.redhat.com ([209.132.183.28]:1025) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCv2C-0003z6-Er for qemu-devel@nongnu.org; Fri, 14 May 2010 09:34:36 -0400 Date: Fri, 14 May 2010 14:34:33 +0100 From: "Daniel P. Berrange" Subject: Re: [Qemu-devel] [PATCH 1/1] Add -version-simple argument, printing only version number. Message-ID: <20100514133433.GI9282@redhat.com> References: <1273739572-30840-1-git-send-email-Jes.Sorensen@redhat.com> <1273739572-30840-2-git-send-email-Jes.Sorensen@redhat.com> <20100513133322.GI12207@redhat.com> <20100514100654.GC9282@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Reply-To: "Daniel P. Berrange" List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: Jes.Sorensen@redhat.com, aliguori@us.ibm.com, clalance@redhat.com, qemu-devel@nongnu.org, crobinso@redhat.com On Fri, May 14, 2010 at 01:24:44PM +0200, Markus Armbruster wrote: > "Daniel P. Berrange" writes: > > > On Fri, May 14, 2010 at 11:42:57AM +0200, Markus Armbruster wrote: > >> "Daniel P. Berrange" writes: > [...] > >> > It would also be nice to avoid having to parse the -help output to determine > >> > ARGV supported too. I wonder if it would be a good idea to just produce a > >> > well structured equivalent to -help that provides the same data, but in > >> > JSON format for sane parsing. That would let peple easily determine the > >> > supported ARGV as well as version number(s) > >> > >> I'm all for machine-readable self-documentation. And the place for that > >> is QMP. Humble beginnings are already there: > >> > >> { "execute": "query-version", "arguments": { } } > >> --> {"return": {"qemu": "0.12.50", "package": ""}} > >> > >> { "execute": "query-commands", "arguments": { } } > >> --> {"return": [{"name": "quit"}, {"name": "eject"}, [...] > >> > >> Any practical problems with use of QMP instead of parsing command line > >> option output? > > > > It is unneccessarily complex for such a simple task, requiring you to > > configure & connect to the monitor & do the capabilities negotiaton > > and then issue the command. > > > > To just query the version requires this ridiculous interaction: > > > > $ qemu -chardev stdio,id=monitor -monitor chardev=monitor,mode=control > > {"execute":"qmp_capabilities"} > > {"QMP": {"version": {"qemu": "0.12.1", "package": " (qemu-kvm-0.12.1.2)"}, "capabilities": []}} > > {"execute":"query-version"} > > {"return": {"qemu": "0.12.50", "package": ""}} > > Actually, > > $ qemu -nodefaults -nographic -S -chardev stdio,id=qmp -mon mode=control,chardev=qmp {"QMP": {"version": {"qemu": "0.12.50", "package": ""}, "capabilities": []}} > > suffices, with the minor wart that you have to SIGINT out. Only in this particular example. The same pain I illustrate still exists for other static query actions such as query-device, or a hypothetical query-argv for getting supported command line args. I really think we need to map these into the more concise & easily accessible style: > > eg, make this work: > > > > $ qemu -query-version > > {"qemu": "0.12.50", "package": ""} > > I wouldn't mind. Regards, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|