From 43440815b610c5ca1665182cfa43e5ad2657dc63 Mon Sep 17 00:00:00 2001 From: Guido Trotter <ultrotter@google.com> Date: Mon, 9 Feb 2009 15:15:55 +0000 Subject: [PATCH] KVM: parameters for different disk and nic types - Add a bunch of NICs and DISKs types - Specify which one are valid disks and nics for KVM (the new ones toghether with some of the old ones) - Add the default values (paravirtual) - Allow the disk and nic types as parameters and check their validity Reviewed-by: iustinp --- lib/constants.py | 23 ++++++++++++++++++++++- lib/hypervisor/hv_kvm.py | 16 ++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/lib/constants.py b/lib/constants.py index 1d33128dd..91b5a7c18 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -341,11 +341,30 @@ VNC_DEFAULT_BIND_ADDRESS = '0.0.0.0' HT_NIC_RTL8139 = "rtl8139" HT_NIC_NE2K_PCI = "ne2k_pci" HT_NIC_NE2K_ISA = "ne2k_isa" +HT_NIC_I82551 = "i82551" +HT_NIC_I85557B = "i82557b" +HT_NIC_I8259ER = "i82559er" +HT_NIC_PCNET = "pcnet" +HT_NIC_E1000 = "e1000" HT_NIC_PARAVIRTUAL = HT_DISK_PARAVIRTUAL = "paravirtual" HT_DISK_IOEMU = "ioemu" +HT_DISK_IDE = "ide" +HT_DISK_SCSI = "scsi" +HT_DISK_SD = "sd" +HT_DISK_MTD = "mtd" +HT_DISK_PFLASH = "pflash" + HT_HVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI, HT_NIC_NE2K_ISA, HT_NIC_PARAVIRTUAL]) HT_HVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IOEMU]) +HT_KVM_VALID_NIC_TYPES = frozenset([HT_NIC_RTL8139, HT_NIC_NE2K_PCI, + HT_NIC_NE2K_ISA, HT_NIC_I82551, + HT_NIC_I85557B, HT_NIC_I8259ER, + HT_NIC_PCNET, HT_NIC_E1000, + HT_NIC_PARAVIRTUAL]) +HT_KVM_VALID_DISK_TYPES = frozenset([HT_DISK_PARAVIRTUAL, HT_DISK_IDE, + HT_DISK_SCSI, HT_DISK_SD, HT_DISK_MTD, + HT_DISK_PFLASH]) # Cluster Verify steps VERIFY_NPLUSONE_MEM = 'nplusone_mem' @@ -443,7 +462,7 @@ HVC_DEFAULTS = { HV_BOOT_ORDER: "cd", HV_CDROM_IMAGE_PATH: None, HV_NIC_TYPE: HT_NIC_RTL8139, - HV_DISK_TYPE: HT_DEV_PARAVIRTUAL, + HV_DISK_TYPE: HT_DISK_PARAVIRTUAL, HV_VNC_BIND_ADDRESS: '0.0.0.0', HV_ACPI: True, HV_PAE: True, @@ -460,6 +479,8 @@ HVC_DEFAULTS = { HV_VNC_X509_VERIFY: False, HV_CDROM_IMAGE_PATH: None, HV_BOOT_ORDER: "disk", + HV_NIC_TYPE: HT_NIC_PARAVIRTUAL, + HV_DISK_TYPE: HT_DISK_PARAVIRTUAL, }, HT_FAKE: { }, diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index f695d86b7..dd60fbe9f 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -60,6 +60,8 @@ class KVMHypervisor(hv_base.BaseHypervisor): constants.HV_VNC_X509_VERIFY, constants.HV_CDROM_IMAGE_PATH, constants.HV_BOOT_ORDER, + constants.HV_NIC_TYPE, + constants.HV_DISK_TYPE, ] _MIGRATION_STATUS_RE = re.compile('Migration\s+status:\s+(\w+)', @@ -749,6 +751,20 @@ class KVMHypervisor(hv_base.BaseHypervisor): if boot_order == 'cdrom' and not iso_path: raise errors.HypervisorError("Cannot boot from cdrom without an ISO path") + nic_type = hvparams[constants.HV_NIC_TYPE] + if nic_type not in constants.HT_KVM_VALID_NIC_TYPES: + raise errors.HypervisorError("Invalid NIC type %s specified for the KVM" + " hypervisor. Please choose one of: %s" % + (nic_type, + constants.HT_KVM_VALID_NIC_TYPES)) + + disk_type = hvparams[constants.HV_DISK_TYPE] + if disk_type not in constants.HT_KVM_VALID_DISK_TYPES: + raise errors.HypervisorError("Invalid disk type %s specified for the KVM" + " hypervisor. Please choose one of: %s" % + (disk_type, + constants.HT_KVM_VALID_DISK_TYPES)) + def ValidateParameters(self, hvparams): """Check the given parameters for validity. -- GitLab