commit 56e6e85c7763198410f9f486f611674f5749b808
Author: Ondrej Lichtner <olichtne(a)redhat.com>
Date: Thu Jul 4 13:25:33 2013 +0200
Slave Config: add option use_nm
The added configuration option is under section 'environment', it's of
type boolean, so it accepts True/False values. The default value is True.
This option can disable the use of NetworkManager when it is detected
and running.
Signed-off-by: Ondrej Lichtner <olichtne(a)redhat.com>
Signed-off-by: Jiri Pirko <jiri(a)resnulli.us>
lnst/Common/Config.py | 5 +++++
lnst/Slave/NetConfig.py | 16 +++++++++-------
lnst/Slave/NetConfigDevice.py | 16 ++++++++++------
lnst/Slave/NetTestSlave.py | 9 ++++++---
4 files changed, 30 insertions(+), 16 deletions(-)
---
diff --git a/lnst/Common/Config.py b/lnst/Common/Config.py
index 6e0deae..c79c436 100644
--- a/lnst/Common/Config.py
+++ b/lnst/Common/Config.py
@@ -84,6 +84,11 @@ class Config():
"additive" : False,
"action" : self.optionPath,
"name" : "log_dir"}
+ self.options['environment']['use_nm'] = {\
+ "value" : True,
+ "additive" : False,
+ "action" : self.optionBool,
+ "name" : "use_nm"}
self.options['cache'] = dict()
self.options['cache']['dir'] = {\
diff --git a/lnst/Slave/NetConfig.py b/lnst/Slave/NetConfig.py
index 4b0e5a3..28f6240 100644
--- a/lnst/Slave/NetConfig.py
+++ b/lnst/Slave/NetConfig.py
@@ -18,12 +18,14 @@ from lnst.Slave.NetConfigDevice import NetConfigDeviceType
from lnst.Slave.NetConfigCommon import get_slaves
class NetConfig:
- def __init__(self):
+ def __init__(self, lnst_config):
devnames = NetConfigDevNames()
config = {}
self._devnames = devnames
self._config = config
+ self._lnst_config = lnst_config
+
def _get_leafs(self):
leafs = []
for dev_id in self._config:
@@ -62,7 +64,7 @@ class NetConfig:
dev_type = config["type"]
if not dev_type in self._get_used_types():
logging.info("Initializing '%s' device class", dev_type)
- NetConfigDeviceType(dev_type).type_init()
+ NetConfigDeviceType(dev_type, self._lnst_config).type_init()
self._config[if_id] = config
@@ -76,14 +78,14 @@ class NetConfig:
dev_type = config["type"]
if not dev_type in self._get_used_types():
logging.info("Cleaning up '%s' device class.", dev_type)
- NetConfigDeviceType(dev_type).type_cleanup()
+ NetConfigDeviceType(dev_type, self._lnst_config).type_cleanup()
def get_interface_config(self, if_id):
return self._config[if_id]
def configure(self, dev_id):
netdev = self._config[dev_id]
- device = NetConfigDevice(netdev, self._config)
+ device = NetConfigDevice(netdev, self._config, self._lnst_config)
device.configure()
device.up()
@@ -94,7 +96,7 @@ class NetConfig:
def deconfigure(self, dev_id):
netdev = self._config[dev_id]
- device = NetConfigDevice(netdev, self._config)
+ device = NetConfigDevice(netdev, self._config, self._lnst_config)
device.down()
device.deconfigure()
@@ -142,7 +144,7 @@ class NetConfig:
elif slave_dev_id in netdev["slaves"]:
return False
netdev["slaves"].append(slave_dev_id)
- device = NetConfigDevice(netdev, self._config)
+ device = NetConfigDevice(netdev, self._config, self._lnst_config)
device.slave_add(slave_dev_id)
return True
@@ -151,7 +153,7 @@ class NetConfig:
if not "slaves" in netdev or not slave_dev_id in
netdev["slaves"]:
return False
netdev["slaves"].remove(slave_dev_id)
- device = NetConfigDevice(netdev, self._config)
+ device = NetConfigDevice(netdev, self._config, self._lnst_config)
device.slave_del(slave_dev_id)
return True
diff --git a/lnst/Slave/NetConfigDevice.py b/lnst/Slave/NetConfigDevice.py
index b0333d5..55e3ea5 100644
--- a/lnst/Slave/NetConfigDevice.py
+++ b/lnst/Slave/NetConfigDevice.py
@@ -18,6 +18,7 @@ from lnst.Common.ExecCmd import exec_cmd
from lnst.Slave.NetConfigCommon import get_slaves, get_option, get_slave_option
from lnst.Common.Utils import kmod_in_use, bool_it
from lnst.Slave.NmConfigDevice import type_class_mapping as nm_type_class_mapping
+from lnst.Common.Utils import check_process_running
class NetConfigDeviceGeneric:
@@ -296,26 +297,29 @@ type_class_mapping = {
"team": NetConfigDeviceTeam
}
-def NetConfigDevice(netdev, config):
+def NetConfigDevice(netdev, config, lnst_config):
'''
Class dispatcher
'''
- if check_process_running("NetworkManager"):
+ if check_process_running("NetworkManager") and \
+ lnst_config.get_option("environment", "use_nm"):
return nm_type_class_mapping[netdev["type"]](netdev, config)
else:
return type_class_mapping[netdev["type"]](netdev, config)
-def NetConfigDeviceType(dev_type):
+def NetConfigDeviceType(dev_type, lnst_config):
'''
Class dispatcher for classmethods
'''
- if check_process_running("NetworkManager"):
+ if check_process_running("NetworkManager") and \
+ lnst_config.get_option("environment", "use_nm"):
return nm_type_class_mapping[dev_type]
else:
return type_class_mapping[dev_type]
-def NetConfigDeviceAllCleanup():
- if check_process_running("NetworkManager"):
+def NetConfigDeviceAllCleanup(lnst_config):
+ if check_process_running("NetworkManager") and \
+ lnst_config.get_option("environment", "use_nm"):
for dev_type in nm_type_class_mapping:
NetConfigDeviceType(dev_type).type_cleanup()
else:
diff --git a/lnst/Slave/NetTestSlave.py b/lnst/Slave/NetTestSlave.py
index e7de8ac..7f20b08 100644
--- a/lnst/Slave/NetTestSlave.py
+++ b/lnst/Slave/NetTestSlave.py
@@ -45,7 +45,7 @@ class SlaveMethods:
def __init__(self, command_context, config, log_ctl):
self._netconfig = None
self._packet_captures = {}
- self._netconfig = NetConfig()
+ self._netconfig = NetConfig(config)
self._command_context = command_context
self._config = config
self._log_ctl = log_ctl
@@ -72,7 +72,10 @@ class SlaveMethods:
if check_process_running("NetworkManager"):
logging.warning("=============================================")
logging.warning("NetworkManager is running on a slave machine!")
- logging.warning("Support of NM is still experimental!")
+ if self._config.get_option("environment", "use_nm"):
+ logging.warning("Support of NM is still experimental!")
+ else:
+ logging.warning("Usage of NM is disabled!")
logging.warning("=============================================")
return "hello"
@@ -231,7 +234,7 @@ class SlaveMethods:
return res
def machine_cleanup(self):
- NetConfigDeviceAllCleanup()
+ NetConfigDeviceAllCleanup(self._config)
self._netconfig.cleanup()
self._command_context.cleanup()
self._cache.del_old_entries()