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

Russell Bryant rbryant at redhat.com
Mon Nov 11 09:26:07 UTC 2013

On 11/11/2013 03:13 AM, 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.
> Also, are there any specific requirements for making a Nova Blueprint (i.e., equivalent of < https://wiki.openstack.org/wiki/Neutron/BlueprintTemplate > )?
> We would like to have this feature included in Icehouse release.
> Thanks in advance.

This sounds like it may be reasonable for testing, but for something to
get merged, I'd like to see it done "right".  I don't think exposing
qemu command line arguments directly to the API user is something we
would ever want to do.

That would mean getting patches merged upstream so the feature is
exposed to us properly via libvirt xml.  Then we can look at the right
way to expose it via nova.

Russell Bryant

More information about the OpenStack-dev mailing list