On 06/26/2017 09:24 PM, Eduardo Habkost wrote:
> I've posted patches in the past (qemu 2.6 timeframe, if I
recall) that
> changed netdev_add into a fully-advertised interface, but we didn't take
> it then because we weren't sure how to handle the fact that netdev_add
> can currently accept both an integer (1) and a string ("1") as
> identical, and we didn't want to risk breaking clients that passed a
> string when the promoted command would only accept integers. I guess we
> should revive that.
>
>>
>> Markus, Eric, Michael: is there any way libvirt can query the
>> definition of union Netdev from the schema with current QEMU?
>
> Really, we need to promote netdev_add to a full-fledged QMP command.
Remember, netdev_add and object_add are the only two outlier QMP
commands that have NOT been converted to use QAPI. We've already done
most of the work at making QMP netdev_add and command line -netdev be
compatible, it is just the last bit of switching on full QAPI support
that has some interface ramifications that we were not comfortable
making during a release freeze, and haven't had time to revisit since.
object_add is much further away from being introspectible.
This may be enough for -netdev, but do we want to make command-line
option introspection always depend on having the same struct being used
in a QMP command to work? What if the arguments for the command-line
option don't match precisely the input of a QMP command?
Then that's arguably a poor user interface, and only something we should
do for back-compat reasons, and not for new design. We WANT to make the
command-line introspectible, and the easiest way to do that is to make
the command-line and QMP share common guts (see the recent -blockdev
addition in qemu 2.9, along with Dan and Markus' work at tweaking
visitors so that the command line directly feeds into the QObject
representation used by QMP commands rather than the hackish QemuOpts
that is already too bloated with workarounds).
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization:
qemu.org |
libvirt.org