On Fri, Dec 6, 2013 at 11:13 AM, Christophe Fergeau <cfergeau(a)redhat.com> wrote:
---
libvirt-gconfig/libvirt-gconfig-domain-disk.c | 42 +++++++++++++++++++
libvirt-gconfig/libvirt-gconfig-domain-disk.h | 58 +++++++++++++++------------
libvirt-gconfig/libvirt-gconfig.sym | 3 ++
3 files changed, 77 insertions(+), 26 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.c
b/libvirt-gconfig/libvirt-gconfig-domain-disk.c
index db0416a..85d2bea 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-disk.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.c
@@ -390,3 +390,45 @@ gvir_config_domain_disk_set_readonly(GVirConfigDomainDisk *disk,
} else
gvir_config_object_delete_child(GVIR_CONFIG_OBJECT(disk), "readonly",
NULL);
}
+
+
+/**
+ * gvir_config_domain_disk_set_driver:
+ * @disk: a #GVirConfigDomainDisk
+ * @driver: (allow-none): a #GVirConfigDomainDiskDriver
+ *
+ * Uses @driver as the driver configuration for @disk.
+ */
+void gvir_config_domain_disk_set_driver(GVirConfigDomainDisk *disk,
+ GVirConfigDomainDiskDriver *driver)
+{
+ g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk));
+ g_return_if_fail(driver == NULL || GVIR_CONFIG_IS_DOMAIN_DISK_DRIVER(driver));
+
+ gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(disk),
+ "driver",
+ GVIR_CONFIG_OBJECT(driver));
+}
+
+
+/**
+ * gvir_config_domain_disk_get_driver:
+ * @disk: a #GVirConfigDomainDisk
+ *
+ * Gets the driver configuration for @disk.
+ *
+ * Returns: (transfer full): A #GVirConfigDomainDiskDriver. The returned
+ * object should be unreffed with g_object_unref() when no longer needed.
+ */
+GVirConfigDomainDiskDriver *gvir_config_domain_disk_get_driver(GVirConfigDomainDisk
*disk)
+{
+ GVirConfigObject *object;
+
+ g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL);
+
+ object = gvir_config_object_get_child_with_type(GVIR_CONFIG_OBJECT(disk),
+ "driver",
+
GVIR_CONFIG_TYPE_DOMAIN_DISK_DRIVER);
+
+ return GVIR_CONFIG_DOMAIN_DISK_DRIVER(object);
+}
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.h
b/libvirt-gconfig/libvirt-gconfig-domain-disk.h
index 3b82eb5..a28f243 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-disk.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.h
@@ -29,6 +29,35 @@
G_BEGIN_DECLS
+/* These enum definitions are needed by libvirt-gconfig-domain-disk-driver.h */
Why not just move these enums to that header then?
+typedef enum {
+ GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT,
+ GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE,
+ GVIR_CONFIG_DOMAIN_DISK_CACHE_WRITETHROUGH,
+ GVIR_CONFIG_DOMAIN_DISK_CACHE_WRITEBACK,
+ GVIR_CONFIG_DOMAIN_DISK_CACHE_DIRECTSYNC,
+ GVIR_CONFIG_DOMAIN_DISK_CACHE_UNSAFE
+} GVirConfigDomainDiskCacheType;
+
+typedef enum {
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_RAW,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_DIR,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_BOCHS,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_CLOOP,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_COW,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_DMG,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_ISO,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_QCOW2,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_QED,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_VMDK,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_VPC,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_FAT,
+ GVIR_CONFIG_DOMAIN_DISK_FORMAT_VHD,
+} GVirConfigDomainDiskFormat;
+
Looks good otherwise.