[libvirt] [libvirt-glib] Add API to redefine an existing domain

Marc-André Lureau marcandre.lureau at gmail.com
Mon Nov 21 17:17:51 UTC 2011


Hi
Hi

Agreed with the comments from teuf +

On Fri, Nov 18, 2011 at 8:24 PM, Zeeshan Ali (Khattak)
<zeeshanak at gnome.org> wrote:
> +void gvir_connection_redefine_domain(GVirConnection *conn,
> +                                     GVirDomain *domain,
> +                                     GVirConfigDomain *conf,
> +                                     GError **err)
> +{

I would check that the given arguments are correct, != NULL or GVIR_IS_FOO.

I would return TRUE on success, and error can be NULL (regular glib convention)

> +    const gchar *xml;
> +    virDomainPtr handle;
> +    GVirDomain *dom;
> +    virDomainPtr dom_handle;
> +    GVirConnectionPrivate *priv = conn->priv;
> +
> +    xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(conf));
> +
> +    g_return_if_fail(xml != NULL);
> +
> +    g_mutex_lock(priv->lock);
> +    dom = g_hash_table_lookup (priv->domains,
> +                               (gpointer)gvir_domain_get_uuid(domain));
> +    g_mutex_unlock(priv->lock);
> +    g_return_if_fail(dom != NULL);
> +    /* FIXME: Check if config's domain ID is the same as domain passed */

I suppose this is missing Christophe gconfig patches.

> +    if (!(handle = virDomainDefineXML(priv->conn, xml))) {
> +        *err = gvir_error_new_literal(GVIR_CONNECTION_ERROR,
> +                                      0,
> +                                      "Failed to redefine domain");
> +        return NULL;
> +    }
> +}

And I would verify that handle is == to current domain handle. If not,
we probably need to replace it or we need to throw an error. At the
minimum it would be nice to leave a comment after verifying that it is
safe to ignore return value.

(then send an updated patch for ack)

regards

-- 
Marc-André Lureau




More information about the libvir-list mailing list