From a21dda8ba4fc8ea7f603fa762721e6755bbecf09 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Sat, 31 May 2008 23:37:52 +0000 Subject: [PATCH] Forward-port: patch 3/4 extended HVM features for 1.2 This patch adds hypervisor support for the extended HVM features. Author: schreiberal Reviewed-by: iustinp --- lib/hypervisor/hv_xen.py | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py index d5a1176eb..3aa8c8f72 100644 --- a/lib/hypervisor/hv_xen.py +++ b/lib/hypervisor/hv_xen.py @@ -357,8 +357,14 @@ class XenHvmHypervisor(XenHypervisor): config.write("memory = %d\n" % instance.memory) config.write("vcpus = %d\n" % instance.vcpus) config.write("name = '%s'\n" % instance.name) - config.write("pae = 1\n") - config.write("acpi = 1\n") + if instance.hvm_pae: + config.write("pae = 1\n") + else: + config.write("pae = 0\n") + if instance.hvm_acpi: + config.write("acpi = 1\n") + else: + config.write("acpi = 0\n") config.write("apic = 1\n") arch = os.uname()[4] if '64' in arch: @@ -373,7 +379,7 @@ class XenHvmHypervisor(XenHypervisor): config.write("usb = 1\n"); config.write("usbdevice = 'tablet'\n"); config.write("vnc = 1\n") - config.write("vnclisten = '0.0.0.0'\n") + config.write("vnclisten = '%s'\n" % instance.vnc_bind_address) if instance.network_port > constants.HT_HVM_VNC_BASE_PORT: display = instance.network_port - constants.HT_HVM_VNC_BASE_PORT @@ -407,10 +413,15 @@ class XenHvmHypervisor(XenHypervisor): vif_data.append("'%s'" % nic_str) config.write("vif = [%s]\n" % ",".join(vif_data)) - iso = "'file:/srv/ganeti/iso/hvm-install.iso,hdc:cdrom,r'" - config.write("disk = [%s, %s]\n" % (",".join( - cls._GetConfigFileDiskData(instance.disk_template, - block_devices)), iso)) + disk_data = cls._GetConfigFileDiskData(instance.disk_template, + block_devices) + disk_data = [line.replace(",sd", ",ioemu:hd") for line in disk_data] + if instance.hvm_cdrom_image_path is not None: + iso = "'file:%s,hdc:cdrom,r'" % (instance.hvm_cdrom_image_path) + disk_data.append(iso) + + config.write("disk = [%s]\n" % (",".join(disk_data))) + config.write("on_poweroff = 'destroy'\n") config.write("on_reboot = 'restart'\n") config.write("on_crash = 'restart'\n") @@ -437,7 +448,11 @@ class XenHvmHypervisor(XenHypervisor): if instance.network_port is None: raise errors.OpExecError("no console port defined for %s" % instance.name) - else: + elif instance.vnc_bind_address == constants.BIND_ADDRESS_GLOBAL: raise errors.OpExecError("no PTY console, connect to %s:%s via VNC" % (instance.primary_node, instance.network_port)) + else: + raise errors.OpExecError("no PTY console, connect to %s:%s via VNC" + % (instance.vnc_bind_address, + instance.network_port)) -- GitLab