def render_jinja(dict_, template_str):
"""Render dict onto jinja template and return the string result"""
name = 'jvars'
def loader(n):
if n == name:
return template_str
else:
kkdir = pathfinder.PathFinder.find_kolla_kubernetes_dir()
path = os.path.join(kkdir, n)
with open(path) as f:
d = f.read()
return d
j2env = jinja2.Environment(
loader=jinja2.FunctionLoader(loader))
# Do not print type for bools "!!bool" on output
j2env.filters['bool'] = TypeUtils.str_to_bool
j2env.filters['min'] = min
j2env.filters['b64encode'] = lambda x: \
base64.b64encode(x.encode('ascii'))
j2env.filters['b64decode'] = base64.b64decode
j2env.filters['to_nice_yaml'] = lambda x: \
yaml.safe_dump(x, default_flow_style=False) if x else ''
# Add a "raise" keyword for raising exceptions from within jinja
def jinja_raise(message):
raise Exception(message)
j2env.globals['raise'] = jinja_raise
# Add a keyword for accessing KubeUtils from within jinja
j2env.globals['KubeUtils'] = KubeUtils
# Render the template
rendered_template = j2env.get_template(name).render(dict_)
return rendered_template + "\n"
评论列表
文章目录