summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCole Robinson <crobinso@redhat.com>2014-01-25 14:57:10 -0500
committerCole Robinson <crobinso@redhat.com>2014-01-25 17:20:30 -0500
commit9f5a842a3ab2bea5ba2ff6eb60206b30a1ad8a22 (patch)
tree49c56adb4453367360d1ee05a9fac5ce5dde4f0f
parent16c8c31cbd66ff8ad24bef970773dcc261f8c114 (diff)
downloadvirt-manager-9f5a842a3ab2bea5ba2ff6eb60206b30a1ad8a22.tar.gz
xmlbuilder: Make clear() remove unknown XML properties
-rw-r--r--tests/xmlparse-xml/clear-cpu-unknown-vals-in.xml20
-rw-r--r--tests/xmlparse-xml/clear-cpu-unknown-vals-out.xml16
-rw-r--r--tests/xmlparse.py10
-rw-r--r--virtinst/xmlbuilder.py3
4 files changed, 49 insertions, 0 deletions
diff --git a/tests/xmlparse-xml/clear-cpu-unknown-vals-in.xml b/tests/xmlparse-xml/clear-cpu-unknown-vals-in.xml
new file mode 100644
index 00000000..26434081
--- /dev/null
+++ b/tests/xmlparse-xml/clear-cpu-unknown-vals-in.xml
@@ -0,0 +1,20 @@
+<domain type="test">
+ <name>test-cpu-unknown-clear</name>
+ <memory unit="KiB">8388608</memory>
+ <currentMemory unit="KiB">2097152</currentMemory>
+ <vcpu placement="static">2</vcpu>
+ <os>
+ <type arch="i686">hvm</type>
+ <boot dev="hd"/>
+ </os>
+ <cpu>
+ <foo bar="baz"/>
+ <blah/>
+ </cpu>
+ <clock offset="utc"/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ </devices>
+</domain>
diff --git a/tests/xmlparse-xml/clear-cpu-unknown-vals-out.xml b/tests/xmlparse-xml/clear-cpu-unknown-vals-out.xml
new file mode 100644
index 00000000..50c06b8f
--- /dev/null
+++ b/tests/xmlparse-xml/clear-cpu-unknown-vals-out.xml
@@ -0,0 +1,16 @@
+<domain type="test">
+ <name>test-cpu-unknown-clear</name>
+ <memory unit="KiB">8388608</memory>
+ <currentMemory unit="KiB">2097152</currentMemory>
+ <vcpu placement="static">2</vcpu>
+ <os>
+ <type arch="i686">hvm</type>
+ <boot dev="hd"/>
+ </os>
+ <clock offset="utc"/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ </devices>
+</domain>
diff --git a/tests/xmlparse.py b/tests/xmlparse.py
index 5e149688..ef62757b 100644
--- a/tests/xmlparse.py
+++ b/tests/xmlparse.py
@@ -1104,6 +1104,16 @@ class XMLParseTest(unittest.TestCase):
# Misc tests #
##############
+ def testCPUUnknownClear(self):
+ # Make sure .clear() even removes XML elements we don't know about
+ basename = "clear-cpu-unknown-vals"
+ infile = "tests/xmlparse-xml/%s-in.xml" % basename
+ outfile = "tests/xmlparse-xml/%s-out.xml" % basename
+ guest = virtinst.Guest(conn, parsexml=file(infile).read())
+
+ guest.cpu.clear()
+ utils.diff_compare(guest.get_xml_config(), outfile)
+
def testzzzzCheckProps(self):
# pylint: disable=W0212
# Access to protected member, needed to unittest stuff
diff --git a/virtinst/xmlbuilder.py b/virtinst/xmlbuilder.py
index e1a5fe11..9416af27 100644
--- a/virtinst/xmlbuilder.py
+++ b/virtinst/xmlbuilder.py
@@ -855,6 +855,9 @@ class XMLBuilder(object):
for prop in props:
prop.clear(self)
+ _remove_xpath_node(self._xmlstate.xml_ctx,
+ self.get_root_xpath())
+
def validate(self):
"""
Validate any set values and raise an exception if there's