From: "Daniel P. Berrange" <berrange@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: "libvir-list@redhat.com" <libvir-list@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: [Qemu-devel] Re: [libvirt] Supporting hypervisor specific APIs in libvirt
Date: Wed, 24 Mar 2010 10:23:26 +0000 [thread overview]
Message-ID: <20100324102326.GA624@redhat.com> (raw)
In-Reply-To: <4BA7E5E1.1010404@codemonkey.ws>
On Mon, Mar 22, 2010 at 04:49:21PM -0500, Anthony Liguori wrote:
> On 03/22/2010 03:10 PM, Daniel P. Berrange wrote:
> >>This isn't necessarily libvirt's problem if it's mission is to provide a
> >>common hypervisor API that covers the most commonly used features.
> >>
> >That is more or less our current mission. If this mission leads to QEMU
> >creating a non-libvirt based API& telling people to use that instead,
> >then I'd say libvirt's mission needs to change to avoid that scenario !
> >I strongly believe that libvirt's strategy is good for application
> >developers over the medium to long term. We need to figure out how to
> >get rid of the short term pain from the feature timelag, rather than
> >inventing a new library API for them to use.
> >
>
> Well that's certainly a good thing :-)
>
> >>However, for qemu, we need an API that covers all of our features that
> >>people can develop against. The ultimate question we need to figure out
> >>is, should we encourage our users to always use libvirt or should we
> >>build our own API for people (and libvirt) to consume.
> >>
> >>I don't think it's necessarily a big technical challenge for libvirt to
> >>support qemu more completely. I think it amounts to introducing a
> >>series of virQemuXXXX APIs that implement qemu specific functions. Over
> >>time, qemu specific APIs can be deprecated in favour of more generic
> >>virDomain APIs.
> >>
> >Stepping back a bit first, there are the two core areas in which people can
> >be limited by libvirt currently.
> >
> > 1. Monitor commands
> > 2. Command line flags
> >
> >Ultimately, IIUC, you are suggesting we need to allow arbitrary passthrough
> >for both of these in libvirt.
> >
> >At the libvirt level, we have 3 core requirements
> >
> > 1. The XML format is extend only (new elements allowed, or add attributes
> > or children to existing elements)
> > 2. The C library API is append only (new symbols only)
> > 3. The RPC wire protocol is append only (maps 1-1 to the C API generally)
> >
>
> We have a slightly different mentality within QEMU I think. Here's
> roughly how I'd characterize our guarantees.
>
> 1. For any two versions of QEMU, we try to guarantee that the same VM,
> as far as the guest sees it, can be created.
> 2. We tend to avoid changing command line syntax unless the syntax was
> previously undefined.
> 3. QMP supports enumeration and feature negotiation. This enables a
> client to discover which functions are supported.
> 4. We try to maintain monitor interfaces but provide no guarantees of
> compatibility.
Points 2 & 4 make it very hard for libvirt to use any library API
that QEMU might expose. We need to support multiple concurrently
running versions of QEMU on a host, to cope with the package upgrade
scenario & adhoc testing of new versions. If a libqemu.so for talking
to QEMU changed a monitor interface & didn't have backwards compatability
for older QEMU version, then it is not something we could use, because
any particular libvirt build would be tied to only being able to talk
to the specific QEMU version. Currently we internally deal with changes
in syntax detecting which format/protocol we need to use at runtime and
need to maintain that ability.
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
next prev parent reply other threads:[~2010-03-24 10:23 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-22 19:25 [Qemu-devel] Supporting hypervisor specific APIs in libvirt Anthony Liguori
2010-03-22 20:10 ` [Qemu-devel] Re: [libvirt] " Daniel P. Berrange
2010-03-22 21:33 ` Gerd Hoffmann
2010-03-22 21:53 ` Anthony Liguori
2010-03-23 8:54 ` Jes Sorensen
2010-03-23 10:25 ` Gerd Hoffmann
2010-03-23 10:31 ` Jes Sorensen
2010-03-23 10:58 ` Gerd Hoffmann
2010-03-22 23:36 ` Cole Robinson
2010-03-22 21:49 ` Anthony Liguori
2010-03-23 7:35 ` Alexander Graf
2010-03-23 23:25 ` Jamie Lokier
2010-03-24 0:55 ` Anthony Liguori
2010-03-24 10:05 ` Markus Armbruster
2010-03-24 12:25 ` Paul Brook
2010-03-24 12:48 ` Anthony Liguori
2010-03-25 2:43 ` Jamie Lokier
2010-03-23 11:33 ` Daniel P. Berrange
2010-03-24 10:23 ` Daniel P. Berrange [this message]
2010-03-22 20:25 ` [Qemu-devel] " Daniel P. Berrange
2010-03-23 10:06 ` [Qemu-devel] " Juan Quintela
2010-03-23 10:41 ` Gerd Hoffmann
2010-03-23 10:50 ` Juan Quintela
2010-03-23 11:08 ` Daniel P. Berrange
2010-03-23 12:19 ` Juan Quintela
2010-03-23 23:13 ` Jamie Lokier
2010-03-24 7:59 ` Gerd Hoffmann
2010-03-24 13:52 ` Cole Robinson
2010-03-24 14:00 ` Gerd Hoffmann
2010-03-23 23:19 ` Jamie Lokier
2010-03-24 2:22 ` Andi Kleen
2010-03-24 8:49 ` Juan Quintela
[not found] ` <20100323145105.GV16253@redhat.com>
2010-03-23 15:05 ` [Qemu-devel] Re: [libvirt] " Anthony Liguori
2010-03-23 15:57 ` Paul Brook
2010-03-23 16:06 ` Anthony Liguori
2010-03-23 18:00 ` Avi Kivity
2010-03-23 18:23 ` [libvirt] [Qemu-devel] " Daniel P. Berrange
2010-03-24 1:05 ` Anthony Liguori
2010-03-24 4:48 ` Avi Kivity
2010-03-23 19:28 ` [Qemu-devel] Re: [libvirt] " Anthony Liguori
2010-03-23 23:09 ` Jamie Lokier
2010-03-24 5:17 ` Avi Kivity
2010-03-24 10:36 ` Daniel P. Berrange
2010-03-24 10:42 ` Avi Kivity
2010-03-24 12:23 ` Anthony Liguori
2010-03-24 12:29 ` Avi Kivity
2010-03-24 12:32 ` Anthony Liguori
2010-03-24 12:33 ` Avi Kivity
2010-03-25 0:28 ` Jamie Lokier
2010-03-24 16:42 ` Luiz Capitulino
2010-03-24 19:49 ` Avi Kivity
2010-03-24 20:12 ` Luiz Capitulino
2010-03-24 20:32 ` Anthony Liguori
2010-03-24 20:54 ` Alexander Graf
2010-03-24 21:33 ` Luiz Capitulino
2010-03-25 7:49 ` Alexander Graf
2010-03-24 21:25 ` Luiz Capitulino
2010-03-24 21:40 ` Anthony Liguori
2010-03-25 8:26 ` Vincent Hanquez
2010-03-25 8:49 ` Avi Kivity
2010-03-25 12:33 ` Anthony Liguori
2010-03-25 12:37 ` Avi Kivity
2010-03-25 13:44 ` Anthony Liguori
2010-03-25 13:48 ` Avi Kivity
2010-03-25 13:57 ` Anthony Liguori
2010-03-25 14:09 ` Luiz Capitulino
2010-03-25 15:59 ` Anthony Liguori
2010-03-26 2:11 ` Jamie Lokier
2010-03-25 14:21 ` Avi Kivity
2010-03-25 14:22 ` Vincent Hanquez
2010-03-25 16:50 ` Markus Armbruster
2010-03-25 17:40 ` Anthony Liguori
2010-03-26 7:37 ` Markus Armbruster
2010-03-26 9:26 ` [libvirt] [Qemu-devel] " Paolo Bonzini
2010-03-26 9:51 ` [Qemu-devel] Re: [libvirt] " Avi Kivity
2010-03-26 12:53 ` Anthony Liguori
2010-03-26 13:53 ` Anthony Liguori
2010-03-25 13:37 ` Gildas Le Nadan
2010-03-25 13:59 ` Daniel P. Berrange
2010-03-25 14:56 ` Vincent Hanquez
2010-03-25 15:07 ` Daniel P. Berrange
2010-03-25 15:14 ` Vincent Hanquez
2010-03-25 15:16 ` Daniel P. Berrange
2010-03-25 16:01 ` Anthony Liguori
2010-03-25 16:30 ` Alexander Graf
2010-03-26 2:18 ` Jamie Lokier
2010-03-25 13:23 ` Luiz Capitulino
2010-03-25 13:55 ` Anthony Liguori
2010-03-26 12:52 ` Luiz Capitulino
2010-03-25 6:37 ` Avi Kivity
2010-03-25 8:18 ` Alexander Graf
2010-03-26 16:01 ` Avi Kivity
2010-03-24 12:19 ` Anthony Liguori
2010-03-24 12:27 ` Avi Kivity
2010-03-24 12:30 ` Anthony Liguori
2010-03-24 12:32 ` Avi Kivity
2010-03-23 18:07 ` Daniel P. Berrange
2010-03-23 19:24 ` Anthony Liguori
2010-03-24 5:49 ` Avi Kivity
2010-03-24 12:30 ` Paul Brook
2010-03-24 12:34 ` Avi Kivity
2010-03-24 13:03 ` Paul Brook
2010-03-24 15:55 ` Markus Armbruster
2010-03-24 16:12 ` Paul Brook
2010-03-23 23:22 ` Jamie Lokier
2010-03-23 17:57 ` [Qemu-devel] " Avi Kivity
2010-03-23 19:31 ` Anthony Liguori
2010-03-24 4:53 ` Avi Kivity
2010-03-26 2:31 ` Jamie Lokier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100324102326.GA624@redhat.com \
--to=berrange@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=libvir-list@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.