Make all lookup plugins work with lists

Lookup plugins should accept a string or a list, and always return
a list, even if it is just one item.
This commit is contained in:
Daniel Hokka Zakrisson 2012-12-05 12:26:23 +01:00
parent 6350dedd7a
commit b73016b881
9 changed files with 101 additions and 68 deletions

View file

@ -24,9 +24,14 @@ class LookupModule(object):
self.basedir = basedir
def run(self, terms, **kwargs):
p = subprocess.Popen(terms, cwd=self.basedir, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
(stdout, stderr) = p.communicate()
if p.returncode == 0:
return [stdout.rstrip()]
else:
raise errors.AnsibleError("lookup_plugin.pipe(%s) returned %d" % (terms, p.returncode))
if isinstance(terms, basestring):
terms = [ terms ]
ret = []
for term in terms:
p = subprocess.Popen(term, cwd=self.basedir, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
(stdout, stderr) = p.communicate()
if p.returncode == 0:
ret.append(stdout.rstrip())
else:
raise errors.AnsibleError("lookup_plugin.pipe(%s) returned %d" % (term, p.returncode))
return ret