[Libosinfo] [libvirt] domain XML for tracking libosinfo ID

Daniel P. Berrangé berrange at redhat.com
Thu Oct 4 12:36:38 UTC 2018


On Fri, Sep 07, 2018 at 04:26:50PM +0200, Martin Kletzander wrote:
> On Thu, Sep 06, 2018 at 10:04:35AM -0400, Cole Robinson wrote:
> > On 09/06/2018 09:04 AM, Martin Kletzander wrote:
> > > On Wed, Sep 05, 2018 at 03:37:22PM +0100, Daniel P. Berrangé wrote:
> > > > On Wed, Sep 05, 2018 at 02:01:42PM +0200, Martin Kletzander wrote:
> > > > > On Wed, Sep 05, 2018 at 09:28:52AM +0100, Daniel P. Berrangé wrote:
> > > > > > On Tue, Sep 04, 2018 at 03:44:12PM -0400, Cole Robinson wrote:
> > > > > > > Right now in virt-manager we only track a VM's OS name (win10,
> > > > > fedora28,
> > > > > > > etc.) during the VM install phase. This piece of data is important
> > > > > > > post-install though: if the user adds a new disk to the VM later,
> > > > > we want to
> > > > > > > be able to ask libosinfo about what devices the installed OS
> > > > > supports, so we
> > > > > > > can set optimal defaults, like enabling virtio.
> > > > > > >
> > > > > > > There isn't any standard libvirt XML field to track this kind of
> > > > > info
> > > > > > > though, so apps have to invent their own schema. nova and rhev do it
> > > > > > > indirectly AFAICT. gnome-boxes does it directly with XML like this:
> > > > > > >
> > > > > > >   <metadata>
> > > > > > >     <boxes:gnome-boxes
> > > > > xmlns:boxes="https://wiki.gnome.org/Apps/Boxes">
> > > > > > >       <os-id>http://fedoraproject.org/fedora/28</os-id>
> > > > > > >       ....
> > > > > > >     </boxes:gnome-boxes>
> > > > > > >   </metadata>
> > > > > > >
> > > > > > > I want to add something similar to virt-manager but it seems a
> > > > > shame to
> > > > > > > invent our own private schema for something that most non-trivial
> > > > > virt apps
> > > > > > > will want to know about. I was thinking a schema we could
> > > > > document with
> > > > > > > libosinfo, something like
> > > > > > >
> > > > > > > <metadata>
> > > > > > >   <libosinfo
> > > > > > > xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
> > > > > > >     <os-id>http://fedoraproject.org/fedora/28</os-id>
> > > > > > >   </libosinfo>
> > > > > > > </metadata>
> > > > > >
> > > > > > Yes, I would like to see this standardized under <matadata>.
> > > > > >
> > > > > 
> > > > > Me too and what Cole suggested looks fine.
> > > > 
> > > > It occurs to me that we actually need more than just the os-id value.
> > > > 
> > > > When you query devices for a given OS, you'll often be told that multiple
> > > > devices are compatible, and the mgmt app can decide which of them to then
> > > > use.
> > > > 
> > > > So if we want consistency when later hotplugging, we should make a record
> > > > of which devices we decided to use too, so if the mgmt app changes its
> > > > preference, we still know what we originally picked.
> > > > 
> > > > eg to express that we use virtio-net and virtio-blk (even if virtio-scsi
> > > > was supported by the OS):
> > > > 
> > > >   <metadata>
> > > >     <libosinfo
> > > > xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
> > > >       <os id="http://fedoraproject.org/fedora/28"/>
> > > >       <device id="http://pcisig.com/pci/1af4/1000"/>
> > > >       <device id="http://pcisig.com/pci/1af4/1001"/>
> > > >     </libosinfo>
> > > >   </metadata>
> > > > 
> > > > Note, I'm suggesting using an 'id' attribute, rather than naming the
> > > > element 'os-id', to be more closely aligned with osinfo schema.
> > > > 
> > > 
> > > I'm not against that <device id =''/> but it is going to take some
> > > effort to
> > > properly specify what is really meant by that.  The fact that some
> > > device model
> > > was chosen for a particular device does not necessarily mean that it is
> > > requested as the default.  It only means what is actually encoded in the
> > > XML
> > > already, that is a particular model for a particular device.
> > > 
> > 
> > Yeah I'm a bit confused by this as well, it's not exactly clear to me
> > how we would use or set XML like that for virt-manager, and how other
> > apps would be expected to consume it.
> > 
> 
> That's what I though of when trying to say we need to define the meaning of
> that.  What might be meaningful is if the user selects a particular *default*
> model for new devices (e.g. disks should be IDE by default) then that option
> could be honoured when adding a new device of that type (unless requested
> otherwise).  I'm not sure if that's what Daniel meant by that.

Consider libosinfo reports that the guest supports virtio-blk, and
virtio-scsi. The mgmt apps decides to use virtio-blk for disks. We
should remember that so that when we later add more disks, we default
to also using virtio-blk unless the user really wants virtio-scsi
instead.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the Libosinfo mailing list