[libvirt] [libvirt-glib 1/2] Add gvir_config_domain_disk_[gs]et_cache

--- libvirt-gconfig/libvirt-gconfig-domain-disk.c | 23 +++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-disk.h | 12 ++++++++++++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ libvirt-gconfig/tests/test-domain-create.c | 2 ++ 4 files changed, 40 insertions(+), 0 deletions(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.c b/libvirt-gconfig/libvirt-gconfig-domain-disk.c index b2861e4..afa7eda 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-disk.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.c @@ -172,6 +172,18 @@ void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, "driver", "type", driver_type); } +void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, + GVirConfigDomainDiskCacheType cache_type) +{ + const char *cache_str; + + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); + cache_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_DISK_CACHE_TYPE, cache_type); + g_return_if_fail(cache_str != NULL); + gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), + "driver", "cache", cache_str); +} + void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk, GVirConfigDomainDiskBus bus) { @@ -269,6 +281,17 @@ gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk) "driver", "type"); } +GVirConfigDomainDiskCacheType +gvir_config_domain_disk_get_driver_cache(GVirConfigDomainDisk *disk) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), + GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT); + + return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk), + "driver", "cache", + GVIR_CONFIG_TYPE_DOMAIN_DISK_CACHE_TYPE, + GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT); +} GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk) { diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.h b/libvirt-gconfig/libvirt-gconfig-domain-disk.h index 3359049..4b16b80 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-disk.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.h @@ -75,6 +75,15 @@ typedef enum { } GVirConfigDomainDiskBus; 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_GUEST_DEVICE_DISK, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_FLOPPY, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_CDROM @@ -100,6 +109,8 @@ void gvir_config_domain_disk_set_snapshot_type(GVirConfigDomainDisk *disk, GVirConfigDomainDiskSnapshotType type); void gvir_config_domain_disk_set_source(GVirConfigDomainDisk *disk, const char *source); +void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, + GVirConfigDomainDiskCacheType cache_type); void gvir_config_domain_disk_set_driver_name(GVirConfigDomainDisk *disk, const char *driver_name); void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, @@ -113,6 +124,7 @@ GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainD 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); +GVirConfigDomainDiskCacheType gvir_config_domain_disk_get_driver_cache(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); diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index ab2c7bf..96ce58f 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -69,11 +69,14 @@ LIBVIRT_GCONFIG_0.0.4 { gvir_config_domain_disk_get_type; gvir_config_domain_disk_bus_get_type; + gvir_config_domain_disk_cache_type_get_type; gvir_config_domain_disk_guest_device_type_get_type; gvir_config_domain_disk_snapshot_type_get_type; 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_cache; + gvir_config_domain_disk_set_driver_cache; gvir_config_domain_disk_get_driver_name; gvir_config_domain_disk_set_driver_name; gvir_config_domain_disk_get_driver_type; diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 821e0b0..0cd8304 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -101,6 +101,8 @@ int main(int argc, char **argv) gvir_config_domain_disk_set_driver_name(disk, "foo"); gvir_config_domain_disk_set_driver_type(disk, "bar"); gvir_config_domain_disk_set_driver_name(disk, "qemu"); + gvir_config_domain_disk_set_driver_cache(disk, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); + g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); gvir_config_domain_disk_set_driver_type(disk, "qcow2"); gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); gvir_config_domain_disk_set_target_dev(disk, "hda"); -- 1.7.7.6

