[libvirt] [[libvirt-glib PATCHv2]] API to get/set custom metadata from/to domain config

Daniel P. Berrange berrange at redhat.com
Tue Jan 31 12:11:31 UTC 2012


On Tue, Jan 31, 2012 at 12:02:05PM +0100, Christophe Fergeau wrote:
> Based on a patch from Zeeshan Ali (Khattak) <zeeshanak at gnome.org>
> ---
>  libvirt-gconfig/libvirt-gconfig-domain.c          |   60 +++++++++++++++++++++
>  libvirt-gconfig/libvirt-gconfig-domain.h          |    7 +++
>  libvirt-gconfig/libvirt-gconfig-helpers-private.h |    1 +
>  libvirt-gconfig/libvirt-gconfig-helpers.c         |   23 ++++++++-
>  libvirt-gconfig/libvirt-gconfig-object-private.h  |    3 +
>  libvirt-gconfig/libvirt-gconfig-object.c          |   20 +++++++
>  libvirt-gconfig/libvirt-gconfig.sym               |    2 +
>  7 files changed, 115 insertions(+), 1 deletions(-)

ACK, if one question is answered.

> diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c
> index 61af625..606f5a4 100644
> --- a/libvirt-gconfig/libvirt-gconfig-domain.c
> +++ b/libvirt-gconfig/libvirt-gconfig-domain.c
> @@ -449,3 +449,63 @@ GList *gvir_config_domain_get_devices(GVirConfigDomain *domain)
>  
>      return data.devices;
>  }
> +
> +gboolean gvir_config_domain_set_custom_xml(GVirConfigDomain *domain,
> +                                           const gchar *xml,
> +                                           const gchar *ns,
> +                                           const gchar *ns_uri,
> +                                           GError **error)
> +{
> +    GVirConfigObject *metadata;
> +    GVirConfigObject *custom_xml;
> +
> +    g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(domain), FALSE);
> +    g_return_val_if_fail(xml != NULL, FALSE);

Shouldn't we allow NULL 'xml' here, as a means to remove the existing
element under that namespace ?  Alternatively we can add an explicit
API to delete custom XML nodes.

> +    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
> +
> +    metadata = gvir_config_object_add_child(GVIR_CONFIG_OBJECT(domain), "metadata");
> +
> +    custom_xml = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_OBJECT, NULL, NULL, xml, error);
> +    if (error != NULL && *error != NULL)
> +        return FALSE;
> +
> +    gvir_config_object_set_namespace(custom_xml, ns, ns_uri);
> +
> +    gvir_config_object_attach_replace(metadata, custom_xml);
> +
> +    return TRUE;
> +}


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list