This patch validates the macvtap_mode nicparam during cluster init in
case the macvtap mode is chosen as the default connection mode of the
cluster.

Signed-off-by: Dimitris Bliablias <[email protected]>
---
 lib/bootstrap.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/lib/bootstrap.py b/lib/bootstrap.py
index 2b668b9..bf3985f 100644
--- a/lib/bootstrap.py
+++ b/lib/bootstrap.py
@@ -39,6 +39,7 @@ import logging
 import time
 
 from ganeti.cmdlib import cluster
+from ganeti.cmdlib.instance_utils import ComputeMacvtapModeNicParam
 import ganeti.rpc.node as rpc
 from ganeti import ssh
 from ganeti import utils
@@ -627,7 +628,8 @@ def InitCluster(cluster_name, mac_prefix, # pylint: 
disable=R0913, R0914
     raise errors.OpPrereqError("Invalid mac prefix given '%s'" % mac_prefix,
                                errors.ECODE_INVAL)
 
-  if not nicparams.get('mode', None) == constants.NIC_MODE_OVS:
+  nic_mode = nicparams.get(constants.NIC_MODE, None)
+  if not nic_mode == constants.NIC_MODE_OVS:
     # Do not do this check if mode=openvswitch, since the openvswitch is not
     # created yet
     result = utils.RunCmd(["ip", "link", "show", "dev", master_netdev])
@@ -636,6 +638,12 @@ def InitCluster(cluster_name, mac_prefix, # pylint: 
disable=R0913, R0914
                                  (master_netdev,
                                   result.output.strip()), errors.ECODE_INVAL)
 
+  # if mode is set to MacVTap, validate and compute the macvtap_mode nicparam
+  if nic_mode == constants.NIC_MODE_MACVTAP:
+    macvtap_mode = nicparams.get(constants.NIC_MACVTAP_MODE, "")
+    nicparams[constants.NIC_MACVTAP_MODE] = \
+      ComputeMacvtapModeNicParam(macvtap_mode)
+
   dirs = [(pathutils.RUN_DIR, constants.RUN_DIRS_MODE)]
   utils.EnsureDirs(dirs)
 
-- 
2.1.4

Reply via email to