--- libvirt-gconfig/tests/test-domain-create.c | 34 +++++++++++++++++---------- 1 files changed, 21 insertions(+), 13 deletions(-) diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 0cd8304..a92413d 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -32,10 +32,16 @@ const char *features[] = { "foo", "bar", "baz", NULL }; +#define g_str_check(str1, str2) G_STMT_START { \ + char *alloced_str = (str1); \ + g_assert(alloced_str != NULL); \ + g_assert(g_strcmp0(alloced_str, (str2)) == 0); \ + g_free(alloced_str); \ +} G_STMT_END + int main(int argc, char **argv) { GVirConfigDomain *domain; - char *name; GStrv feat; unsigned int i; char *xml; @@ -45,14 +51,12 @@ int main(int argc, char **argv) domain = gvir_config_domain_new(); g_assert(domain != NULL); gvir_config_domain_set_name(domain, "foo"); - name = gvir_config_domain_get_name(domain); - g_assert(name != NULL); - g_assert(strcmp(name, "foo") == 0); - g_free(name); + g_str_check(gvir_config_domain_get_name(domain), "foo"); gvir_config_domain_set_memory(domain, 1234); - gvir_config_domain_set_vcpus(domain, 3); g_assert(gvir_config_domain_get_memory(domain) == 1234); + gvir_config_domain_set_vcpus(domain, 3); + g_assert(gvir_config_domain_get_vcpus(domain) == 3); gvir_config_domain_set_features(domain, (const GStrv)features); feat = gvir_config_domain_get_features(domain); @@ -102,12 +106,20 @@ int main(int argc, char **argv) gvir_config_domain_disk_set_driver_type(disk, "bar"); gvir_config_domain_disk_set_driver_name(disk, "qemu"); gvir_config_domain_disk_set_driver_cache(disk, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); - g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); gvir_config_domain_disk_set_driver_type(disk, "qcow2"); gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); gvir_config_domain_disk_set_target_dev(disk, "hda"); devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(disk)); + g_assert(gvir_config_domain_disk_get_disk_type(disk) == GVIR_CONFIG_DOMAIN_DISK_FILE); + g_assert(gvir_config_domain_disk_get_guest_device_type(disk) == GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK); + g_str_check(gvir_config_domain_disk_get_source(disk), "/tmp/foo/bar"); + g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); + g_str_check(gvir_config_domain_disk_get_driver_name(disk), "qemu"); + g_str_check(gvir_config_domain_disk_get_driver_type(disk), "qcow2"); + g_assert(gvir_config_domain_disk_get_target_bus(disk) == GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); + g_str_check(gvir_config_domain_disk_get_target_dev(disk), "hda"); + /* network interfaces node */ GVirConfigDomainInterface *interface; @@ -179,12 +191,8 @@ int main(int argc, char **argv) gvir_config_domain_set_custom_xml(domain, "<foo/>", "ns", "http://bar", NULL); gvir_config_domain_set_custom_xml(domain, "<bar/>", "ns", "http://foo", NULL); - xml = gvir_config_domain_get_custom_xml(domain, "http://foo"); - g_assert(g_strcmp0(xml, "<ns:bar xmlns:ns=\"http://foo\"/>") == 0); - g_free(xml); - xml = gvir_config_domain_get_custom_xml(domain, "http://bar"); - g_assert(g_strcmp0(xml, "<ns:foo xmlns:ns=\"http://bar\"/>") == 0); - g_free(xml); + g_str_check(gvir_config_domain_get_custom_xml(domain, "http://foo"), "<ns:bar xmlns:ns=\"http://foo\"/>"); + g_str_check(gvir_config_domain_get_custom_xml(domain, "http://bar"), "<ns:foo xmlns:ns=\"http://bar\"/>"); xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(domain)); g_print("%s\n\n", xml); -- 1.7.7.6

