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

Reply via email to