allow unicode (utf8) characters in jinja templates
This commit is contained in:
parent
ee34c0c154
commit
39a92f9cd6
2 changed files with 8 additions and 4 deletions
|
@ -29,6 +29,7 @@ import tempfile
|
||||||
import time
|
import time
|
||||||
import base64
|
import base64
|
||||||
import getpass
|
import getpass
|
||||||
|
import codecs
|
||||||
|
|
||||||
import ansible.constants as C
|
import ansible.constants as C
|
||||||
import ansible.connection
|
import ansible.connection
|
||||||
|
@ -202,7 +203,7 @@ class Runner(object):
|
||||||
|
|
||||||
afd, afile = tempfile.mkstemp()
|
afd, afile = tempfile.mkstemp()
|
||||||
afo = os.fdopen(afd, 'w')
|
afo = os.fdopen(afd, 'w')
|
||||||
afo.write(data)
|
afo.write(data.encode("utf8"))
|
||||||
afo.flush()
|
afo.flush()
|
||||||
afo.close()
|
afo.close()
|
||||||
|
|
||||||
|
@ -512,6 +513,7 @@ class Runner(object):
|
||||||
|
|
||||||
source = utils.template(source, inject, self.setup_cache)
|
source = utils.template(source, inject, self.setup_cache)
|
||||||
|
|
||||||
|
print source
|
||||||
(host, ok, data, err) = (None, None, None, None)
|
(host, ok, data, err) = (None, None, None, None)
|
||||||
|
|
||||||
if not self.is_playbook:
|
if not self.is_playbook:
|
||||||
|
@ -542,7 +544,8 @@ class Runner(object):
|
||||||
copy_module = self._transfer_module(conn, tmp, 'copy')
|
copy_module = self._transfer_module(conn, tmp, 'copy')
|
||||||
|
|
||||||
# template the source data locally
|
# template the source data locally
|
||||||
source_data = file(utils.path_dwim(self.basedir, source)).read()
|
source_data = codecs.open(utils.path_dwim(self.basedir, source), encoding="utf8").read()
|
||||||
|
print source_data
|
||||||
resultant = ''
|
resultant = ''
|
||||||
try:
|
try:
|
||||||
resultant = utils.template(source_data, inject, self.setup_cache)
|
resultant = utils.template(source_data, inject, self.setup_cache)
|
||||||
|
|
|
@ -21,6 +21,7 @@ import sys
|
||||||
import os
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
import re
|
import re
|
||||||
|
import codecs
|
||||||
import jinja2
|
import jinja2
|
||||||
import yaml
|
import yaml
|
||||||
import optparse
|
import optparse
|
||||||
|
@ -233,7 +234,7 @@ def varReplace(raw, vars):
|
||||||
def template(text, vars, setup_cache, no_engine=False):
|
def template(text, vars, setup_cache, no_engine=False):
|
||||||
''' run a text buffer through the templating engine '''
|
''' run a text buffer through the templating engine '''
|
||||||
vars = vars.copy()
|
vars = vars.copy()
|
||||||
text = varReplace(str(text), vars)
|
text = varReplace(unicode(text), vars)
|
||||||
vars['hostvars'] = setup_cache
|
vars['hostvars'] = setup_cache
|
||||||
if no_engine:
|
if no_engine:
|
||||||
# used when processing include: directives so that Jinja is evaluated
|
# used when processing include: directives so that Jinja is evaluated
|
||||||
|
@ -248,7 +249,7 @@ def double_template(text, vars, setup_cache):
|
||||||
|
|
||||||
def template_from_file(path, vars, setup_cache, no_engine=False):
|
def template_from_file(path, vars, setup_cache, no_engine=False):
|
||||||
''' run a file through the templating engine '''
|
''' run a file through the templating engine '''
|
||||||
data = file(path).read()
|
data = codecs.open(path, encoding="utf8").read()
|
||||||
return template(data, vars, setup_cache, no_engine=no_engine)
|
return template(data, vars, setup_cache, no_engine=no_engine)
|
||||||
|
|
||||||
def parse_yaml(data):
|
def parse_yaml(data):
|
||||||
|
|
Loading…
Reference in a new issue