On Wed, Jul 08, 2009 at 01:39:44PM -0400, Hugh O. Brock wrote:
On Wed, Jul 08, 2009 at 05:46:43PM +0100, Daniel P. Berrange wrote:
>
> 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
not?
I don't really see any value in that - you're just putting in another
abstraction layer where none need exist. Just have whatever QMF agent
you write talk directly to the thing you need to manage. If someone
wants to write a QMF agent to managing cluster software, they don't
need to introduce an artificial dependancy on libvirtd, when their
agent could talk directly to the cluster software being managed, and
thus be useful without libvirt deployed.
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.
A client application cannot tell whether a remote service is implemented
by a single agent, or multiple agents, nor do they see the concept of
a connection. All they see is a set of objects, representing everything
on the message bus. So again for clients, there is no need for everything
to be in one agent.
Regards,
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|