Merge "libvirt: Fix domain creation for LXC"
This commit is contained in:
commit
c44f919f8d
|
@ -2566,7 +2566,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||
conn._create_domain_and_network,
|
||||
self.context,
|
||||
'xml',
|
||||
mock_instance, None)
|
||||
mock_instance, None, None)
|
||||
|
||||
mock_teardown.assert_called_with(container_dir='/tmp/rootfs')
|
||||
|
||||
|
@ -7605,7 +7605,8 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||
libvirt_utils.get_instance_path(instance),
|
||||
disk_info_json)
|
||||
conn._create_domain_and_network(self.context, dummyxml, instance,
|
||||
network_info, block_device_info,
|
||||
network_info, disk_info,
|
||||
block_device_info=block_device_info,
|
||||
reboot=True, vifs_already_plugged=True)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
|
@ -7904,15 +7905,23 @@ class LibvirtConnTestCase(test.NoDBTestCase):
|
|||
mock.patch.object(conn, '_attach_pci_devices'),
|
||||
mock.patch.object(pci_manager, 'get_instance_pci_devs',
|
||||
return_value='fake_pci_devs'),
|
||||
mock.patch.object(compute_utils, 'get_image_metadata'),
|
||||
mock.patch.object(blockinfo, 'get_disk_info'),
|
||||
) as (_get_existing_domain_xml, _create_domain_and_network,
|
||||
_attach_pci_devices, get_instance_pci_devs):
|
||||
_attach_pci_devices, get_instance_pci_devs, get_image_metadata,
|
||||
get_disk_info):
|
||||
get_image_metadata.return_value = {'bar': 234}
|
||||
|
||||
disk_info = {'foo': 123}
|
||||
get_disk_info.return_value = disk_info
|
||||
|
||||
conn.resume(self.context, instance, network_info,
|
||||
block_device_info)
|
||||
_get_existing_domain_xml.assert_has_calls([mock.call(instance,
|
||||
network_info, block_device_info)])
|
||||
_create_domain_and_network.assert_has_calls([mock.call(
|
||||
self.context, dummyxml,
|
||||
instance, network_info,
|
||||
instance, network_info, disk_info,
|
||||
block_device_info=block_device_info,
|
||||
vifs_already_plugged=True)])
|
||||
_attach_pci_devices.assert_has_calls([mock.call('fake_dom',
|
||||
|
@ -9318,7 +9327,7 @@ Active: 8381604 kB
|
|||
mock.patch.object(conn.firewall_driver, 'prepare_instance_filter'),
|
||||
mock.patch.object(conn.firewall_driver, 'apply_instance_filter')):
|
||||
conn._create_domain_and_network(self.context, 'xml',
|
||||
mock_instance, [])
|
||||
mock_instance, [], None)
|
||||
|
||||
self.assertEqual('/dev/nbd0', inst_sys_meta['rootfs_device_name'])
|
||||
mock_instance.save.assert_not_called()
|
||||
|
@ -9381,7 +9390,7 @@ Active: 8381604 kB
|
|||
mock.patch.object(conn.firewall_driver, 'prepare_instance_filter'),
|
||||
mock.patch.object(conn.firewall_driver, 'apply_instance_filter')):
|
||||
conn._create_domain_and_network(self.context, 'xml',
|
||||
mock_instance, [])
|
||||
mock_instance, [], None)
|
||||
|
||||
self.assertEqual('/dev/nbd0', inst_sys_meta['rootfs_device_name'])
|
||||
mock_instance.save.assert_not_called()
|
||||
|
@ -9430,7 +9439,7 @@ Active: 8381604 kB
|
|||
mock.patch.object(conn.firewall_driver, 'prepare_instance_filter'),
|
||||
mock.patch.object(conn.firewall_driver, 'apply_instance_filter')):
|
||||
conn._create_domain_and_network(self.context, 'xml',
|
||||
mock_instance, [])
|
||||
mock_instance, [], None)
|
||||
|
||||
self.assertEqual('/dev/nbd0', inst_sys_meta['rootfs_device_name'])
|
||||
mock_instance.save.assert_not_called()
|
||||
|
@ -9886,7 +9895,7 @@ Active: 8381604 kB
|
|||
conn._create_domain_and_network,
|
||||
self.context,
|
||||
'xml',
|
||||
instance, None)
|
||||
instance, None, None)
|
||||
|
||||
def test_create_without_pause(self):
|
||||
self.flags(virt_type='lxc', group='libvirt')
|
||||
|
@ -9907,7 +9916,7 @@ Active: 8381604 kB
|
|||
mock.patch.object(conn, 'cleanup')) as (
|
||||
_handler, cleanup, firewall_driver, create, plug_vifs):
|
||||
domain = conn._create_domain_and_network(self.context, 'xml',
|
||||
instance, None)
|
||||
instance, None, None)
|
||||
self.assertEqual(0, create.call_args_list[0][1]['launch_flags'])
|
||||
self.assertEqual(0, domain.resume.call_count)
|
||||
|
||||
|
@ -9948,7 +9957,7 @@ Active: 8381604 kB
|
|||
@mock.patch.object(conn, 'cleanup')
|
||||
def test_create(cleanup, create, fw_driver, plug_vifs):
|
||||
domain = conn._create_domain_and_network(self.context, 'xml',
|
||||
instance, vifs,
|
||||
instance, vifs, None,
|
||||
power_on=power_on)
|
||||
plug_vifs.assert_called_with(instance, vifs)
|
||||
|
||||
|
@ -10057,7 +10066,7 @@ Active: 8381604 kB
|
|||
|
||||
mock_volume = mock.MagicMock()
|
||||
mock_volume.__getitem__.side_effect = fake_getitem
|
||||
bdi = {'block_device_mapping': [mock_volume]}
|
||||
block_device_info = {'block_device_mapping': [mock_volume]}
|
||||
network_info = [network_model.VIF(id='1'),
|
||||
network_model.VIF(id='2', active=True)]
|
||||
|
||||
|
@ -10073,9 +10082,9 @@ Active: 8381604 kB
|
|||
prepare_instance_filter, create_domain, apply_instance_filter):
|
||||
create_domain.return_value = mock_dom
|
||||
|
||||
domain = conn._create_domain_and_network(self.context, fake_xml,
|
||||
instance, network_info,
|
||||
block_device_info=bdi)
|
||||
domain = conn._create_domain_and_network(
|
||||
self.context, fake_xml, instance, network_info, None,
|
||||
block_device_info=block_device_info)
|
||||
|
||||
get_encryption_metadata.assert_called_once_with(self.context,
|
||||
conn._volume_api, fake_volume_id, connection_info)
|
||||
|
@ -10902,7 +10911,7 @@ class LibvirtDriverTestCase(test.NoDBTestCase):
|
|||
self.assertFalse(inject_files)
|
||||
|
||||
def fake_create_domain_and_network(
|
||||
context, xml, instance, network_info,
|
||||
context, xml, instance, network_info, disk_info,
|
||||
block_device_info=None, power_on=True, reboot=False,
|
||||
vifs_already_plugged=False):
|
||||
self.fake_create_domain_called = True
|
||||
|
@ -11045,7 +11054,7 @@ class LibvirtDriverTestCase(test.NoDBTestCase):
|
|||
self.stubs.Set(self.libvirtconnection, '_get_guest_xml',
|
||||
lambda *a, **k: None)
|
||||
self.stubs.Set(self.libvirtconnection, '_create_domain_and_network',
|
||||
lambda *a: None)
|
||||
lambda *a, **kw: None)
|
||||
self.stubs.Set(loopingcall, 'FixedIntervalLoopingCall',
|
||||
lambda *a, **k: FakeLoopingCall())
|
||||
|
||||
|
|
|
@ -2063,7 +2063,9 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
# Initialize all the necessary networking, block devices and
|
||||
# start the instance.
|
||||
self._create_domain_and_network(context, xml, instance, network_info,
|
||||
block_device_info, reboot=True,
|
||||
disk_info,
|
||||
block_device_info=block_device_info,
|
||||
reboot=True,
|
||||
vifs_already_plugged=True)
|
||||
self._prepare_pci_devices_for_use(
|
||||
pci_manager.get_instance_pci_devs(instance, 'all'))
|
||||
|
@ -2189,10 +2191,18 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
|
||||
def resume(self, context, instance, network_info, block_device_info=None):
|
||||
"""resume the specified instance."""
|
||||
image_meta = compute_utils.get_image_metadata(context,
|
||||
self._image_api, instance.image_ref, instance)
|
||||
|
||||
disk_info = blockinfo.get_disk_info(
|
||||
CONF.libvirt.virt_type, instance,
|
||||
block_device_info=block_device_info, image_meta=image_meta)
|
||||
|
||||
xml = self._get_existing_domain_xml(instance, network_info,
|
||||
block_device_info)
|
||||
dom = self._create_domain_and_network(context, xml, instance,
|
||||
network_info, block_device_info=block_device_info,
|
||||
network_info, disk_info,
|
||||
block_device_info=block_device_info,
|
||||
vifs_already_plugged=True)
|
||||
self._attach_pci_devices(dom,
|
||||
pci_manager.get_instance_pci_devs(instance))
|
||||
|
@ -2311,7 +2321,8 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
block_device_info=block_device_info,
|
||||
write_to_disk=True)
|
||||
self._create_domain_and_network(context, xml, instance, network_info,
|
||||
block_device_info, disk_info=disk_info)
|
||||
disk_info,
|
||||
block_device_info=block_device_info)
|
||||
LOG.debug("Instance is running", instance=instance)
|
||||
|
||||
def _wait_for_boot():
|
||||
|
@ -4115,9 +4126,9 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
for vif in network_info if vif.get('active', True) is False]
|
||||
|
||||
def _create_domain_and_network(self, context, xml, instance, network_info,
|
||||
block_device_info=None, power_on=True,
|
||||
reboot=False, vifs_already_plugged=False,
|
||||
disk_info=None):
|
||||
disk_info, block_device_info=None,
|
||||
power_on=True, reboot=False,
|
||||
vifs_already_plugged=False):
|
||||
|
||||
"""Do required network setup and create domain."""
|
||||
block_device_mapping = driver.block_device_info_get_mapping(
|
||||
|
@ -5823,7 +5834,9 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
block_device_info=block_device_info,
|
||||
write_to_disk=True)
|
||||
self._create_domain_and_network(context, xml, instance, network_info,
|
||||
block_device_info, power_on,
|
||||
disk_info,
|
||||
block_device_info=block_device_info,
|
||||
power_on=power_on,
|
||||
vifs_already_plugged=True)
|
||||
if power_on:
|
||||
timer = loopingcall.FixedIntervalLoopingCall(
|
||||
|
@ -5863,7 +5876,9 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
xml = self._get_guest_xml(context, instance, network_info, disk_info,
|
||||
block_device_info=block_device_info)
|
||||
self._create_domain_and_network(context, xml, instance, network_info,
|
||||
block_device_info, power_on)
|
||||
disk_info,
|
||||
block_device_info=block_device_info,
|
||||
power_on=power_on)
|
||||
|
||||
if power_on:
|
||||
timer = loopingcall.FixedIntervalLoopingCall(
|
||||
|
|
Loading…
Reference in New Issue