mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-28 21:31:26 -07:00
This was causing a bug in the env module, due to the fact that we now pass variables for the module through the templating engine combined with the fact that we split-up the hostvars and setup variables. As a result, if a variable in the env lookup had the same name as the variable in Ansible, it would try and template itself over and over again until the recursion limit would be hit, at which time an empty string was returned. Fixes #7396
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
# (c) 2012, Jan-Piet Mens <jpmens(at)gmail.com>
|
|
#
|
|
# This file is part of Ansible
|
|
#
|
|
# Ansible is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Ansible is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
from ansible import utils, errors
|
|
from ansible.utils import template
|
|
import os
|
|
|
|
class LookupModule(object):
|
|
|
|
def __init__(self, basedir=None, **kwargs):
|
|
self.basedir = basedir
|
|
|
|
def run(self, terms, inject=None, **kwargs):
|
|
|
|
try:
|
|
terms = template.template(self.basedir, terms, inject)
|
|
except Exception, e:
|
|
pass
|
|
|
|
if isinstance(terms, basestring):
|
|
terms = [ terms ]
|
|
|
|
ret = []
|
|
for term in terms:
|
|
var = term.split()[0]
|
|
ret.append(os.getenv(var, ''))
|
|
return ret
|