From fc5abe8a025a1bb2e120b41b20c5a8484a3c0fa5 Mon Sep 17 00:00:00 2001 From: Jun Futagawa Date: Sat, 7 Nov 2009 13:29:09 +0900 Subject: [PATCH] Add use_localtime parameter for xen-hvm and kvm Currently xen-hvm and kvm use different real time clock by default. To reduce confusion, this patch adds an optional use_localtime parameter. If the real time clock on the instance is set to local time, the parameter use_localtime should be True. The default is False. Note that the real time clock changes from local to UTC in xen-hvm with the default parameter. Signed-off-by: Jun Futagawa --- lib/constants.py | 4 ++++ lib/hypervisor/hv_kvm.py | 4 ++++ lib/hypervisor/hv_xen.py | 4 +++- 3 files changed, 11 insertions(+), 1 deletions(-) diff --git a/lib/constants.py b/lib/constants.py index e5dafb1..90f728d 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -309,6 +309,7 @@ HV_ROOT_PATH = "root_path" HV_SERIAL_CONSOLE = "serial_console" HV_USB_MOUSE = "usb_mouse" HV_DEVICE_MODEL = "device_model" +HV_USE_LOCALTIME = "use_localtime" HVS_PARAMETER_TYPES = { HV_BOOT_ORDER: VTYPE_STRING, @@ -328,6 +329,7 @@ HVS_PARAMETER_TYPES = { HV_SERIAL_CONSOLE: VTYPE_BOOL, HV_USB_MOUSE: VTYPE_STRING, HV_DEVICE_MODEL: VTYPE_STRING, + HV_USE_LOCALTIME: VTYPE_BOOL, } HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys()) @@ -514,6 +516,7 @@ HVC_DEFAULTS = { HV_PAE: True, HV_KERNEL_PATH: "/usr/lib/xen/boot/hvmloader", HV_DEVICE_MODEL: "/usr/lib/xen/bin/qemu-dm", + HV_USE_LOCALTIME: False, }, HT_KVM: { HV_KERNEL_PATH: "/boot/vmlinuz-2.6-kvmU", @@ -531,6 +534,7 @@ HVC_DEFAULTS = { HV_NIC_TYPE: HT_NIC_PARAVIRTUAL, HV_DISK_TYPE: HT_DISK_PARAVIRTUAL, HV_USB_MOUSE: '', + HV_USE_LOCALTIME: False, }, HT_FAKE: { }, diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index 3dec178..4882419 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -64,6 +64,7 @@ class KVMHypervisor(hv_base.BaseHypervisor): constants.HV_NIC_TYPE, constants.HV_DISK_TYPE, constants.HV_USB_MOUSE, + constants.HV_USE_LOCALTIME, ] _MIGRATION_STATUS_RE = re.compile('Migration\s+status:\s+(\w+)', @@ -339,6 +340,9 @@ class KVMHypervisor(hv_base.BaseHypervisor): else: kvm_cmd.extend(['-serial', 'none']) + if hvp[constants.HV_USE_LOCALTIME]: + kvm_cmd.extend(['-localtime']) + # Save the current instance nics, but defer their expansion as parameters, # as we'll need to generate executable temp files for them. kvm_nics = instance.nics diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py index 8a29d6b..3ecc50e 100644 --- a/lib/hypervisor/hv_xen.py +++ b/lib/hypervisor/hv_xen.py @@ -520,6 +520,7 @@ class XenHvmHypervisor(XenHypervisor): constants.HV_VNC_BIND_ADDRESS, constants.HV_KERNEL_PATH, constants.HV_DEVICE_MODEL, + constants.HV_USE_LOCALTIME, ] @classmethod @@ -660,7 +661,8 @@ class XenHvmHypervisor(XenHypervisor): config.write("vncpasswd = '%s'\n" % password.rstrip()) config.write("serial = 'pty'\n") - config.write("localtime = 1\n") + if hvp[constants.HV_USE_LOCALTIME]: + config.write("localtime = 1\n") vif_data = [] nic_type = hvp[constants.HV_NIC_TYPE] -- 1.5.5.6