[libvirt] the role of libvirtd

Hugh O. Brock hbrock at redhat.com
Wed Jul 8 17:39:44 UTC 2009

On Wed, Jul 08, 2009 at 05:46:43PM +0100, Daniel P. Berrange wrote:
> On Wed, Jul 08, 2009 at 12:10:18PM -0400, Hugh O. Brock wrote:
> > Hello all.
> > 
> > I spent quite a while yesterday in a meeting with a client interested in
> > using libvirt for a large project.
> > 
> > They are quite happy in general with the direction things are
> > going. However they have objections to a couple of libvirt design points
> > that have come up in multiple cases in the past, including in developing
> > the other project I'm involved in, oVirt. Specifically, they would
> > really prefer that libvirtd be a one-stop shop for everything they need
> > to do on a virtualization host, including things we have traditionally
> > held out-of-scope for libvirt. A partial list of those things would
> > include:
> > 
> > * In-depth multipath config management
> > * Hardware lifecycle management (power-off, reboot, etc.)
> > * HA configuration
> > 
> > ... and pretty much anything else you might want to do on a piece of
> > hardware that is hosting virtual machines.
> > 
> > My initial reaction of course was to tell them "Well you should just
> > use a separate agent for that sort of thing." But of course this means
> > making a separate connection to the node depending on what operation
> > you want to perform, which is cumbersome.
> > 
> > So I guess what I'm asking is, why *not* expand the scope of libvirtd
> > to be a one-stop shop for managing a node? Is there a really good
> > reason it shouldn't have the remaining capabilities libvirt users
> > want? Is that reason good enough to balance the headache our users
> > have to deal with in coming up with a separate package to handle the
> > tasks libvirtd does not?
> This is essentially suggesting that libvirtd become a general purpose
> RPC layer for all remote management tasks. At which point you have
> just re-invented QPid/AMQP or CIM or any number of other general
> purpose message buses.
> libvirtd has a core well defined goal:
>  - Provide a remote proxy for libvirt API calls
> if you want todo anything more than that you should be considering an
> alternative remote management system. We already have 2 good ones to
> choose from supported with libvirt
>  - QPid/AMQP, with libvirt-qpid  agent + your own custom agents
>  - CIM, with libvirt-CIM + your own custom CIM providers
> Both of these offer other benefits besides just pluggable support
> for other functionality. In particular
>  - Non-blocking asynchronous RPC calls
>  - Assured delivery for RPC calls
>  - Scalable network architecture / topology
>  - Inter-operability with plugins written by other projects/vendors
> Furthermore, adding more plugins to libvirtd means we will never
> be able to reduce its privileges to an acceptable level, because we'll
> never know what capabilities the plugins may want.

I understand your point -- certainly we want to use existing RPC
mechanisms for libvirt and node management, not maintain our own.

However, given a libvirt-qpid daemon on the node that handles RPC over
QMF (for example), is there not some value in having libvirt expose a
consistent API for the operations people want to do on a host regardless
of whether they have directly to do with managing a virtual machine or

I will note that when I presented the large client with the option of
QMF talking to multiple agents on the node but exposing (effectively) a
single API and a single connection, they seemed much happier. So perhaps
the right way to attack this is with the ovirt-qpid daemon we are
currently working on.

Daniel V., any further thoughts on this?


More information about the libvir-list mailing list