[openstack-dev] [Nova] Enabling libvirt feature: pass-through of QEMU command line args

Daniel P. Berrange berrange at redhat.com
Mon Nov 11 10:25:03 UTC 2013

On Mon, Nov 11, 2013 at 01:43:59PM +0530, Rahul M R wrote:
> Hi all,
> I'm new to this mailing list :)
> I am currently working on the Snabbswitch project < https://github.com/SnabbCo/snabbswitch/wiki >. We are developing an OpenStack Neutron plugin (targeting Icehouse release). Snabbswitch makes use of an experimental patch to QEMU (not merged to mainline yet) that adds support for a user-space PCI device. This device is not supported by the libvirt XML (yet). So, in order to use this feature, some command line arguments will have to be passed to QEMU when booting an instance.
> Therefore, I'd like to make a proposal for enabling a libvirt feature: pass-through of QEMU command line args < http://libvirt.org/drvqemu.html#qemucommand >. This will allow us to boot instances with the necessary QEMU command line arguments.
> Now regarding the implementation of this feature, currently the plan is as follows:
> 1. Add metadata when creating an instance using the nova boot API. For e.g.: libvirt_qemu_cli_args=["-arg1", "-arg2"]
> 2. The libvirt driver will process the instance's metadata and generate the necessary XML (for the instance's libvirt.xml). For e.g.:
> ````
> <domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
> ...
> <qemu:commandline>
>    <qemu:arg>-arg1</qemu:arg>
>    <qemu:arg>-arg2</qemu:arg>
> </qemu:commandline>
> ...
> </domain>
> ````
> I'd love to get some feedback regarding the above proposal.

The QEMU command line passthrough feature is only intended for adhoc testing.
Anything that is intended to be supported for production deployments must
have explicit support in the XML config, so I'd reject any patch that attempts
to add use of QEMU command line passthrough in Nova. That the feature is also
not even accepted in upstream QEMU is another mark against merging it.

So if you want this feature in OpenStack, you'll need to focus on getting
the code merged into upstream QEMU and get any neccessary support into
libvirt if none of the existing network configs are suitable. Once that is
done we can look at OpenStack patches to enable it.

|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

More information about the OpenStack-dev mailing list