|
|
|
@ -32,6 +32,8 @@ import pwd
|
|
|
|
|
import ast
|
|
|
|
|
import traceback
|
|
|
|
|
|
|
|
|
|
from ansible.utils.string_functions import count_newlines_from_end
|
|
|
|
|
|
|
|
|
|
class Globals(object):
|
|
|
|
|
|
|
|
|
|
FILTERS = None
|
|
|
|
@ -495,8 +497,14 @@ def template_from_file(basedir, path, vars):
|
|
|
|
|
except jinja2.exceptions.UndefinedError, e:
|
|
|
|
|
raise errors.AnsibleUndefinedVariable("One or more undefined variables: %s" % str(e))
|
|
|
|
|
|
|
|
|
|
if data.endswith('\n') and not res.endswith('\n'):
|
|
|
|
|
res = res + '\n'
|
|
|
|
|
# The low level calls above do not preserve the newline
|
|
|
|
|
# characters at the end of the input data, so we use the
|
|
|
|
|
# calculate the difference in newlines and append them
|
|
|
|
|
# to the resulting output for parity
|
|
|
|
|
res_newlines = count_newlines_from_end(res)
|
|
|
|
|
data_newlines = count_newlines_from_end(data)
|
|
|
|
|
if data_newlines > res_newlines:
|
|
|
|
|
res += '\n' * (data_newlines - res_newlines)
|
|
|
|
|
|
|
|
|
|
if isinstance(res, unicode):
|
|
|
|
|
# do not try to re-template a unicode string
|
|
|
|
|