From 841093921bd3e59bdb25ba4c7152311b66af49c1 Mon Sep 17 00:00:00 2001 From: Stoned Elipot Date: Sun, 28 Jul 2013 18:47:26 +0200 Subject: [PATCH] Add extra module path early during playbook parsing. This should fix issue #3668 Also prevent an extra module path to be added multiple times. --- lib/ansible/playbook/__init__.py | 3 +++ lib/ansible/utils/plugins.py | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index c1225a8e14..b216392ae0 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -132,6 +132,9 @@ class PlayBook(object): else: self.inventory = inventory + if self.module_path is not None: + utils.plugins.module_finder.add_directory(self.module_path) + self.basedir = os.path.dirname(playbook) or '.' utils.plugins.push_basedir(self.basedir) vars = extra_vars.copy() diff --git a/lib/ansible/utils/plugins.py b/lib/ansible/utils/plugins.py index eb0f6fe8d1..8d1ef493c3 100644 --- a/lib/ansible/utils/plugins.py +++ b/lib/ansible/utils/plugins.py @@ -132,7 +132,8 @@ class PluginLoader(object): if directory is not None: if with_subdir: directory = os.path.join(directory, self.subdir) - self._extra_dirs.append(directory) + if directory not in self._extra_dirs: + self._extra_dirs.append(directory) def find_plugin(self, name): ''' Find a plugin named name '''