From: "Daniel P. Berrange" <[email protected]>
When setting the filesystem source type, the code forgot to
update priv->type. Thus when setting the source element,
the incorrect attribute was being used.
---
.../libvirt-gconfig-domain-device-private.h | 3 +++
libvirt-gconfig/libvirt-gconfig-domain-device.c | 2 +-
libvirt-gconfig/libvirt-gconfig-domain-filesys.c | 28 ++++++++++++++++++++
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
b/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
index f50946a..3ec83c3 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
@@ -37,6 +37,9 @@ GVirConfigDomainDevice *
gvir_config_domain_disk_new_from_tree(GVirConfigXmlDoc *doc,
xmlNodePtr tree);
GVirConfigDomainDevice *
+gvir_config_domain_filesys_new_from_tree(GVirConfigXmlDoc *doc,
+ xmlNodePtr tree);
+GVirConfigDomainDevice *
gvir_config_domain_graphics_new_from_tree(GVirConfigXmlDoc *doc,
xmlNodePtr tree);
GVirConfigDomainDevice *
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-device.c
b/libvirt-gconfig/libvirt-gconfig-domain-device.c
index 9a7fae5..60d6bcc 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-device.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-device.c
@@ -62,7 +62,7 @@ gvir_config_domain_device_new_from_tree(GVirConfigXmlDoc *doc,
if (xmlStrEqual(tree->name, (xmlChar*)"disk")) {
return gvir_config_domain_disk_new_from_tree(doc, tree);
} else if (xmlStrEqual(tree->name, (xmlChar*)"filesystem")) {
- type = GVIR_CONFIG_TYPE_DOMAIN_FILESYS;
+ return gvir_config_domain_filesys_new_from_tree(doc, tree);
} else if (xmlStrEqual(tree->name, (xmlChar*)"controller")) {
return gvir_config_domain_controller_new_from_tree(doc, tree);
} else if (xmlStrEqual(tree->name, (xmlChar*)"lease")) {
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-filesys.c
b/libvirt-gconfig/libvirt-gconfig-domain-filesys.c
index 904a7a3..cc2f604 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-filesys.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-filesys.c
@@ -69,6 +69,33 @@ GVirConfigDomainFilesys
*gvir_config_domain_filesys_new_from_xml(const gchar *xm
return GVIR_CONFIG_DOMAIN_FILESYS(object);
}
+GVirConfigDomainDevice *
+gvir_config_domain_filesys_new_from_tree(GVirConfigXmlDoc *doc,
+ xmlNodePtr tree)
+{
+ GVirConfigObject *object;
+ GVirConfigDomainFilesys *filesys;
+ GVirConfigDomainFilesysType type;
+ const char *type_str;
+
+ type_str = gvir_config_xml_get_attribute_content(tree, "type");
+ if (type_str == NULL)
+ return NULL;
+
+ type = gvir_config_genum_get_value(GVIR_CONFIG_TYPE_DOMAIN_FILESYS_TYPE,
+ type_str,
+ GVIR_CONFIG_DOMAIN_FILESYS_FILE);
+ if (type == -1)
+ return NULL;
+
+ object = gvir_config_object_new_from_tree(GVIR_CONFIG_TYPE_DOMAIN_FILESYS,
+ doc, NULL, tree);
+ filesys = GVIR_CONFIG_DOMAIN_FILESYS(object);
+ filesys->priv->type = type;
+
+ return GVIR_CONFIG_DOMAIN_DEVICE(object);
+}
+
void gvir_config_domain_filesys_set_type(GVirConfigDomainFilesys *filesys,
GVirConfigDomainFilesysType type)
{
@@ -79,6 +106,7 @@ void
gvir_config_domain_filesys_set_type(GVirConfigDomainFilesys *filesys,
GVIR_CONFIG_TYPE_DOMAIN_FILESYS_TYPE,
type,
NULL);
+ filesys->priv->type = type;
}
void gvir_config_domain_filesys_set_access_type(GVirConfigDomainFilesys
*filesys,
--
1.7.10.2
_______________________________________________
virt-tools-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-tools-list