[libvirt] [Qemu-devel] Re: Supporting hypervisor specific APIs in libvirt

Anthony Liguori anthony at codemonkey.ws
Wed Mar 24 21:40:18 UTC 2010

On 03/24/2010 04:25 PM, Luiz Capitulino wrote:
>   I see it as a related problem, because what seems to be under discussion
> is the quality of our interfaces with humans and tools.
>   Also, when we were discussing the usuability problems I remember that
> you
> *WARNING: I might be wrong here, please correct me if so*
>   you said that you don't push users to libvirt because it's out of sync with
> our features.


>   The point is that, even if this true and even if we solve that,
> I don't think it will solve the problem of a good experience for a
> 'single VM user', because libvirt is more than that and people will likely
> be annoyed as much as they are today.
>   I believe this problem is up to us to solve.

With my qemu hat on, I'm happy to ignore libvirt and say we need to own 
our interfaces and to compete with libvirt for users.

But with my Linux virtualization hat on, I want to see a single 
management interface that users can use without having to make a choice 
between libvirt features or libqemu features.

>>>    Then we make virt-manager optional and this is good because we can sync
>>> features way faster and we don't have to care about _managing_ several
>>> VMs, our world in terms of usability and maintainability is about one VM.
>>>    IMVHO, everything else should be done by third-party tools like libvirt,
>>> we just provide the means for it.
>> We need to have a common management interface for third party tools.
>   QMP? :-)

Only if QMP is compatible with libvirt.  I don't want a user to have to 
choose between QMP and libvirt.
>> So far, a libqemu.so with a flexible transport that could be used
>> directly by a libvirt user (ala cairo/gdk type interactions) seems like
>> the best solution to me.
>   I tend to disagree.
>   First, I think we should invest our time and effort on the text protocol
> business, which is QMP. Having yet another public interface will likely split
> efforts a bit and will make clients' life harder (which one should I choose?
> What if they get out of sync?). Not to mention that I think Paul has a point,
> if QMP is not useful here, why do we have it in the first place (vs. a C library
> from the beginning)?
>   You mentioned dynamic dispatch, but this is useful only for C clients right?
> If so, what C clients you expected beyond libvirt?

Users want a C API.  I don't agree that libvirt is the only C interface 
consumer out there.

>   Note that libvirt has added
> a new events API recently.
>   The second most important point for me is: why do you believe that
> libqemu.so is going to improve things? Do you expect that libvirt will
> sync faster?

With GDK and Cairo, when Cairo adds a new feature, GDK doesn't have to 
do anything to support it.  Users just get a cairo context from GDK and 
use the cairo API directly.

GDK provides a higher level interface for 2d operations that is more 
platform agnostic, and users can choice to use that or write directly to 
the cairo API.

>   If this is the case, I think it will be as slower as it's
> currently, as the problem is not the availability of interfaces, but
> most likely community integration.
>   I like the idea of having a transient qemu-specific API in libvirt,
> as suggested by someone in this thread.

I really think what we want is for a libvirt user to be able to call 
libqemu functions directly.  There shouldn't have to be libvirt specific 
functions for every operation we expose.


Anthony Liguori

More information about the libvir-list mailing list