All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
	Avi Kivity <avi@redhat.com>,
	qemu-devel Developers <qemu-devel@nongnu.org>
Subject: [Qemu-devel] Re: libvirt vs. in-qemu management
Date: Tue, 06 Apr 2010 14:49:23 +0200	[thread overview]
Message-ID: <4BBB2DD3.3090405@suse.de> (raw)
In-Reply-To: <20100406110616.GK28689@redhat.com>

Daniel P. Berrange wrote:
> On Tue, Apr 06, 2010 at 01:14:36AM +0300, Avi Kivity wrote:
>   
>> On 04/06/2010 12:11 AM, Alexander Graf wrote:
>>
>>     
>>> I can imagine 1) going away if we would set libvirt + virt-manager as 
>>> _the_ front-end and have everyone focus on it. I suppose it would also 
>>> help to rebrand it by then, but I'm not 100% sure about that. Either way, 
>>> there would have to be a definite statement that libvirt is the solution 
>>> to use. And _everyone_ would have to agree on that. Sounds like a hard 
>>> task. And by then we still don't really have a branded product stack.
>>>
>>> Point 3 is the really tough one. It's the very basis of libvirt. And it's 
>>> plain wrong IMHO. I hate XML. I hate duplicated efforts. The current 
>>> conversion involves both. Every option added to qemu needs to be added to 
>>> libvirt.
>>>       
>> Not just libvirt, virt-manager as well.  And that is typically more 
>> difficult technically (though probably takes a lot less time).
>>
>>     
>>> In XML. Bleks.
>>>   
>>>       
>> Yeah.
>>     
>
> Whether XML is a problem or not really depends on what kind of stack you
> are looking at, and what group of users you're considering. 
>
>  1. virsh -> QEMU 
>
>     This is the lowest level in libvirt, so XML is exposed to people
>     directly. We're really not expecting people to use this for 
>     creating new VMs though precisely because people don't like XML,
>     instead see next option. You can hot-plug/unplug devices without
>     knowing XML though.
>
>  2. virt-install -> QEMU
>
>     Instead of XML this takes simple command line args to describe the
>     VM configuration, avoiding need to know XML at all. it also automates
>     many other aspects like creation of storage, fetching of install
>     media, etc.
>
>  2. virt-manager -> libvirt -> QEMU
>
>     Not a GUI, so XML is not exposed to users at all
>
>  3. ovirt/rhev-m -> libvirt -> QEMU
>
>     Configuration is stored in a custom database schema. XML is merely
>     generated on the fly when spawning VMs.
>
>  4. CIM/DMTF -> libvirt -> QEMU
>
>     Configuration is described in terms of DMTF schema, translated
>     on the fly to libvirt XML. Apps using CIM likely don't use the
>     DMTF schema directly either, having their own format.
>
> With exception of the lowest level virsh, XML is just an intermediate
> interchange format, not the format that is directly exposed to users.
> You can get at the raw QEMU level config that results in all cases.
>
> There is a gap in this though, for people who don't want to use any kind
> of management tool at all, but rather just script the low level bits 
> directly. For them, virt-install may not be flexible enough, but virsh
> is too raw forcing knowledge of the XML format. 
>   

Yikes. So that means people do one more conversion step? That sounds
like the worst thing possible. It sounds like a basic -> fortran -> C
converter. That's prone to fail and I'm sure a serious headache for
everyone involved. There's no way people could easily debug things on
such a complex stack anymore.

>   
>>> Sure, for libvirt it makes sense to be hypervisor-agnostic. For qemu it 
>>> doesn't. We want to be _the_ hypervisor. Setting our default front-end to 
>>> something that is agnostic weakens our point. And it slows down 
>>> development. And it hurts integration. And thus usability, thus adoption. 
>>> It hurts us.
>>>   
>>>       
>> It doesn't make sense for libvirt to be hypervisor agnostic.  If it is, 
>> people who want to use one hypervisor's advanced features are forced to 
>> work around it.  Anthony wants multiple monitors for this, but that's a 
>> bad workaround.  libvirt is placing developers using it in an impossible 
>> situation - the developers want to use kvm-specific features and libvirt 
>> is in the way.
>>     
>
> I have proposed a couple of extensions to address this problem of feature
> lg
>
>  - Provide a way to pass extra command line args to QEMU via libvirt
>  - Provide a way to send/receive monitor commands via libvirt
>
> This would give access to nearly all of QEMU's features.
>   

It's more than just feature lag. Anthony is the one caring about feature
lag. I care about too many levels of abstraction and conversion. Try to
think as if you were a sysadmin trying to create VMs. You would have to
learn two different languages (libvirt-xml and qemu syntax) to be able
to really work with the whole stack. Because the stack consists of both.
You also need to go back and forth between the two at times. So you
really do end up having to learn both, which is bad.

What I was trying to point out is that we should make things easier for
users by keeping things consistent and always the same syntax-wise. That
makes everyone's life a lot easier.

If you try to disagree with me, try switching to csh from bash. It can
do the same thing with the same applications your bash calls. It's
merely a different syntax. Now try to be productive with it :-).


Alex

  reply	other threads:[~2010-04-06 12:49 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-05 21:11 [Qemu-devel] libvirt vs. in-qemu management Alexander Graf
2010-04-05 22:14 ` [Qemu-devel] " Avi Kivity
2010-04-05 22:29   ` Alexander Graf
2010-04-06 12:09     ` Avi Kivity
2010-04-06 12:28       ` Alexander Graf
2010-04-06 12:41         ` Avi Kivity
2010-04-06 12:51           ` Alexander Graf
2010-04-06 20:15             ` Jamie Lokier
2010-04-06 11:06   ` Daniel P. Berrange
2010-04-06 12:49     ` Alexander Graf [this message]
2010-04-06 13:00       ` Daniel P. Berrange
2010-04-06 13:20         ` Alexander Graf
2010-04-06 20:08         ` Jamie Lokier
2010-04-06 10:47 ` Daniel P. Berrange
2010-04-06 12:43   ` Alexander Graf
2010-04-06 12:58     ` Avi Kivity
2010-04-06 13:39     ` Daniel P. Berrange
2010-04-06 13:53       ` Alexander Graf
2010-04-06 14:06         ` Daniel P. Berrange
2010-04-06 15:06           ` Alexander Graf
2010-04-06 19:43             ` Jamie Lokier
2010-04-06 14:14     ` Richard W.M. Jones

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=4BBB2DD3.3090405@suse.de \
    --to=agraf@suse.de \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=berrange@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.