Adjust the libvirt config classes' API contract for parsing

Don't not automatically invoke the 'parse_dom' method from
the LibvirtConfigObject constructor, because this is too
early in construction - no child class constructors have
initialized yet.

Instead require the 'parse_dom' method to be invoked after
the bare object has been constructed. Also make the default
impl of 'parse_dom' take an etree.Element instance and
validate its root element name. Add a convenient 'parse_str'
method for turning a XML string into an etree.Element
instance & parsing it.

Change-Id: I7eda2b59869f3b4ef9dce1602cbb05f7662f4528
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange
2012-06-19 14:22:44 +01:00
parent 419da8898c
commit e159a37d0a

View File

@@ -53,6 +53,11 @@ class LibvirtConfigTest(LibvirtConfigBaseTest):
xml = etree.tostring(root) xml = etree.tostring(root)
self.assertXmlEqual(xml, "<demo><foo>bar</foo></demo>") self.assertXmlEqual(xml, "<demo><foo>bar</foo></demo>")
def test_config_parse(self):
inxml = "<demo><foo/></demo>"
obj = config.LibvirtConfigObject(root_name="demo")
obj.parse_str(inxml)
class LibvirtConfigGuestTimerTest(LibvirtConfigBaseTest): class LibvirtConfigGuestTimerTest(LibvirtConfigBaseTest):
def test_config_platform(self): def test_config_platform(self):