diff --git a/lib/ansible/inventory/__init__.py b/lib/ansible/inventory/__init__.py index 3c679ba67ea..12bf0ffac3b 100644 --- a/lib/ansible/inventory/__init__.py +++ b/lib/ansible/inventory/__init__.py @@ -68,7 +68,7 @@ class Inventory(object): host_list = [ h for h in host_list if h and h.strip() ] else: - utils.plugins.push_basedir(self.basedir()) + utils.plugins.vars_loader.add_directory(self.basedir()) if type(host_list) == list: all = Group('all') diff --git a/lib/ansible/utils/plugins.py b/lib/ansible/utils/plugins.py index 5bc91407eb7..1337ade846c 100644 --- a/lib/ansible/utils/plugins.py +++ b/lib/ansible/utils/plugins.py @@ -42,6 +42,7 @@ class PluginLoader(object): self.subdir = subdir self.aliases = aliases self._module_cache = {} + self._extra_dirs = [] def _get_package_path(self): """Gets the path of a Python package""" @@ -55,7 +56,14 @@ class PluginLoader(object): """Return a list of paths to search for plugins in The list is searched in order.""" - return [os.path.join(basedir, self.subdir) for basedir in _basedirs] + self.config.split(os.pathsep) + [self._get_package_path()] + return self._extra_dirs + + [os.path.join(basedir, self.subdir) for basedir in _basedirs] + + self.config.split(os.pathsep) + + [self._get_package_path()] + + def add_directory(self, directory): + """Adds an additional directory to the search path""" + self._extra_dirs.append(directory) def find_plugin(self, name): """Find a plugin named name"""