From 4e7b67a45a3f46d0e770a547d51bc65f850d8096 Mon Sep 17 00:00:00 2001 From: Stephen Fromm Date: Wed, 22 Aug 2012 23:28:14 -0700 Subject: [PATCH] Add option to pass list of dirs to get_bin_path in module_common.py The optional list is prepended to PATH. Fix get_bin_path() to use os.path.join(). --- lib/ansible/module_common.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/ansible/module_common.py b/lib/ansible/module_common.py index c9179af6db..aee5128c60 100644 --- a/lib/ansible/module_common.py +++ b/lib/ansible/module_common.py @@ -202,20 +202,24 @@ class AnsibleModule(object): log_args = re.sub(r'login_password=.+ (.*)', r"login_password=NOT_LOGGING_PASSWORD \1", log_args) syslog.syslog(syslog.LOG_NOTICE, 'Invoked with %s' % log_args) - def get_bin_path(self, arg): + def get_bin_path(self, arg, opt_dirs=[]): ''' find system executable in PATH. if found return full path; otherwise return None ''' sbin_paths = ['/sbin', '/usr/sbin', '/usr/local/sbin'] - paths = os.environ.get('PATH').split(':') + paths = [] + for d in opt_dirs: + if d is not None and os.path.exists(d): + paths.append(d) + paths += os.environ.get('PATH').split(':') bin_path = None # mangle PATH to include /sbin dirs for p in sbin_paths: if p not in paths and os.path.exists(p): paths.append(p) for d in paths: - path = '%s/%s' % (d, arg) + path = os.path.join(d, arg) if os.path.exists(path) and os.access(path, os.X_OK): bin_path = path break