On Tue, Apr 15, 2008 at 02:23:53PM -0700, Ryan Scott wrote:
Daniel P. Berrange wrote:
>On Tue, Apr 15, 2008 at 11:31:32AM -0700, Ryan Scott wrote:
>> I'd like to get some comments on the following...
>>
>> We would like to use libvirt to store some properties related to a
>>domain. This can be done by adding a simple get/set API as follows:
>
>What are the properties ? I'm not really very enthusiastic about the
>idea of adding API / XML for generic key,value properties. I think it
>will quickly be abused as a way to add arbitrary, non-standardized
>hypervisor / driver specific configuration which would be better
>represented with explicit schema.
One thing we have in mind is driver/software version numbers. For
example, the control tools may change the domain configuration based on
whether a certain driver has the support for a new feature. If we
create the domain's xml with the driver information, we can make this
decision quickly, on the fly, in dom0.
What are the drivers for ? As an example, if you're refering to drivers
for the backend disk devices assigned to a guest, then we alreayd have
a <driver/> element for <disk> devices, where we can add a
'version='
attribute.
If its not per-domain specific, then we have the 'capabilities' XML
format which can be used to expose information about the capabilities
of a hypervisor. For now we expose information about supported migration
protocols, supported OS types & architectures. There's clearly scope
for defining further bits of metadata here.
So unless more concrete examples of properties come to light I'm still
not seeing any compelling argument for generic key,value pairs.
>One of the key ideas behind libvirt is that we try to provide a
consistent
>set of configuration options across all drivers. NB, I'm not saying we need
>the lowest-common denominator - just that we try to formalize a way to
>represent every configuration option in such a away that it could be
>applied
>to any driver. I don't think simple key,value pairs are sufficient in the
>general case.
This wasn't meant to be a generic solution to handle storage of all
domain information. For your example below, if someone wants more
information on the console, the API should be extended to allow that.
However, extending the API to every piece of information for a domain
seems to be overkill. That's why we just want a simple name/value pair.
While extending the XML format for every piece of information is clearly
more work than a generic name/value pair, this is a worthwhile tradeoff
because it forces us to think about the scope of everything we add, and
hopefully come up with an optimal way of representing it.
Dan.
--
|: Red Hat, Engineering, Boston -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 :|