summaryrefslogtreecommitdiff
path: root/lib/ansible
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2015-07-27 10:41:28 -0400
committerJames Cammarata <jimi@sngx.net>2015-07-27 10:41:28 -0400
commitee835ff7adf05e53360c1210a592afa5cdebb268 (patch)
tree2392f027dd27c149c81df2a2b8303e8cfb788770 /lib/ansible
parent3a4dd523d3649facc6d88d94cb67f5531a51af2a (diff)
downloadansible-ee835ff7adf05e53360c1210a592afa5cdebb268.tar.gz
Add a base-level get_basedir method for lookup plugins and fix relative lookups
Fixes #11746
Diffstat (limited to 'lib/ansible')
-rw-r--r--lib/ansible/plugins/lookup/__init__.py6
-rw-r--r--lib/ansible/plugins/lookup/csvfile.py7
-rw-r--r--lib/ansible/plugins/lookup/file.py5
-rw-r--r--lib/ansible/plugins/lookup/fileglob.py4
-rw-r--r--lib/ansible/plugins/lookup/template.py7
5 files changed, 14 insertions, 15 deletions
diff --git a/lib/ansible/plugins/lookup/__init__.py b/lib/ansible/plugins/lookup/__init__.py
index ad49eecbef..9ce4add701 100644
--- a/lib/ansible/plugins/lookup/__init__.py
+++ b/lib/ansible/plugins/lookup/__init__.py
@@ -32,6 +32,12 @@ class LookupBase:
self._loader = loader
self._display = display
+ def get_basedir(self, variables):
+ if 'role_path' in variables:
+ return variables['role_path']
+ else:
+ return self._loader.get_basedir()
+
def _flatten(self, terms):
ret = []
for term in terms:
diff --git a/lib/ansible/plugins/lookup/csvfile.py b/lib/ansible/plugins/lookup/csvfile.py
index 5052342e8a..1a27788722 100644
--- a/lib/ansible/plugins/lookup/csvfile.py
+++ b/lib/ansible/plugins/lookup/csvfile.py
@@ -45,12 +45,9 @@ class LookupModule(LookupBase):
if isinstance(terms, basestring):
terms = [ terms ]
- ret = []
+ basedir = self.get_basedir(variables)
- if 'role_path' in variables:
- basedir = variables['role_path']
- else:
- basedir = self._loader.get_basedir()
+ ret = []
for term in terms:
params = term.split()
diff --git a/lib/ansible/plugins/lookup/file.py b/lib/ansible/plugins/lookup/file.py
index 5a84c6903f..2498f90c9c 100644
--- a/lib/ansible/plugins/lookup/file.py
+++ b/lib/ansible/plugins/lookup/file.py
@@ -32,10 +32,7 @@ class LookupModule(LookupBase):
ret = []
- if 'role_path' in variables:
- basedir = variables['role_path']
- else:
- basedir = self._loader.get_basedir()
+ basedir = self.get_basedir(variables)
for term in terms:
self._display.debug("File lookup term: %s" % term)
diff --git a/lib/ansible/plugins/lookup/fileglob.py b/lib/ansible/plugins/lookup/fileglob.py
index 8985906715..9747381ca1 100644
--- a/lib/ansible/plugins/lookup/fileglob.py
+++ b/lib/ansible/plugins/lookup/fileglob.py
@@ -26,9 +26,11 @@ class LookupModule(LookupBase):
def run(self, terms, variables=None, **kwargs):
+ basedir = self.get_basedir(variables)
+
ret = []
for term in terms:
- dwimmed = self._loader.path_dwim(term)
+ dwimmed = self._loader.path_dwim_relative(basedir, 'files', term)
globbed = glob.glob(dwimmed)
ret.extend(g for g in globbed if os.path.isfile(g))
return ret
diff --git a/lib/ansible/plugins/lookup/template.py b/lib/ansible/plugins/lookup/template.py
index e2bcde2f05..e40247bbc3 100644
--- a/lib/ansible/plugins/lookup/template.py
+++ b/lib/ansible/plugins/lookup/template.py
@@ -30,15 +30,12 @@ class LookupModule(LookupBase):
if not isinstance(terms, list):
terms = [ terms ]
+ basedir = self.get_basedir(variables)
+
ret = []
templar = Templar(loader=self._loader, variables=variables)
- if 'role_path' in variables:
- basedir = variables['role_path']
- else:
- basedir = self._loader.get_basedir()
-
for term in terms:
self._display.debug("File lookup term: %s" % term)