From e4d42831194953dd13189684f23e791c36808706 Mon Sep 17 00:00:00 2001 From: Anthony PERARD Date: Mon, 24 Nov 2014 17:13:34 +0000 Subject: [PATCH] libvirt-xen: don't request features ACPI or APIC with PV guest. Those are HVM features only. Also, fix unit test. Change-Id: I5f3630626c6bc908ee3456203ca38f3c57231782 --- nova/tests/unit/virt/libvirt/test_driver.py | 6 +----- nova/virt/libvirt/driver.py | 3 ++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index 598c1756a940..22de035ccfe6 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -2564,13 +2564,9 @@ class LibvirtConnTestCase(test.NoDBTestCase): cfg = drvr._get_guest_config(instance_ref, [], {}, disk_info) self.assertEqual(cfg.os_type, vm_mode.XEN) - self.assertEqual(3, len(cfg.features)) + self.assertEqual(1, len(cfg.features)) self.assertIsInstance(cfg.features[0], vconfig.LibvirtConfigGuestFeaturePAE) - self.assertIsInstance(cfg.features[1], - vconfig.LibvirtConfigGuestFeatureACPI) - self.assertIsInstance(cfg.features[2], - vconfig.LibvirtConfigGuestFeatureAPIC) @mock.patch.object(objects.Flavor, 'get_by_id') def test_get_guest_config_with_vnc_and_spice(self, mock_flavor): diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 6df53fc015f3..241d44b48a02 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -3627,7 +3627,8 @@ class LibvirtDriver(driver.ComputeDriver): if caps.host.cpu.arch in (arch.I686, arch.X86_64): guest.features.append(vconfig.LibvirtConfigGuestFeaturePAE()) - if virt_type not in ("lxc", "uml", "parallels"): + if (virt_type not in ("lxc", "uml", "parallels", "xen") or + (virt_type == "xen" and guest.os_type == vm_mode.HVM)): guest.features.append(vconfig.LibvirtConfigGuestFeatureACPI()) guest.features.append(vconfig.LibvirtConfigGuestFeatureAPIC())