Merge "Do not add HPET timer config to non x86 targets"
This commit is contained in:
commit
620be9a67a
|
@ -855,24 +855,50 @@ class LibvirtConnTestCase(test.TestCase):
|
||||||
self.assertIsInstance(cfg.devices[7],
|
self.assertIsInstance(cfg.devices[7],
|
||||||
vconfig.LibvirtConfigGuestVideo)
|
vconfig.LibvirtConfigGuestVideo)
|
||||||
|
|
||||||
self.assertIsInstance(cfg.clock,
|
def test_get_guest_config_clock(self):
|
||||||
vconfig.LibvirtConfigGuestClock)
|
self.flags(virt_type='kvm', group='libvirt')
|
||||||
self.assertEqual(cfg.clock.offset, "utc")
|
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
|
||||||
self.assertEqual(len(cfg.clock.timers), 3)
|
instance_ref = db.instance_create(self.context, self.test_instance)
|
||||||
self.assertIsInstance(cfg.clock.timers[0],
|
disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type,
|
||||||
vconfig.LibvirtConfigGuestTimer)
|
instance_ref)
|
||||||
self.assertIsInstance(cfg.clock.timers[1],
|
image_meta = {}
|
||||||
vconfig.LibvirtConfigGuestTimer)
|
hpet_map = {
|
||||||
self.assertIsInstance(cfg.clock.timers[2],
|
"x86_64": True,
|
||||||
vconfig.LibvirtConfigGuestTimer)
|
"i686": True,
|
||||||
self.assertEqual(cfg.clock.timers[0].name, "pit")
|
"ppc": False,
|
||||||
self.assertEqual(cfg.clock.timers[0].tickpolicy,
|
"ppc64": False,
|
||||||
"delay")
|
"armv7": False,
|
||||||
self.assertEqual(cfg.clock.timers[1].name, "rtc")
|
"aarch64": False,
|
||||||
self.assertEqual(cfg.clock.timers[1].tickpolicy,
|
}
|
||||||
"catchup")
|
|
||||||
self.assertEqual(cfg.clock.timers[2].name, "hpet")
|
for arch, expect_hpet in hpet_map.items():
|
||||||
self.assertEqual(cfg.clock.timers[2].present, False)
|
with mock.patch.object(libvirt_driver.libvirt_utils,
|
||||||
|
'get_arch',
|
||||||
|
return_value=arch):
|
||||||
|
cfg = conn.get_guest_config(instance_ref, [],
|
||||||
|
image_meta,
|
||||||
|
disk_info)
|
||||||
|
self.assertIsInstance(cfg.clock,
|
||||||
|
vconfig.LibvirtConfigGuestClock)
|
||||||
|
self.assertEqual(cfg.clock.offset, "utc")
|
||||||
|
self.assertIsInstance(cfg.clock.timers[0],
|
||||||
|
vconfig.LibvirtConfigGuestTimer)
|
||||||
|
self.assertIsInstance(cfg.clock.timers[1],
|
||||||
|
vconfig.LibvirtConfigGuestTimer)
|
||||||
|
self.assertEqual(cfg.clock.timers[0].name, "pit")
|
||||||
|
self.assertEqual(cfg.clock.timers[0].tickpolicy,
|
||||||
|
"delay")
|
||||||
|
self.assertEqual(cfg.clock.timers[1].name, "rtc")
|
||||||
|
self.assertEqual(cfg.clock.timers[1].tickpolicy,
|
||||||
|
"catchup")
|
||||||
|
if expect_hpet:
|
||||||
|
self.assertEqual(3, len(cfg.clock.timers))
|
||||||
|
self.assertIsInstance(cfg.clock.timers[2],
|
||||||
|
vconfig.LibvirtConfigGuestTimer)
|
||||||
|
self.assertEqual('hpet', cfg.clock.timers[2].name)
|
||||||
|
self.assertFalse(cfg.clock.timers[2].present)
|
||||||
|
else:
|
||||||
|
self.assertEqual(2, len(cfg.clock.timers))
|
||||||
|
|
||||||
def test_get_guest_config_windows(self):
|
def test_get_guest_config_windows(self):
|
||||||
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
|
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
|
||||||
|
|
|
@ -3208,13 +3208,17 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||||
tmrtc.name = "rtc"
|
tmrtc.name = "rtc"
|
||||||
tmrtc.tickpolicy = "catchup"
|
tmrtc.tickpolicy = "catchup"
|
||||||
|
|
||||||
tmhpet = vconfig.LibvirtConfigGuestTimer()
|
|
||||||
tmhpet.name = "hpet"
|
|
||||||
tmhpet.present = False
|
|
||||||
|
|
||||||
clk.add_timer(tmpit)
|
clk.add_timer(tmpit)
|
||||||
clk.add_timer(tmrtc)
|
clk.add_timer(tmrtc)
|
||||||
clk.add_timer(tmhpet)
|
|
||||||
|
arch = libvirt_utils.get_arch(image_meta)
|
||||||
|
if arch in ("i686", "x86_64"):
|
||||||
|
# NOTE(rfolco): HPET is a hardware timer for x86 arch.
|
||||||
|
# qemu -no-hpet is not supported on non-x86 targets.
|
||||||
|
tmhpet = vconfig.LibvirtConfigGuestTimer()
|
||||||
|
tmhpet.name = "hpet"
|
||||||
|
tmhpet.present = False
|
||||||
|
clk.add_timer(tmhpet)
|
||||||
|
|
||||||
for cfg in self.get_guest_storage_config(instance,
|
for cfg in self.get_guest_storage_config(instance,
|
||||||
image_meta,
|
image_meta,
|
||||||
|
|
Loading…
Reference in New Issue