Merge "libvirt: Pass context, instance to '_create_guest'"

This commit is contained in:
Zuul 2020-08-24 17:43:15 +00:00 committed by Gerrit Code Review
commit 95257d9b8b
2 changed files with 52 additions and 9 deletions

View File

@ -18613,6 +18613,41 @@ class LibvirtConnTestCase(test.NoDBTestCase,
dom_mock.ID.assert_called_once_with()
mock_get_domain.assert_called_once_with(instance)
@mock.patch.object(libvirt_guest.Guest, 'create')
def test_create_guest__with_callback(
self, mock_guest_create,
):
"""Check that callback function is called if provided."""
instance = objects.Instance(**self.test_instance)
xml = '<xml>'
callback = mock.Mock()
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
drvr.supports_vtpm = False
drvr._create_guest(
self.context, xml, instance, post_xml_callback=callback)
mock_guest_create.assert_called_once_with(xml, drvr._host)
mock_guest_create.return_value.launch.assert_called_once_with(
pause=False)
callback.assert_called_once()
@mock.patch.object(libvirt_guest.Guest, 'create')
def test_create_guest__no_launch(self, mock_guest_create):
"""Check that guest is not started unless requested."""
instance = objects.Instance(**self.test_instance)
xml = '<xml>'
drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
drvr.supports_vtpm = False
drvr._create_guest(
self.context, xml, instance, power_on=False, pause=False)
mock_guest_create.assert_called_once_with(xml, drvr._host)
mock_guest_create.return_value.launch.assert_not_called()
@mock.patch('nova.virt.disk.api.clean_lxc_namespace')
@mock.patch('nova.virt.libvirt.driver.LibvirtDriver.get_info')
@mock.patch('nova.virt.disk.api.setup_container')
@ -19408,8 +19443,8 @@ class LibvirtConnTestCase(test.NoDBTestCase,
with test.nested(
mock.patch.object(drvr, 'plug_vifs'),
mock.patch.object(drvr, '_create_guest'),
) as (plug_vifs, create_domain):
create_domain.return_value = libvirt_guest.Guest(mock_dom)
) as (plug_vifs, create_guest):
create_guest.return_value = libvirt_guest.Guest(mock_dom)
guest = drvr._create_guest_with_network(
self.context, fake_xml, instance, network_info,
@ -19417,8 +19452,9 @@ class LibvirtConnTestCase(test.NoDBTestCase,
plug_vifs.assert_called_once_with(instance, network_info)
pause = self._get_pause_flag(drvr, network_info)
create_domain.assert_called_once_with(
fake_xml, pause=pause, power_on=True, post_xml_callback=None)
create_guest.assert_called_once_with(
self.context, fake_xml, instance, pause=pause, power_on=True,
post_xml_callback=None)
self.assertEqual(mock_dom, guest._domain)
def test_get_guest_storage_config(self):
@ -23342,7 +23378,8 @@ class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
domain_xml = [None]
def fake_create_guest(
xml, power_on=True, pause=False, post_xml_callback=None
context, xml, instance, power_on=True, pause=False,
post_xml_callback=None
):
domain_xml[0] = xml
if post_xml_callback is not None:
@ -23771,7 +23808,8 @@ class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
mock_remove_volumes, mock_glob):
drvr.unrescue(self.context, instance)
mock_destroy.assert_called_once_with(instance)
mock_create.assert_called_once_with('fake_unrescue_xml')
mock_create.assert_called_once_with(
self.context, 'fake_unrescue_xml', instance)
self.assertEqual(2, mock_del.call_count)
self.assertEqual(unrescue_xml_path,
mock_del.call_args_list[0][0][0])

View File

@ -3567,7 +3567,9 @@ class LibvirtDriver(driver.ComputeDriver):
mdevs=mdevs,
block_device_info=block_device_info)
self._destroy(instance)
self._create_guest(xml, post_xml_callback=gen_confdrive)
self._create_guest(
context, xml, instance, post_xml_callback=gen_confdrive,
)
def unrescue(
self,
@ -3580,7 +3582,7 @@ class LibvirtDriver(driver.ComputeDriver):
xml = libvirt_utils.load_file(unrescue_xml_path)
self._destroy(instance)
self._create_guest(xml)
self._create_guest(context, xml, instance)
os.unlink(unrescue_xml_path)
rescue_files = os.path.join(instance_dir, "*.rescue")
for rescue_file in glob.iglob(rescue_files):
@ -6477,7 +6479,9 @@ class LibvirtDriver(driver.ComputeDriver):
def _create_guest(
self,
context: nova_context.RequestContext,
xml: str,
instance: 'objects.Instance',
power_on: bool = True,
pause: bool = False,
post_xml_callback: ty.Callable = None,
@ -6559,7 +6563,8 @@ class LibvirtDriver(driver.ComputeDriver):
instance.image_meta,
block_device_info):
guest = self._create_guest(
xml, pause=pause, power_on=power_on,
context, xml, instance,
pause=pause, power_on=power_on,
post_xml_callback=post_xml_callback)
except exception.VirtualInterfaceCreateException:
# Neutron reported failure and we didn't swallow it, so