[libvirt] [libvirt-designer][PATCH 4/4] domain: Introduce interface support
Martin Kletzander
mkletzan at redhat.com
Fri Sep 7 13:56:34 UTC 2012
On 09/05/2012 11:27 AM, Michal Privoznik wrote:
> Let users add NICs to domains.
> ---
> examples/virtxml.c | 96 ++++++++++++++++++++++++----
> libvirt-designer/libvirt-designer-domain.c | 53 +++++++++++++++
> libvirt-designer/libvirt-designer-domain.h | 3 +
> libvirt-designer/libvirt-designer.sym | 1 +
> 4 files changed, 141 insertions(+), 12 deletions(-)
>
[...]
> +
> +static const gchar *
> +gvir_designer_domain_get_preferred_nic_model(GVirDesignerDomain *design,
> + GError **error)
> +{
> + const gchar *ret = NULL;
> + OsinfoDeviceLink *link = NULL;
You are using "link" here which shadows some global declaration. I'm
saying "some" because the compiler told me so, but after many files I
wasn't so eager to find it, so I don't know which one. Anyway changing
it to dev_link (as you use everywhere else) worked.
> +
> + link = gvir_designer_domain_get_preferred_device(design, "network", error);
> + if (!link)
> + goto cleanup;
> +
> + ret = osinfo_devicelink_get_driver(link);
> +
> +cleanup:
> + if (link)
> + g_object_unref(link);
> + return ret;
> +}
> +
> +/**
> + * gvir_designer_domain_add_interface_network:
> + * @design: (transfer none): the domain designer instance
> + * @network: (transfer none): network name
> + *
> + * Add new network interface card into @design. The interface is
> + * of 'network' type with @network used as the source network.
> + *
> + * Returns: (transfer none): the pointer to the new interface.
> + */
> +GVirConfigDomainInterface *
> +gvir_designer_domain_add_interface_network(GVirDesignerDomain *design,
> + const char *network,
> + GError **error)
> +{
Are you planning on using gvir...add_interface_full with
add_interface_{network,bridge,etc.} as "wrappers"? I liked that with the
disk in the first patch.
> + g_return_val_if_fail(GVIR_DESIGNER_IS_DOMAIN(design), NULL);
You check this value here but not on all the previous places (and patches).
> +
> + GVirConfigDomainInterface *ret;
> + const gchar *model = NULL;
> +
> + model = gvir_designer_domain_get_preferred_nic_model(design, error);
> +
> + ret = GVIR_CONFIG_DOMAIN_INTERFACE(gvir_config_domain_interface_network_new());
I can't find the function anywhere, even though it isn't defined
automagically (IIUC), but it compiles (I wonder what the macro does in
here).
> +
> + gvir_config_domain_interface_network_set_source(GVIR_CONFIG_DOMAIN_INTERFACE_NETWORK(ret),
> + network);
> + if (model)
> + gvir_config_domain_interface_set_model(ret, model);
> +
> + gvir_config_domain_add_device(design->priv->config, GVIR_CONFIG_DOMAIN_DEVICE(ret));
> +
> + return ret;
> +}
> diff --git a/libvirt-designer/libvirt-designer-domain.h b/libvirt-designer/libvirt-designer-domain.h
> index 06a5749..5097393 100644
> --- a/libvirt-designer/libvirt-designer-domain.h
> +++ b/libvirt-designer/libvirt-designer-domain.h
> @@ -101,6 +101,9 @@ GVirConfigDomainDisk *gvir_designer_domain_add_disk_device(GVirDesignerDomain *d
> const char *devpath,
> GError **error);
>
> +GVirConfigDomainInterface *gvir_designer_domain_add_interface_network(GVirDesignerDomain *design,
> + const char *network,
> + GError **error);
> G_END_DECLS
>
> #endif /* __LIBVIRT_DESIGNER_DOMAIN_H__ */
> diff --git a/libvirt-designer/libvirt-designer.sym b/libvirt-designer/libvirt-designer.sym
> index e67323a..77f76b4 100644
> --- a/libvirt-designer/libvirt-designer.sym
> +++ b/libvirt-designer/libvirt-designer.sym
> @@ -12,6 +12,7 @@ LIBVIRT_DESIGNER_0.0.1 {
>
> gvir_designer_domain_add_disk_file;
> gvir_designer_domain_add_disk_device;
> + gvir_designer_domain_add_interface_network;
>
Indentation.
Martin
More information about the libvir-list
mailing list