summaryrefslogtreecommitdiffstats
path: root/src/lib/Client/Frame.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/Client/Frame.py')
-rw-r--r--src/lib/Client/Frame.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/Client/Frame.py b/src/lib/Client/Frame.py
index e1ff3b669..6147e15a6 100644
--- a/src/lib/Client/Frame.py
+++ b/src/lib/Client/Frame.py
@@ -42,19 +42,26 @@ class Frame:
tools = self.setup['drivers'].split(',')
else:
tools = Bcfg2.Client.Tools.__all__[:]
+ tmods = {}
+ tool_class = "Bcfg2.Client.Tools.%s" % tool
for tool in tools:
try:
- tool_class = "Bcfg2.Client.Tools.%s" % tool
- mod = __import__(tool_class, globals(), locals(), ['*'])
+ tmods[tool] = __import__(tool_class, globals(), locals(), ['*'])
except ImportError:
continue
+ for tool in tools:
+ for conflict in getattr(tool, 'conflicts', []):
+ del tmods[conflict]
+
+ for (tool, mod) in tmods.iteritems():
try:
self.tools.append(getattr(mod, tool)(self.logger, setup, config, self.states))
except Bcfg2.Client.Tools.toolInstantiationError:
continue
except:
self.logger.error("Failed to instantiate tool %s" % (tool), exc_info=1)
+
self.logger.info("Loaded tool drivers:")
self.logger.info([tool.__name__ for tool in self.tools])
if not self.setup['dryrun']: