[libvirt] [PATCH 5/5]: Export <device> when doing logical pool discovery
Daniel P. Berrange
berrange at redhat.com
Tue Oct 21 14:29:17 UTC 2008
On Tue, Oct 21, 2008 at 03:57:24PM +0200, Chris Lalancette wrote:
> When doing logical pool discovery, it currently returns XML like:
>
> <sources><source><name>myvg</name></source></sources>
>
> However, for oVirt, we need to know the device name that corresponds to this
> logical volume group as well. Therefore, extend the
> virStorageBackendLogicalFindPoolSources function to return this information as
> well. This required pretty much a complete rewrite of the discovery function,
> since I needed to be able to add <device> sections to already existing XML
> nodes. For that reason, this code uses direct libxml2 tree API's to handle the
> parsing and the adding of nodes where necessary.
This really makes my eyes hurt.
This is a great example of why we centralized all the XML parsing &
formatting & introduced proper struct's everywhere. We need to take
advantage of the stuff already provided in storage_conf.c/h. We have
a struct to represent a single storage pool source, so we just need
another to represent a list of them. eg
typedef struct _virStoragePoolSourceList virStoragePoolSourceList;
typedef virStoragePoolSourceList *virStoragePoolSourceListPtr;
struct _virStoragePoolSourceList {
unsigned int nsources;
virStoragePoolSourcePtr sources;
};
And a corresponding API
char *virStoragePoolSourceListFormat(virConnectPtr conn,
virStoragePoolSourceListPtr def);
So, the virStorageBackendLogicalFindPoolSourcesFunc() would then just
accept a virStoragePoolSourceListPtr() as the opaque param, and be
able to nicely populate another virStoragePoolSourcePtr object in it.
All the XML handling would be kept out of the driver implementation
code.
Regards,
Daniel
--
|: Red Hat, Engineering, London -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 :|
More information about the libvir-list
mailing list