Search multiple paths for modules.

Minimal change to allow a list of paths (separated by the typical path
separator) to be searched in sequence for the named module.
This commit is contained in:
Matt Goodall 2012-06-06 21:42:29 +01:00
parent c1b02d7805
commit 5fe75238fa
2 changed files with 9 additions and 4 deletions

View file

@ -722,9 +722,14 @@ class Runner(object):
if module.startswith("/"): if module.startswith("/"):
raise errors.AnsibleFileNotFound("%s is not a module" % module) raise errors.AnsibleFileNotFound("%s is not a module" % module)
in_path = os.path.expanduser(os.path.join(self.module_path, module))
if not os.path.exists(in_path): # Search module path(s) for named module.
raise errors.AnsibleFileNotFound("module not found: %s" % in_path) for module_path in self.module_path.split(os.pathsep):
in_path = os.path.expanduser(os.path.join(module_path, module))
if os.path.exists(in_path):
break
else:
raise errors.AnsibleFileNotFound("module %s not found in %s" % (module, self.module_path))
out_path = tmp + module out_path = tmp + module

View file

@ -323,7 +323,7 @@ def base_parser(constants=C, usage="", output_opts=False, runas_opts=False, asyn
parser.add_option('-K', '--ask-sudo-pass', default=False, dest='ask_sudo_pass', action='store_true', parser.add_option('-K', '--ask-sudo-pass', default=False, dest='ask_sudo_pass', action='store_true',
help='ask for sudo password') help='ask for sudo password')
parser.add_option('-M', '--module-path', dest='module_path', parser.add_option('-M', '--module-path', dest='module_path',
help="specify path to module library (default=%s)" % constants.DEFAULT_MODULE_PATH, help="specify path(s) to module library (default=%s)" % constants.DEFAULT_MODULE_PATH,
default=constants.DEFAULT_MODULE_PATH) default=constants.DEFAULT_MODULE_PATH)
parser.add_option('-T', '--timeout', default=constants.DEFAULT_TIMEOUT, type='int', parser.add_option('-T', '--timeout', default=constants.DEFAULT_TIMEOUT, type='int',
dest='timeout', dest='timeout',