Not sure if you intentionally left 2/2 out, so ping for this one too :) Christophe On Wed, Feb 08, 2012 at 12:13:03PM +0100, Christophe Fergeau wrote:
--- libvirt-gconfig/tests/test-domain-create.c | 34 +++++++++++++++++---------- 1 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 0cd8304..a92413d 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -32,10 +32,16 @@
const char *features[] = { "foo", "bar", "baz", NULL };
+#define g_str_check(str1, str2) G_STMT_START { \ + char *alloced_str = (str1); \ + g_assert(alloced_str != NULL); \ + g_assert(g_strcmp0(alloced_str, (str2)) == 0); \ + g_free(alloced_str); \ +} G_STMT_END + int main(int argc, char **argv) { GVirConfigDomain *domain; - char *name; GStrv feat; unsigned int i; char *xml; @@ -45,14 +51,12 @@ int main(int argc, char **argv) domain = gvir_config_domain_new(); g_assert(domain != NULL); gvir_config_domain_set_name(domain, "foo"); - name = gvir_config_domain_get_name(domain); - g_assert(name != NULL); - g_assert(strcmp(name, "foo") == 0); - g_free(name); + g_str_check(gvir_config_domain_get_name(domain), "foo");
gvir_config_domain_set_memory(domain, 1234); - gvir_config_domain_set_vcpus(domain, 3); g_assert(gvir_config_domain_get_memory(domain) == 1234); + gvir_config_domain_set_vcpus(domain, 3); + g_assert(gvir_config_domain_get_vcpus(domain) == 3);
gvir_config_domain_set_features(domain, (const GStrv)features); feat = gvir_config_domain_get_features(domain); @@ -102,12 +106,20 @@ int main(int argc, char **argv) gvir_config_domain_disk_set_driver_type(disk, "bar"); gvir_config_domain_disk_set_driver_name(disk, "qemu"); gvir_config_domain_disk_set_driver_cache(disk, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); - g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); gvir_config_domain_disk_set_driver_type(disk, "qcow2"); gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); gvir_config_domain_disk_set_target_dev(disk, "hda"); devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(disk));
+ g_assert(gvir_config_domain_disk_get_disk_type(disk) == GVIR_CONFIG_DOMAIN_DISK_FILE); + g_assert(gvir_config_domain_disk_get_guest_device_type(disk) == GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK); + g_str_check(gvir_config_domain_disk_get_source(disk), "/tmp/foo/bar"); + g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); + g_str_check(gvir_config_domain_disk_get_driver_name(disk), "qemu"); + g_str_check(gvir_config_domain_disk_get_driver_type(disk), "qcow2"); + g_assert(gvir_config_domain_disk_get_target_bus(disk) == GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); + g_str_check(gvir_config_domain_disk_get_target_dev(disk), "hda"); +
/* network interfaces node */ GVirConfigDomainInterface *interface; @@ -179,12 +191,8 @@ int main(int argc, char **argv) gvir_config_domain_set_custom_xml(domain, "<foo/>", "ns", "http://bar", NULL); gvir_config_domain_set_custom_xml(domain, "<bar/>", "ns", "http://foo", NULL);
- xml = gvir_config_domain_get_custom_xml(domain, "http://foo"); - g_assert(g_strcmp0(xml, "<ns:bar xmlns:ns=\"http://foo\"/>") == 0); - g_free(xml); - xml = gvir_config_domain_get_custom_xml(domain, "http://bar"); - g_assert(g_strcmp0(xml, "<ns:foo xmlns:ns=\"http://bar\"/>") == 0); - g_free(xml); + g_str_check(gvir_config_domain_get_custom_xml(domain, "http://foo"), "<ns:bar xmlns:ns=\"http://foo\"/>"); + g_str_check(gvir_config_domain_get_custom_xml(domain, "http://bar"), "<ns:foo xmlns:ns=\"http://bar\"/>");
xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(domain)); g_print("%s\n\n", xml); -- 1.7.7.6
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Fri, Feb 17, 2012 at 02:55:58PM +0100, Christophe Fergeau wrote:
Not sure if you intentionally left 2/2 out, so ping for this one too :)
Christophe
On Wed, Feb 08, 2012 at 12:13:03PM +0100, Christophe Fergeau wrote:
--- libvirt-gconfig/tests/test-domain-create.c | 34 +++++++++++++++++---------- 1 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 0cd8304..a92413d 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -32,10 +32,16 @@
const char *features[] = { "foo", "bar", "baz", NULL };
+#define g_str_check(str1, str2) G_STMT_START { \ + char *alloced_str = (str1); \ + g_assert(alloced_str != NULL); \ + g_assert(g_strcmp0(alloced_str, (str2)) == 0); \ + g_free(alloced_str); \ +} G_STMT_END + int main(int argc, char **argv) { GVirConfigDomain *domain; - char *name; GStrv feat; unsigned int i; char *xml; @@ -45,14 +51,12 @@ int main(int argc, char **argv) domain = gvir_config_domain_new(); g_assert(domain != NULL); gvir_config_domain_set_name(domain, "foo"); - name = gvir_config_domain_get_name(domain); - g_assert(name != NULL); - g_assert(strcmp(name, "foo") == 0); - g_free(name); + g_str_check(gvir_config_domain_get_name(domain), "foo");
gvir_config_domain_set_memory(domain, 1234); - gvir_config_domain_set_vcpus(domain, 3); g_assert(gvir_config_domain_get_memory(domain) == 1234); + gvir_config_domain_set_vcpus(domain, 3); + g_assert(gvir_config_domain_get_vcpus(domain) == 3);
gvir_config_domain_set_features(domain, (const GStrv)features); feat = gvir_config_domain_get_features(domain); @@ -102,12 +106,20 @@ int main(int argc, char **argv) gvir_config_domain_disk_set_driver_type(disk, "bar"); gvir_config_domain_disk_set_driver_name(disk, "qemu"); gvir_config_domain_disk_set_driver_cache(disk, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); - g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); gvir_config_domain_disk_set_driver_type(disk, "qcow2"); gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); gvir_config_domain_disk_set_target_dev(disk, "hda"); devices = g_list_append(devices, GVIR_CONFIG_DOMAIN_DEVICE(disk));
+ g_assert(gvir_config_domain_disk_get_disk_type(disk) == GVIR_CONFIG_DOMAIN_DISK_FILE); + g_assert(gvir_config_domain_disk_get_guest_device_type(disk) == GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK); + g_str_check(gvir_config_domain_disk_get_source(disk), "/tmp/foo/bar"); + g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); + g_str_check(gvir_config_domain_disk_get_driver_name(disk), "qemu"); + g_str_check(gvir_config_domain_disk_get_driver_type(disk), "qcow2"); + g_assert(gvir_config_domain_disk_get_target_bus(disk) == GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); + g_str_check(gvir_config_domain_disk_get_target_dev(disk), "hda"); +
/* network interfaces node */ GVirConfigDomainInterface *interface; @@ -179,12 +191,8 @@ int main(int argc, char **argv) gvir_config_domain_set_custom_xml(domain, "<foo/>", "ns", "http://bar", NULL); gvir_config_domain_set_custom_xml(domain, "<bar/>", "ns", "http://foo", NULL);
- xml = gvir_config_domain_get_custom_xml(domain, "http://foo"); - g_assert(g_strcmp0(xml, "<ns:bar xmlns:ns=\"http://foo\"/>") == 0); - g_free(xml); - xml = gvir_config_domain_get_custom_xml(domain, "http://bar"); - g_assert(g_strcmp0(xml, "<ns:foo xmlns:ns=\"http://bar\"/>") == 0); - g_free(xml); + g_str_check(gvir_config_domain_get_custom_xml(domain, "http://foo"), "<ns:bar xmlns:ns=\"http://foo\"/>"); + g_str_check(gvir_config_domain_get_custom_xml(domain, "http://bar"), "<ns:foo xmlns:ns=\"http://bar\"/>");
xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(domain)); g_print("%s\n\n", xml);
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Ping? On Wed, Feb 08, 2012 at 12:13:02PM +0100, Christophe Fergeau wrote:
--- libvirt-gconfig/libvirt-gconfig-domain-disk.c | 23 +++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-disk.h | 12 ++++++++++++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ libvirt-gconfig/tests/test-domain-create.c | 2 ++ 4 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.c b/libvirt-gconfig/libvirt-gconfig-domain-disk.c index b2861e4..afa7eda 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-disk.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.c @@ -172,6 +172,18 @@ void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, "driver", "type", driver_type); }
+void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, + GVirConfigDomainDiskCacheType cache_type) +{ + const char *cache_str; + + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); + cache_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_DISK_CACHE_TYPE, cache_type); + g_return_if_fail(cache_str != NULL); + gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), + "driver", "cache", cache_str); +} + void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk, GVirConfigDomainDiskBus bus) { @@ -269,6 +281,17 @@ gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk) "driver", "type"); }
+GVirConfigDomainDiskCacheType +gvir_config_domain_disk_get_driver_cache(GVirConfigDomainDisk *disk) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), + GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT); + + return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk), + "driver", "cache", + GVIR_CONFIG_TYPE_DOMAIN_DISK_CACHE_TYPE, + GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT); +} GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk) { diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.h b/libvirt-gconfig/libvirt-gconfig-domain-disk.h index 3359049..4b16b80 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-disk.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.h @@ -75,6 +75,15 @@ typedef enum { } GVirConfigDomainDiskBus;
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_GUEST_DEVICE_DISK, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_FLOPPY, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_CDROM @@ -100,6 +109,8 @@ void gvir_config_domain_disk_set_snapshot_type(GVirConfigDomainDisk *disk, GVirConfigDomainDiskSnapshotType type); void gvir_config_domain_disk_set_source(GVirConfigDomainDisk *disk, const char *source); +void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, + GVirConfigDomainDiskCacheType cache_type); void gvir_config_domain_disk_set_driver_name(GVirConfigDomainDisk *disk, const char *driver_name); void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, @@ -113,6 +124,7 @@ GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainD 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); +GVirConfigDomainDiskCacheType gvir_config_domain_disk_get_driver_cache(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); diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index ab2c7bf..96ce58f 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -69,11 +69,14 @@ LIBVIRT_GCONFIG_0.0.4 {
gvir_config_domain_disk_get_type; gvir_config_domain_disk_bus_get_type; + gvir_config_domain_disk_cache_type_get_type; gvir_config_domain_disk_guest_device_type_get_type; gvir_config_domain_disk_snapshot_type_get_type; 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_cache; + gvir_config_domain_disk_set_driver_cache; gvir_config_domain_disk_get_driver_name; gvir_config_domain_disk_set_driver_name; gvir_config_domain_disk_get_driver_type; diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 821e0b0..0cd8304 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -101,6 +101,8 @@ int main(int argc, char **argv) gvir_config_domain_disk_set_driver_name(disk, "foo"); gvir_config_domain_disk_set_driver_type(disk, "bar"); gvir_config_domain_disk_set_driver_name(disk, "qemu"); + gvir_config_domain_disk_set_driver_cache(disk, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); + g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); gvir_config_domain_disk_set_driver_type(disk, "qcow2"); gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); gvir_config_domain_disk_set_target_dev(disk, "hda"); -- 1.7.7.6
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Fri, Feb 17, 2012 at 02:22:31PM +0100, Christophe Fergeau wrote:
Ping?
On Wed, Feb 08, 2012 at 12:13:02PM +0100, Christophe Fergeau wrote:
--- libvirt-gconfig/libvirt-gconfig-domain-disk.c | 23 +++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-disk.h | 12 ++++++++++++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ libvirt-gconfig/tests/test-domain-create.c | 2 ++ 4 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.c b/libvirt-gconfig/libvirt-gconfig-domain-disk.c index b2861e4..afa7eda 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-disk.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.c @@ -172,6 +172,18 @@ void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, "driver", "type", driver_type); }
+void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, + GVirConfigDomainDiskCacheType cache_type) +{ + const char *cache_str; + + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk)); + cache_str = gvir_config_genum_get_nick(GVIR_CONFIG_TYPE_DOMAIN_DISK_CACHE_TYPE, cache_type); + g_return_if_fail(cache_str != NULL); + gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(disk), + "driver", "cache", cache_str); +} + void gvir_config_domain_disk_set_target_bus(GVirConfigDomainDisk *disk, GVirConfigDomainDiskBus bus) { @@ -269,6 +281,17 @@ gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk) "driver", "type"); }
+GVirConfigDomainDiskCacheType +gvir_config_domain_disk_get_driver_cache(GVirConfigDomainDisk *disk) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), + GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT); + + return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(disk), + "driver", "cache", + GVIR_CONFIG_TYPE_DOMAIN_DISK_CACHE_TYPE, + GVIR_CONFIG_DOMAIN_DISK_CACHE_DEFAULT); +} GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk) { diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.h b/libvirt-gconfig/libvirt-gconfig-domain-disk.h index 3359049..4b16b80 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-disk.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.h @@ -75,6 +75,15 @@ typedef enum { } GVirConfigDomainDiskBus;
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_GUEST_DEVICE_DISK, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_FLOPPY, GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_CDROM @@ -100,6 +109,8 @@ void gvir_config_domain_disk_set_snapshot_type(GVirConfigDomainDisk *disk, GVirConfigDomainDiskSnapshotType type); void gvir_config_domain_disk_set_source(GVirConfigDomainDisk *disk, const char *source); +void gvir_config_domain_disk_set_driver_cache(GVirConfigDomainDisk *disk, + GVirConfigDomainDiskCacheType cache_type); void gvir_config_domain_disk_set_driver_name(GVirConfigDomainDisk *disk, const char *driver_name); void gvir_config_domain_disk_set_driver_type(GVirConfigDomainDisk *disk, @@ -113,6 +124,7 @@ GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainD 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); +GVirConfigDomainDiskCacheType gvir_config_domain_disk_get_driver_cache(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); diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index ab2c7bf..96ce58f 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -69,11 +69,14 @@ LIBVIRT_GCONFIG_0.0.4 {
gvir_config_domain_disk_get_type; gvir_config_domain_disk_bus_get_type; + gvir_config_domain_disk_cache_type_get_type; gvir_config_domain_disk_guest_device_type_get_type; gvir_config_domain_disk_snapshot_type_get_type; 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_cache; + gvir_config_domain_disk_set_driver_cache; gvir_config_domain_disk_get_driver_name; gvir_config_domain_disk_set_driver_name; gvir_config_domain_disk_get_driver_type; diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 821e0b0..0cd8304 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -101,6 +101,8 @@ int main(int argc, char **argv) gvir_config_domain_disk_set_driver_name(disk, "foo"); gvir_config_domain_disk_set_driver_type(disk, "bar"); gvir_config_domain_disk_set_driver_name(disk, "qemu"); + gvir_config_domain_disk_set_driver_cache(disk, GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); + g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE); gvir_config_domain_disk_set_driver_type(disk, "qcow2"); gvir_config_domain_disk_set_target_bus(disk, GVIR_CONFIG_DOMAIN_DISK_BUS_IDE); gvir_config_domain_disk_set_target_dev(disk, "hda");
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
participants (2)
-
Christophe Fergeau
-
Daniel P. Berrange