From 2c368f283abd5ca50c2337612fce696d80565c00 Mon Sep 17 00:00:00 2001 From: Guido Trotter <ultrotter@google.com> Date: Mon, 14 Jan 2013 10:00:50 +0000 Subject: [PATCH] Add a non negative int hypervisor parameter check ...and use it for a few parameters for which it makes sense. Signed-off-by: Guido Trotter <ultrotter@google.com> Reviewed-by: Michael Hanselmann <hansmi@google.com> --- lib/hypervisor/hv_base.py | 5 +++++ lib/hypervisor/hv_kvm.py | 10 +++++----- lib/hypervisor/hv_xen.py | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/hypervisor/hv_base.py b/lib/hypervisor/hv_base.py index bb0da911e..1cc054a30 100644 --- a/lib/hypervisor/hv_base.py +++ b/lib/hypervisor/hv_base.py @@ -102,6 +102,9 @@ _MULTI_CPU_MASK_CHECK = (_IsMultiCpuMaskWellFormed, _NET_PORT_CHECK = (lambda x: 0 < x < 65535, "invalid port number", None, None) +# Check that an integer is non negative +_NONNEGATIVE_INT_CHECK = (lambda x: x >= 0, "cannot be negative", None, None) + # nice wrappers for users REQ_FILE_CHECK = (True, ) + _FILE_CHECK OPT_FILE_CHECK = (False, ) + _FILE_CHECK @@ -113,6 +116,8 @@ REQ_CPU_MASK_CHECK = (True, ) + _CPU_MASK_CHECK OPT_CPU_MASK_CHECK = (False, ) + _CPU_MASK_CHECK REQ_MULTI_CPU_MASK_CHECK = (True, ) + _MULTI_CPU_MASK_CHECK OPT_MULTI_CPU_MASK_CHECK = (False, ) + _MULTI_CPU_MASK_CHECK +REQ_NONNEGATIVE_INT_CHECK = (True, ) + _NONNEGATIVE_INT_CHECK +OPT_NONNEGATIVE_INT_CHECK = (False, ) + _NONNEGATIVE_INT_CHECK # no checks at all NO_CHECK = (False, None, None, None, None) diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index 8087d4988..aebbefcf5 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -514,8 +514,8 @@ class KVMHypervisor(hv_base.BaseHypervisor): hv_base.ParamInSet(False, constants.HT_KVM_VALID_MOUSE_TYPES), constants.HV_KEYMAP: hv_base.NO_CHECK, constants.HV_MIGRATION_PORT: hv_base.REQ_NET_PORT_CHECK, - constants.HV_MIGRATION_BANDWIDTH: hv_base.NO_CHECK, - constants.HV_MIGRATION_DOWNTIME: hv_base.NO_CHECK, + constants.HV_MIGRATION_BANDWIDTH: hv_base.REQ_NONNEGATIVE_INT_CHECK, + constants.HV_MIGRATION_DOWNTIME: hv_base.REQ_NONNEGATIVE_INT_CHECK, constants.HV_MIGRATION_MODE: hv_base.MIGRATION_MODE_CHECK, constants.HV_USE_LOCALTIME: hv_base.NO_CHECK, constants.HV_DISK_CACHE: @@ -532,9 +532,9 @@ class KVMHypervisor(hv_base.BaseHypervisor): hv_base.ParamInSet(True, constants.REBOOT_BEHAVIORS), constants.HV_CPU_MASK: hv_base.OPT_MULTI_CPU_MASK_CHECK, constants.HV_CPU_TYPE: hv_base.NO_CHECK, - constants.HV_CPU_CORES: hv_base.NO_CHECK, - constants.HV_CPU_THREADS: hv_base.NO_CHECK, - constants.HV_CPU_SOCKETS: hv_base.NO_CHECK, + constants.HV_CPU_CORES: hv_base.OPT_NONNEGATIVE_INT_CHECK, + constants.HV_CPU_THREADS: hv_base.OPT_NONNEGATIVE_INT_CHECK, + constants.HV_CPU_SOCKETS: hv_base.OPT_NONNEGATIVE_INT_CHECK, } _MIGRATION_STATUS_RE = re.compile("Migration\s+status:\s+(\w+)", diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py index d936d8436..d60f6f842 100644 --- a/lib/hypervisor/hv_xen.py +++ b/lib/hypervisor/hv_xen.py @@ -632,7 +632,7 @@ class XenPvmHypervisor(XenHypervisor): constants.HV_REBOOT_BEHAVIOR: hv_base.ParamInSet(True, constants.REBOOT_BEHAVIORS), constants.HV_CPU_MASK: hv_base.OPT_MULTI_CPU_MASK_CHECK, - constants.HV_CPU_CAP: hv_base.NO_CHECK, + constants.HV_CPU_CAP: hv_base.OPT_NONNEGATIVE_INT_CHECK, constants.HV_CPU_WEIGHT: (False, lambda x: 0 < x < 65536, "invalid weight", None, None), } -- GitLab