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