On Fri, May 04, 2012 at 03:07:45AM +0300, Zeeshan Ali (Khattak) wrote: > From: "Zeeshan Ali (Khattak)" <[email protected]> > > --- > libvirt-gconfig/libvirt-gconfig-domain-os.c | 44 > +++++++++++++++++++++++++++ > libvirt-gconfig/libvirt-gconfig-domain-os.h | 1 + > libvirt-gconfig/libvirt-gconfig.sym | 1 + > 3 files changed, 46 insertions(+), 0 deletions(-) > > diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c > b/libvirt-gconfig/libvirt-gconfig-domain-os.c > index 74cdd4d..f1a75dd 100644 > --- a/libvirt-gconfig/libvirt-gconfig-domain-os.c > +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c > @@ -221,6 +221,50 @@ void > gvir_config_domain_os_set_boot_devices(GVirConfigDomainOs *os, GList *boot_ > } > } > > +static gboolean add_boot_device(xmlNodePtr node, gpointer opaque) > +{ > + GList **devices = (GList **)opaque; > + GVirConfigDomainOsBootDevice device; > + const gchar *value; > + > + if (g_strcmp0((const gchar *)node->name, "boot") != 0) > + return TRUE; > + > + value = gvir_config_xml_get_attribute_content(node, "dev"); > + if (value != NULL) {
GVirConfigDomainOsBootDevice device can be declared in this block.
> + device = gvir_config_genum_get_value
> + (GVIR_CONFIG_TYPE_DOMAIN_OS_BOOT_DEVICE,
> + value,
> + GVIR_CONFIG_DOMAIN_OS_BOOT_DEVICE_HD);
> + *devices = g_list_append(*devices, GINT_TO_POINTER(device));
> + } else
> + g_debug("Failed to parse attribute 'dev' of node 'boot'");
> +
> + return TRUE;
> +}
> +
> +/**
> + * gvir_config_domain_os_get_boot_devices:
> + *
> + * Gets the list of devices attached to @os
> + *
> + * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer full):
> + * a newly allocated #GList of #GVirConfigDomainOsBootDevice.
> + */
> +GList *gvir_config_domain_os_get_boot_devices(GVirConfigDomainOs *os)
> +{
> + GList *devices = NULL;
> +
> + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_OS(os), NULL);
> +
> + gvir_config_object_foreach_child(GVIR_CONFIG_OBJECT(os),
> + "devices",
This should be NULL instead of "devices", we want to parse
Looks good otherwise,
Christophe
> + add_boot_device,
> + &devices);
> +
> + return devices;
> +}
> +
> void gvir_config_domain_os_set_arch(GVirConfigDomainOs *os, const char *arch)
> {
> xmlNodePtr os_node;
> diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.h
> b/libvirt-gconfig/libvirt-gconfig-domain-os.h
> index 55a162b..44b8bdd 100644
> --- a/libvirt-gconfig/libvirt-gconfig-domain-os.h
> +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.h
> @@ -82,6 +82,7 @@ GVirConfigDomainOs
> *gvir_config_domain_os_new_from_xml(const gchar *xml, GError
>
> void gvir_config_domain_os_set_os_type(GVirConfigDomainOs *os,
> GVirConfigDomainOsType type);
> void gvir_config_domain_os_set_arch(GVirConfigDomainOs *os, const char
> *arch);
> +GList *gvir_config_domain_os_get_boot_devices(GVirConfigDomainOs *os);
> void gvir_config_domain_os_set_boot_devices(GVirConfigDomainOs *os, GList
> *boot_devices);
> void gvir_config_domain_os_set_kernel(GVirConfigDomainOs *os, const char
> *kernel);
> void gvir_config_domain_os_set_ramdisk(GVirConfigDomainOs *os, const char
> *ramdisk);
> diff --git a/libvirt-gconfig/libvirt-gconfig.sym
> b/libvirt-gconfig/libvirt-gconfig.sym
> index 67e9c3f..7bc9e2d 100644
> --- a/libvirt-gconfig/libvirt-gconfig.sym
> +++ b/libvirt-gconfig/libvirt-gconfig.sym
> @@ -377,6 +377,7 @@ LIBVIRT_GCONFIG_0.0.8 {
> LIBVIRT_GCONFIG_0.0.9 {
> global:
> gvir_config_domain_get_os;
> + gvir_config_domain_os_get_boot_devices;
> } LIBVIRT_GCONFIG_0.0.8;
>
> # .... define new API here using predicted next version number ....
> --
> 1.7.7.6
>
> --
> libvir-list mailing list
> [email protected]
> https://www.redhat.com/mailman/listinfo/libvir-list
pgpCRIHgmE8sc.pgp
Description: PGP signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
