diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-02-05 15:48:25 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-02-05 15:48:25 +0000 |
commit | e8bc157f85f052fd0c9cab05d13730ab5c41bf58 (patch) | |
tree | 2aab9812ac319386ee51354900f9c49d5723bb21 | |
parent | c3a8db4cb8c402332ff8a524096cb5770cd22904 (diff) | |
parent | fe61970b52d788f1db6250e1a69342488f87e29b (diff) | |
download | nova-e8bc157f85f052fd0c9cab05d13730ab5c41bf58.tar.gz |
Merge "libvirt: generate proper config for PCS containers"
-rw-r--r-- | nova/tests/unit/virt/libvirt/test_driver.py | 35 | ||||
-rw-r--r-- | nova/virt/libvirt/driver.py | 16 |
2 files changed, 48 insertions, 3 deletions
diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 7f9a9d0edf..6e03a8f3a4 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -11220,7 +11220,7 @@ Active: 8381604 kB mock.patch.object(drvr, '_set_cache_mode') ) as (volume_save, connect_volume, get_volume_config, set_cache_mode): devices = drvr._get_guest_storage_config(instance, None, - disk_info, False, bdi, flavor) + disk_info, False, bdi, flavor, "hvm") self.assertEqual(3, len(devices)) self.assertEqual('/dev/vdb', instance.default_ephemeral_device) @@ -11559,6 +11559,39 @@ Active: 8381604 kB self.assertIsInstance(cfg.devices[5], vconfig.LibvirtConfigGuestVideo) + def test_get_guest_config_parallels_ct(self): + self.flags(virt_type='parallels', group='libvirt') + drvr = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) + ct_instance = self.test_instance.copy() + ct_instance["vm_mode"] = vm_mode.EXE + instance_ref = objects.Instance(**ct_instance) + flavor = instance_ref.get_flavor() + flavor.extra_specs = {} + + cfg = drvr._get_guest_config(instance_ref, + _fake_network_info(self.stubs, 1), + None, {'mapping': {}}, flavor=flavor) + self.assertEqual("parallels", cfg.virt_type) + self.assertEqual(instance_ref["uuid"], cfg.uuid) + self.assertEqual(2 * units.Mi, cfg.memory) + self.assertEqual(1, cfg.vcpus) + self.assertEqual(vm_mode.EXE, cfg.os_type) + self.assertEqual("/sbin/init", cfg.os_init_path) + self.assertIsNone(cfg.os_root) + self.assertEqual(4, len(cfg.devices)) + self.assertIsInstance(cfg.devices[0], + vconfig.LibvirtConfigGuestFilesys) + fs = cfg.devices[0] + self.assertEqual(fs.source_type, "file") + self.assertEqual(fs.driver_type, "ploop") + self.assertEqual(fs.target_dir, "/") + self.assertIsInstance(cfg.devices[1], + vconfig.LibvirtConfigGuestInterface) + self.assertIsInstance(cfg.devices[2], + vconfig.LibvirtConfigGuestGraphics) + self.assertIsInstance(cfg.devices[3], + vconfig.LibvirtConfigGuestVideo) + class HostStateTestCase(test.NoDBTestCase): diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index af67cdcc08..cfae7d3a5e 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -3099,10 +3099,16 @@ class LibvirtDriver(driver.ComputeDriver): inst_type['extra_specs'], self._host.get_version()) + def _get_guest_fs_config(self, instance, name, image_type=None): + image = self.image_backend.image(instance, + name, + image_type) + return image.libvirt_fs_info("/", "ploop") + def _get_guest_storage_config(self, instance, image_meta, disk_info, rescue, block_device_info, - inst_type): + inst_type, os_type): devices = [] disk_mapping = disk_info['mapping'] @@ -3115,6 +3121,9 @@ class LibvirtDriver(driver.ComputeDriver): fs.source_dir = os.path.join( libvirt_utils.get_instance_path(instance), 'rootfs') devices.append(fs) + elif os_type == vm_mode.EXE and CONF.libvirt.virt_type == "parallels": + fs = self._get_guest_fs_config(instance, "disk") + devices.append(fs) else: if rescue: @@ -3808,6 +3817,9 @@ class LibvirtDriver(driver.ComputeDriver): elif virt_type == "uml": guest.os_kernel = "/usr/bin/linux" guest.os_root = root_device_name + elif virt_type == "parallels": + if guest.os_type == vm_mode.EXE: + guest.os_init_path = "/sbin/init" def _conf_non_lxc_uml(self, virt_type, guest, root_device_name, rescue, instance, inst_path, image_meta, disk_info): @@ -3909,7 +3921,7 @@ class LibvirtDriver(driver.ComputeDriver): storage_configs = self._get_guest_storage_config( instance, image_meta, disk_info, rescue, block_device_info, - flavor) + flavor, guest.os_type) for config in storage_configs: guest.add_device(config) |