summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-02-05 15:48:25 +0000
committerGerrit Code Review <review@openstack.org>2015-02-05 15:48:25 +0000
commite8bc157f85f052fd0c9cab05d13730ab5c41bf58 (patch)
tree2aab9812ac319386ee51354900f9c49d5723bb21
parentc3a8db4cb8c402332ff8a524096cb5770cd22904 (diff)
parentfe61970b52d788f1db6250e1a69342488f87e29b (diff)
downloadnova-e8bc157f85f052fd0c9cab05d13730ab5c41bf58.tar.gz
Merge "libvirt: generate proper config for PCS containers"
-rw-r--r--nova/tests/unit/virt/libvirt/test_driver.py35
-rw-r--r--nova/virt/libvirt/driver.py16
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)