[libvirt] [libvirt-designer][PATCH v2 2/4] domain: Introduce disk support
Martin Kletzander
mkletzan at redhat.com
Mon Sep 10 16:50:31 UTC 2012
On 09/10/2012 03:58 PM, Michal Privoznik wrote:
> Let users add either files or devices as disks to domains.
> ---
> libvirt-designer/libvirt-designer-domain.c | 259 ++++++++++++++++++++++++++++
> libvirt-designer/libvirt-designer-domain.h | 7 +
> libvirt-designer/libvirt-designer.sym | 3 +
> 3 files changed, 269 insertions(+), 0 deletions(-)
>
> diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c
> index a8cabde..8e649d7 100644
> --- a/libvirt-designer/libvirt-designer-domain.c
> +++ b/libvirt-designer/libvirt-designer-domain.c
> @@ -37,6 +37,12 @@ struct _GVirDesignerDomainPrivate
> GVirConfigCapabilities *caps;
> OsinfoOs *os;
> OsinfoPlatform *platform;
> +
> + OsinfoDeployment *deployment;
> + /* next disk targets */
> + unsigned int ide;
> + unsigned int virtio;
> + unsigned int sata;
> };
>
> G_DEFINE_TYPE(GVirDesignerDomain, gvir_designer_domain, G_TYPE_OBJECT);
> @@ -134,6 +140,8 @@ static void gvir_designer_domain_finalize(GObject *object)
> g_object_unref(priv->os);
> g_object_unref(priv->platform);
> g_object_unref(priv->caps);
> + if (priv->deployment)
> + g_object_unref(priv->deployment);
>
> G_OBJECT_CLASS(gvir_designer_domain_parent_class)->finalize(object);
> }
> @@ -663,3 +671,254 @@ cleanup:
> g_object_unref(guest);
> return ret;
> }
> +
> +static GList *
> +gvir_designer_domain_get_supported_disk_bus_types(GVirDesignerDomain *design)
> +{
> + GVirDesignerDomainPrivate *priv = design->priv;
> + OsinfoDeviceList *dev_list;
> + GHashTable *bus_hash = g_hash_table_new(g_str_hash, g_str_equal);
> + GList *ret = NULL;
> + int i;
> +
> + dev_list = osinfo_os_get_devices_by_property(priv->os, "class", "block", TRUE);
> + if (!dev_list)
> + goto cleanup;
> +
> + for (i = 0; i < osinfo_list_get_length(OSINFO_LIST(dev_list)); i++) {
> + OsinfoDevice *dev = OSINFO_DEVICE(osinfo_list_get_nth(OSINFO_LIST(dev_list), i));
> + const gchar *bus = osinfo_device_get_bus_type(dev);
> +
> + if (bus)
> + g_hash_table_add(bus_hash, g_strdup(bus));
> + }
Here you can use Java-style list iteration as well (the one you use in
virtxml.c).
[...]
otherwise looks good, so (as I said earlier) FWIW ACK from me.
Martin
More information about the libvir-list
mailing list