@ -46,6 +46,12 @@ except ImportError:
from numbers import Number
try :
from __main__ import display
except ImportError :
from ansible . utils . display import Display
display = Display ( )
__all__ = [ ' Templar ' ]
# A regex for checking to see if a variable we're trying to
@ -269,7 +275,7 @@ class Templar:
self . _available_variables = variables
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
set to True , the given data will be wrapped as a jinja2 variable ( ' {{ foo}} ' )
@ -290,7 +296,7 @@ class Templar:
try :
if convert_bare :
variable = self . _convert_bare_variable ( variable )
variable = self . _convert_bare_variable ( variable , bare_deprecated = bare_deprecated )
if isinstance ( variable , string_types ) :
result = variable
@ -366,7 +372,7 @@ class Templar:
'''
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 )
in jinja2 variable braces so that it is evaluated properly .
@ -376,6 +382,9 @@ class Templar:
contains_filters = " | " in variable
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 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 )
# the variable didn't meet the conditions to be converted,