mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
deprecate all bare variable conversions (not debug)
now deprecation message appears with variable name in all spots where this occurs debug's var= option is excluded as this is only place where bare variables shold actually be accepted.
This commit is contained in:
parent
28cf4bc00b
commit
dc15eb806e
2 changed files with 13 additions and 4 deletions
|
@ -46,7 +46,7 @@ class ActionModule(ActionBase):
|
||||||
|
|
||||||
elif 'var' in self._task.args:
|
elif 'var' in self._task.args:
|
||||||
try:
|
try:
|
||||||
results = self._templar.template(self._task.args['var'], convert_bare=True, fail_on_undefined=True)
|
results = self._templar.template(self._task.args['var'], convert_bare=True, fail_on_undefined=True, bare_deprecated=False)
|
||||||
if results == self._task.args['var']:
|
if results == self._task.args['var']:
|
||||||
raise AnsibleUndefinedVariable
|
raise AnsibleUndefinedVariable
|
||||||
except AnsibleUndefinedVariable:
|
except AnsibleUndefinedVariable:
|
||||||
|
|
|
@ -46,6 +46,12 @@ except ImportError:
|
||||||
|
|
||||||
from numbers import Number
|
from numbers import Number
|
||||||
|
|
||||||
|
try:
|
||||||
|
from __main__ import display
|
||||||
|
except ImportError:
|
||||||
|
from ansible.utils.display import Display
|
||||||
|
display = Display()
|
||||||
|
|
||||||
__all__ = ['Templar']
|
__all__ = ['Templar']
|
||||||
|
|
||||||
# A regex for checking to see if a variable we're trying to
|
# A regex for checking to see if a variable we're trying to
|
||||||
|
@ -269,7 +275,7 @@ class Templar:
|
||||||
self._available_variables = variables
|
self._available_variables = variables
|
||||||
self._cached_result = {}
|
self._cached_result = {}
|
||||||
|
|
||||||
def template(self, variable, convert_bare=False, preserve_trailing_newlines=True, escape_backslashes=True, fail_on_undefined=None, overrides=None, convert_data=True, static_vars = [''], cache = True):
|
def template(self, variable, convert_bare=False, preserve_trailing_newlines=True, escape_backslashes=True, fail_on_undefined=None, overrides=None, convert_data=True, static_vars = [''], cache = True, bare_deprecated=True):
|
||||||
'''
|
'''
|
||||||
Templates (possibly recursively) any given data as input. If convert_bare is
|
Templates (possibly recursively) any given data as input. If convert_bare is
|
||||||
set to True, the given data will be wrapped as a jinja2 variable ('{{foo}}')
|
set to True, the given data will be wrapped as a jinja2 variable ('{{foo}}')
|
||||||
|
@ -290,7 +296,7 @@ class Templar:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if convert_bare:
|
if convert_bare:
|
||||||
variable = self._convert_bare_variable(variable)
|
variable = self._convert_bare_variable(variable, bare_deprecated=bare_deprecated)
|
||||||
|
|
||||||
if isinstance(variable, string_types):
|
if isinstance(variable, string_types):
|
||||||
result = variable
|
result = variable
|
||||||
|
@ -366,7 +372,7 @@ class Templar:
|
||||||
'''
|
'''
|
||||||
return self.environment.block_start_string in data or self.environment.variable_start_string in data
|
return self.environment.block_start_string in data or self.environment.variable_start_string in data
|
||||||
|
|
||||||
def _convert_bare_variable(self, variable):
|
def _convert_bare_variable(self, variable, bare_deprecated):
|
||||||
'''
|
'''
|
||||||
Wraps a bare string, which may have an attribute portion (ie. foo.bar)
|
Wraps a bare string, which may have an attribute portion (ie. foo.bar)
|
||||||
in jinja2 variable braces so that it is evaluated properly.
|
in jinja2 variable braces so that it is evaluated properly.
|
||||||
|
@ -376,6 +382,9 @@ class Templar:
|
||||||
contains_filters = "|" in variable
|
contains_filters = "|" in variable
|
||||||
first_part = variable.split("|")[0].split(".")[0].split("[")[0]
|
first_part = variable.split("|")[0].split(".")[0].split("[")[0]
|
||||||
if (contains_filters or first_part in self._available_variables) and self.environment.variable_start_string not in variable:
|
if (contains_filters or first_part in self._available_variables) and self.environment.variable_start_string not in variable:
|
||||||
|
if bare_deprecated:
|
||||||
|
display.deprecated("Using bare variables is deprecated. Update your playbooks so that the environment value uses the full variable syntax ('%s%s%s')" %
|
||||||
|
(self.environment.variable_start_string, variable, self.environment.variable_end_string))
|
||||||
return "%s%s%s" % (self.environment.variable_start_string, variable, self.environment.variable_end_string)
|
return "%s%s%s" % (self.environment.variable_start_string, variable, self.environment.variable_end_string)
|
||||||
|
|
||||||
# the variable didn't meet the conditions to be converted,
|
# the variable didn't meet the conditions to be converted,
|
||||||
|
|
Loading…
Reference in a new issue