From ba3fd166055e5d6b12a35f8311b5655b659f4367 Mon Sep 17 00:00:00 2001 From: yongiman Date: Mon, 23 Dec 2013 22:43:59 +0900 Subject: [PATCH] Add hpet option for time drifting Since havana, the timezone of windows vm is localtime. However, there is a time drifting when the windows vm is overloaded. Disabling hpet option of clock in xml template, we can sync time without buffering. From this template, To this template, Implements : blueprint add-no-hpet-option-into-guest-clock Change-Id: I6441b9d2de5897dd1863b53bd7e2578881b53c67 --- nova/tests/virt/libvirt/test_libvirt.py | 6 +++++- nova/virt/libvirt/driver.py | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/nova/tests/virt/libvirt/test_libvirt.py b/nova/tests/virt/libvirt/test_libvirt.py index f62170ef2964..f1beb81d9ecf 100644 --- a/nova/tests/virt/libvirt/test_libvirt.py +++ b/nova/tests/virt/libvirt/test_libvirt.py @@ -804,17 +804,21 @@ class LibvirtConnTestCase(test.TestCase): self.assertEqual(type(cfg.clock), vconfig.LibvirtConfigGuestClock) self.assertEqual(cfg.clock.offset, "utc") - self.assertEqual(len(cfg.clock.timers), 2) + self.assertEqual(len(cfg.clock.timers), 3) self.assertEqual(type(cfg.clock.timers[0]), vconfig.LibvirtConfigGuestTimer) self.assertEqual(type(cfg.clock.timers[1]), vconfig.LibvirtConfigGuestTimer) + self.assertEqual(type(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_windows(self): conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True) diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index f3318c736432..e6c5ac7b595b 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -3120,8 +3120,13 @@ 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) for cfg in self.get_guest_storage_config(instance, image_meta,