Lookup plugins in included files now look in paths relative to their files, allowing role usage.

pull/3095/head
Michael DeHaan 12 years ago
parent 7f0e89a2f6
commit b8a66ce5bb

@ -25,6 +25,7 @@ class LookupModule(object):
self.basedir = basedir self.basedir = basedir
def run(self, terms, inject=None, **kwargs): def run(self, terms, inject=None, **kwargs):
terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject) terms = utils.listify_lookup_plugin_terms(terms, self.basedir, inject)
ret = [] ret = []

@ -81,6 +81,7 @@ def lookup(name, *args, **kwargs):
from ansible import utils from ansible import utils
instance = utils.plugins.lookup_loader.get(name.lower(), basedir=kwargs.get('basedir',None)) instance = utils.plugins.lookup_loader.get(name.lower(), basedir=kwargs.get('basedir',None))
vars = kwargs.get('vars', None) vars = kwargs.get('vars', None)
if instance is not None: if instance is not None:
ran = instance.run(*args, inject=vars, **kwargs) ran = instance.run(*args, inject=vars, **kwargs)
return ",".join(ran) return ",".join(ran)
@ -470,6 +471,12 @@ def template_from_string(basedir, data, vars):
environment.filters.update(_get_filters()) environment.filters.update(_get_filters())
environment.template_class = J2Template environment.template_class = J2Template
if '_original_file' in vars:
basedir = os.path.dirname(vars['_original_file'])
filesdir = os.path.join(basedir, '..', 'files')
if os.path.exists(filesdir):
basedir = filesdir
# TODO: may need some way of using lookup plugins here seeing we aren't calling # TODO: may need some way of using lookup plugins here seeing we aren't calling
# the legacy engine, lookup() as a function, perhaps? # the legacy engine, lookup() as a function, perhaps?

Loading…
Cancel
Save