Return instance of Guest from method write_instance_config

We expect an instance of Guest, so remove the TODO notice and
return it.

Change-Id: I9c55883cca03f7492ba100fd60d9f2e58aa71d95
This commit is contained in:
ChangBo Guo(gcb) 2016-01-08 17:03:15 +08:00 committed by ChangBo Guo(gcb)
parent c40b5fbc1d
commit a6e946364e
3 changed files with 24 additions and 10 deletions

View File

@ -869,9 +869,24 @@ Active: 8381604 kB
@mock.patch.object(fakelibvirt.virConnect, "defineXML")
def test_write_instance_config(self, mock_defineXML):
xml = "<x><name>foo</name></x>"
self.host.write_instance_config(xml)
mock_defineXML.assert_called_once_with(xml)
fake_dom_xml = """
<domain type='kvm'>
<uuid>cef19ce0-0ca2-11df-855d-b19fbce37686</uuid>
<devices>
<disk type='file'>
<source file='filename'/>
</disk>
</devices>
</domain>
"""
conn = self.host.get_connection()
dom = fakelibvirt.Domain(conn,
fake_dom_xml,
False)
mock_defineXML.return_value = dom
guest = self.host.write_instance_config(fake_dom_xml)
mock_defineXML.assert_called_once_with(fake_dom_xml)
self.assertIsInstance(guest, libvirt_guest.Guest)
@mock.patch.object(fakelibvirt.virConnect, "nodeDeviceLookupByName")
def test_device_lookup_by_name(self, mock_nodeDeviceLookupByName):

View File

@ -120,14 +120,12 @@ class Guest(object):
:returns guest.Guest: Guest ready to be launched
"""
try:
# TODO(sahid): Host.write_instance_config should return
# an instance of Guest
domain = host.write_instance_config(xml)
guest = host.write_instance_config(xml)
except Exception:
with excutils.save_and_reraise_exception():
LOG.error(_LE('Error defining a domain with XML: %s'),
LOG.error(_LE('Error defining a guest with XML: %s'),
encodeutils.safe_decode(xml))
return cls(domain)
return guest
def launch(self, pause=False):
"""Starts a created guest.

View File

@ -855,9 +855,10 @@ class Host(object):
:param xml: XML domain definition of the guest.
:returns: a virDomain instance
:returns: an instance of Guest
"""
return self.get_connection().defineXML(xml)
domain = self.get_connection().defineXML(xml)
return libvirt_guest.Guest(domain)
def device_lookup_by_name(self, name):
"""Lookup a node device by its name.