[libvirt] [libvirt-glib 2/2] Add GVirConfigDomainDisk getters

Christophe Fergeau cfergeau at redhat.com
Tue Jan 3 14:56:06 UTC 2012


---
 libvirt-gconfig/libvirt-gconfig-domain-disk.c |  101 +++++++++++++++++++++++++
 libvirt-gconfig/libvirt-gconfig-domain-disk.h |   10 +++
 libvirt-gconfig/libvirt-gconfig.sym           |    8 ++
 3 files changed, 119 insertions(+), 0 deletions(-)

diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.c b/libvirt-gconfig/libvirt-gconfig-domain-disk.c
index 1121007..2f659a0 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-disk.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.c
@@ -191,3 +191,104 @@ void gvir_config_domain_disk_set_target_dev(GVirConfigDomainDisk *disk,
     gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk),
                                                 "target", "dev", dev);
 }
+
+GVirConfigDomainDiskType
+gvir_config_domain_disk_get_disk_type(GVirConfigDomainDisk *disk)
+{
+    return disk->priv->type;
+}
+
+GVirConfigDomainDiskGuestDeviceType
+gvir_config_domain_disk_get_guest_device_type(GVirConfigDomainDisk *disk)
+{
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk),
+                         GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
+
+    return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk),
+                                                  NULL,
+                                                  "device",
+                                                  GVIR_TYPE_CONFIG_DOMAIN_DISK_GUEST_DEVICE_TYPE,
+                                                  GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
+}
+
+GVirConfigDomainDiskSnapshotType
+gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk)
+{
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk),
+                         GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO);
+
+    return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk),
+                                                  NULL,
+                                                  "snapshot",
+                                                  GVIR_TYPE_CONFIG_DOMAIN_DISK_SNAPSHOT_TYPE,
+                                                  GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO);
+}
+
+char *
+gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk)
+{
+    const char *attribute_name;
+
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk), NULL);
+
+    switch (disk->priv->type) {
+        case GVIR_CONFIG_DOMAIN_DISK_FILE:
+            attribute_name = "file";
+            break;
+        case GVIR_CONFIG_DOMAIN_DISK_BLOCK:
+            attribute_name = "dev";
+            break;
+        case GVIR_CONFIG_DOMAIN_DISK_DIR:
+            attribute_name = "dir";
+            break;
+        case GVIR_CONFIG_DOMAIN_DISK_NETWORK:
+            attribute_name = "protocol";
+            break;
+        default:
+            g_return_val_if_reached(NULL);
+    }
+    return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk),
+                                            "source", attribute_name);
+}
+
+char *
+gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk)
+{
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk), NULL);
+
+    return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk),
+                                            "driver", "name");
+}
+
+char *
+gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk)
+{
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk), NULL);
+
+    return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk),
+                                            "driver", "type");
+}
+
+GVirConfigDomainDiskBus
+gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk)
+{
+    /* FIXME: the default value depends on the "name" attribute, should we
+     * copy what libvirt is doing here?
+     */
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk),
+                         GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
+
+    return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk),
+                                                  "target", "snapshot",
+                                                  GVIR_TYPE_CONFIG_DOMAIN_DISK_BUS,
+                                                  GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
+}
+
+char *
+gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk)
+{
+    g_return_val_if_fail(GVIR_IS_CONFIG_DOMAIN_DISK(disk), NULL);
+
+    return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(disk),
+                                            "target", "dev");
+}
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.h b/libvirt-gconfig/libvirt-gconfig-domain-disk.h
index bc63dfe..650bdc6 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-disk.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.h
@@ -108,6 +108,16 @@ void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk,
                                             GVirConfigDomainDiskBus bus);
 void gvir_config_domain_disk_set_target_dev(GVirConfigDomainDisk *disk,
                                             const char *dev);
+
+GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainDisk *disk);
+GVirConfigDomainDiskGuestDeviceType gvir_config_domain_disk_get_guest_device_type(GVirConfigDomainDisk *disk);
+GVirConfigDomainDiskSnapshotType gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk);
+char *gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk);
+char *gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk);
+char *gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk);
+GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk);
+char *gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk);
+
 G_END_DECLS
 
 #endif /* __LIBVIRT_GCONFIG_DOMAIN_DISK_H__ */
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
index 7200da5..20dc969 100644
--- a/libvirt-gconfig/libvirt-gconfig.sym
+++ b/libvirt-gconfig/libvirt-gconfig.sym
@@ -61,13 +61,21 @@ LIBVIRT_GCONFIG_0.0.3 {
 	gvir_config_domain_disk_type_get_type;
 	gvir_config_domain_disk_new;
 	gvir_config_domain_disk_new_from_xml;
+	gvir_config_domain_disk_get_driver_name;
 	gvir_config_domain_disk_set_driver_name;
+	gvir_config_domain_disk_get_driver_type;
 	gvir_config_domain_disk_set_driver_type;
+	gvir_config_domain_disk_get_guest_device_type;
 	gvir_config_domain_disk_set_guest_device_type;
+	gvir_config_domain_disk_get_snapshot_type;
 	gvir_config_domain_disk_set_snapshot_type;
+	gvir_config_domain_disk_get_source;
 	gvir_config_domain_disk_set_source;
+	gvir_config_domain_disk_get_target_bus;
 	gvir_config_domain_disk_set_target_bus;
+	gvir_config_domain_disk_get_target_dev;
 	gvir_config_domain_disk_set_target_dev;
+	gvir_config_domain_disk_get_disk_type;
 	gvir_config_domain_disk_set_type;
 
 	gvir_config_domain_filesys_get_type;
-- 
1.7.7.5




More information about the libvir-list mailing list