If vif_script hypervisor param (for xen-hvm and xen-pvm) is set then script= option is added to NIC entries in configuration files. This script is executed instead of the default script that xend is configured with (in xend-config.sxp) .
Signed-off-by: Dimitris Aragiorgis <[email protected]> --- lib/constants.py | 4 ++++ lib/hypervisor/hv_xen.py | 10 ++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/constants.py b/lib/constants.py index 0266b2b..97b9fe8 100644 --- a/lib/constants.py +++ b/lib/constants.py @@ -943,6 +943,7 @@ HV_KVM_EXTRA = "kvm_extra" HV_KVM_MACHINE_VERSION = "machine_version" HV_KVM_PATH = "kvm_path" HV_VIF_TYPE = "vif_type" +HV_VIF_SCRIPT = "vif_script" HVS_PARAMETER_TYPES = { @@ -1013,6 +1014,7 @@ HVS_PARAMETER_TYPES = { HV_KVM_EXTRA: VTYPE_STRING, HV_KVM_MACHINE_VERSION: VTYPE_STRING, HV_VIF_TYPE: VTYPE_STRING, + HV_VIF_SCRIPT: VTYPE_STRING, } HVS_PARAMETERS = frozenset(HVS_PARAMETER_TYPES.keys()) @@ -2020,6 +2022,7 @@ HVC_DEFAULTS = { HV_CPU_MASK: CPU_PINNING_ALL, HV_CPU_CAP: 0, HV_CPU_WEIGHT: 256, + HV_VIF_SCRIPT: "", }, HT_XEN_HVM: { HV_BOOT_ORDER: "cd", @@ -2042,6 +2045,7 @@ HVC_DEFAULTS = { HV_CPU_CAP: 0, HV_CPU_WEIGHT: 256, HV_VIF_TYPE: HT_HVM_VIF_IOEMU, + HV_VIF_SCRIPT: "", }, HT_KVM: { HV_KVM_PATH: KVM_PATH, diff --git a/lib/hypervisor/hv_xen.py b/lib/hypervisor/hv_xen.py index 9c0c86e..94db033 100644 --- a/lib/hypervisor/hv_xen.py +++ b/lib/hypervisor/hv_xen.py @@ -42,8 +42,6 @@ XEND_CONFIG_FILE = utils.PathJoin(pathutils.XEN_CONFIG_DIR, "xend-config.sxp") XL_CONFIG_FILE = utils.PathJoin(pathutils.XEN_CONFIG_DIR, "xen/xl.conf") VIF_BRIDGE_SCRIPT = utils.PathJoin(pathutils.XEN_CONFIG_DIR, "scripts/vif-bridge") -VIF_GANETI_SCRIPT = utils.PathJoin(pathutils.XEN_CONFIG_DIR, - "scripts/vif-ganeti") _DOM0_NAME = "Domain-0" _DISK_LETTERS = string.ascii_lowercase @@ -855,6 +853,7 @@ class XenPvmHypervisor(XenHypervisor): constants.HV_CPU_CAP: hv_base.OPT_NONNEGATIVE_INT_CHECK, constants.HV_CPU_WEIGHT: (False, lambda x: 0 < x < 65536, "invalid weight", None, None), + constants.HV_VIF_SCRIPT: hv_base.NO_CHECK, } def _GetConfig(self, instance, startup_memory, block_devices): @@ -913,7 +912,8 @@ class XenPvmHypervisor(XenHypervisor): nic_str += ", ip=%s" % ip if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED: nic_str += ", bridge=%s" % nic.nicparams[constants.NIC_LINK] - nic_str += ", script=%s" % VIF_GANETI_SCRIPT + if hvp[constants.HV_VIF_SCRIPT]: + nic_str += ", script=%s" % hvp[constants.HV_VIF_SCRIPT] vif_data.append("'%s'" % nic_str) cls._WriteNICInfoFile(instance.name, idx, nic) @@ -979,6 +979,7 @@ class XenHvmHypervisor(XenHypervisor): (False, lambda x: 0 < x < 65535, "invalid weight", None, None), constants.HV_VIF_TYPE: hv_base.ParamInSet(False, constants.HT_HVM_VALID_VIF_TYPES), + constants.HV_VIF_SCRIPT: hv_base.NO_CHECK, } def _GetConfig(self, instance, startup_memory, block_devices): @@ -1074,7 +1075,8 @@ class XenHvmHypervisor(XenHypervisor): nic_str += ", ip=%s" % ip if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED: nic_str += ", bridge=%s" % nic.nicparams[constants.NIC_LINK] - nic_str += ", script=%s" % VIF_GANETI_SCRIPT + if hvp[constants.HV_VIF_SCRIPT]: + nic_str += ", script=%s" % hvp[constants.HV_VIF_SCRIPT] vif_data.append("'%s'" % nic_str) cls._WriteNICInfoFile(instance.name, idx, nic) -- 1.7.10.4
