[libvirt] [libvirt-glib 4/4] Add gvir_config_domain_os_get_boot_devices()

Christophe Fergeau cfergeau at redhat.com
Fri May 4 09:11:06 UTC 2012


On Fri, May 04, 2012 at 03:07:45AM +0300, Zeeshan Ali (Khattak) wrote:
> From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
> 
> ---
>  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
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120504/40c9f15e/attachment-0001.sig>


More information about the libvir-list mailing list