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],
|
||||
vconfig.LibvirtConfigGuestVideo)
|
||||
|
||||
self.assertIsInstance(cfg.clock,
|
||||
vconfig.LibvirtConfigGuestClock)
|
||||
self.assertEqual(cfg.clock.offset, "utc")
|
||||
self.assertEqual(len(cfg.clock.timers), 3)
|
||||
self.assertIsInstance(cfg.clock.timers[0],
|
||||
vconfig.LibvirtConfigGuestTimer)
|
||||
self.assertIsInstance(cfg.clock.timers[1],
|
||||
vconfig.LibvirtConfigGuestTimer)
|
||||
self.assertIsInstance(cfg.clock.timers[2],
|
||||
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")
|
||||
self.assertEqual(cfg.clock.timers[2].name, "hpet")
|
||||
self.assertEqual(cfg.clock.timers[2].present, False)
|
||||
def test_get_guest_config_clock(self):
|
||||
self.flags(virt_type='kvm', group='libvirt')
|
||||
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
|
||||
instance_ref = db.instance_create(self.context, self.test_instance)
|
||||
disk_info = blockinfo.get_disk_info(CONF.libvirt.virt_type,
|
||||
instance_ref)
|
||||
image_meta = {}
|
||||
hpet_map = {
|
||||
"x86_64": True,
|
||||
"i686": True,
|
||||
"ppc": False,
|
||||
"ppc64": False,
|
||||
"armv7": False,
|
||||
"aarch64": False,
|
||||
}
|
||||
|
||||
for arch, expect_hpet in hpet_map.items():
|
||||
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):
|
||||
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
|
||||
|
|
|
@ -3208,13 +3208,17 @@ class LibvirtDriver(driver.ComputeDriver):
|
|||
tmrtc.name = "rtc"
|
||||
tmrtc.tickpolicy = "catchup"
|
||||
|
||||
tmhpet = vconfig.LibvirtConfigGuestTimer()
|
||||
tmhpet.name = "hpet"
|
||||
tmhpet.present = False
|
||||
|
||||
clk.add_timer(tmpit)
|
||||
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,
|
||||
image_meta,
|
||||
|
|
Loading…
Reference in New Issue