From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52711) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1biOYO-0000zw-6H for qemu-devel@nongnu.org; Fri, 09 Sep 2016 12:21:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1biOYI-000552-5B for qemu-devel@nongnu.org; Fri, 09 Sep 2016 12:21:23 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41458) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1biOYH-00054d-TJ for qemu-devel@nongnu.org; Fri, 09 Sep 2016 12:21:18 -0400 From: Markus Armbruster References: <1473157086-12062-1-git-send-email-dgilbert@redhat.com> <20160906130843.GI10095@redhat.com> <20160906133349.GH2041@work-vm> Date: Fri, 09 Sep 2016 18:21:15 +0200 In-Reply-To: <20160906133349.GH2041@work-vm> (David Alan Gilbert's message of "Tue, 6 Sep 2016 14:33:49 +0100") Message-ID: <87wpilm4ck.fsf@dusky.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2] qom: Implement qom-get HMP command List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert" Cc: "Daniel P. Berrange" , kwolf@redhat.com, qemu-devel@nongnu.org, arei.gonglei@huawei.com, pbonzini@redhat.com, lcapitulino@redhat.com, afaerber@suse.de "Dr. David Alan Gilbert" writes: > * Daniel P. Berrange (berrange@redhat.com) wrote: >> On Tue, Sep 06, 2016 at 11:18:06AM +0100, Dr. David Alan Gilbert (git) w= rote: >> > From: "Dr. David Alan Gilbert" >> >=20 >> > This started off as Andreas F=C3=A4rber's implementation from >> > March 2015, but after feedback from Paolo morphed into >> > using the json output which handles structs reasonably. >> >=20 >> > Use with qom-list to find the members of an object. >> >=20 >> > (qemu) qom-get /backend/console[0]/device/vga.rom[0] size >> > 65536 >> > (qemu) qom-get /machine smm >> > "auto" >> > (qemu) qom-get /machine rtc-time >> > { >> > "tm_year": 116, >> > "tm_sec": 0, >> > "tm_hour": 9, >> > "tm_min": 46, >> > "tm_mon": 8, >> > "tm_mday": 6 >> > } >>=20 >> I'm not really a fan of us exposing JSON in the HMP, as it rather >> seems to defeat the purpose of using the HMP. > > Well as long as it's clear and easily readable by humans I'm OK about it; > and I'm less fussed about it on the output side; JSON is much more painful > to use as human typed input. > >> > -- >> > v2 >> > switched from using string-output-visitor to qobject_to_json_pretty, >> > drop string-output-visitor patch. >>=20 >> IIUC, you switched because string-output-visitor could not handle >> complex types. >>=20 >> I have previously written a text-output-visitor that could do >> this correctly, since we have this exact same requirement for >> 'qemu-info info' to print out the extra-block specific data >> in human friendly format for the LUKS driver. >>=20 >> https://lists.gnu.org/archive/html/qemu-devel/2016-06/msg01727.html > > How close to going in is it? It looks from the comments that Eric > is thinking about fixing string-output-visitor. > I'm not clear why you'd want a text-output-visitor and a string-output-vi= stior. Me neither. In theory, we need two output visitors producing text, one for machine-readable output (JSON), and the one for human-readable output. For the latter, we use the string output visitor. For the former, we first use the (badly named) QMP output visitor to produce a QObject, which is then converted to JSON text by qobject_to_json() or qobject_to_json_pretty(). Each of the two output visitors comes with a matching input visitor that reads the same format. To read JSON text, we first parse it into a QObject with json_message_parser_init() & friends, which we then pass to the QMP input visitor. If I read Dan's cover letter correctly, the proposed text output visitor competes with the string output visitor. Why not enhance or replace it? >> With your example that ought to lead to output looking like >>=20 >> (qemu) qom-get /machine rtc-time >> tm_year: 116 >> tm_sec: 0 >> tm_hour: 9 >> tm_min: 46 >> tm_mon: 8 >> tm_mday: 6 >>=20 >> which i think is more suitable for the HMP. > > Yes, it's a little prettier; I'm not fussed either way - but I just want = to > make sure that we do end up with a qom-get; it's something I'd have found > useful in the past and I know others would have, and the code for it was > originally written by Andreas ~2.5 years ago - so if text-output-visitor = is > imminent then sure, but if it's not then I suggest we stick with this. We can take qom-get as is and improve its output later.