def render_jinja(dict_, template_str):
"""Render dict onto jinja template and return the string result"""
name = 'jvars'
j2env = jinja2.Environment(
loader=jinja2.DictLoader({
name: template_str
}),
undefined=jinja2.StrictUndefined,
extensions=["jinja2.ext.do"])
# Add some custom jinja filters
j2env.filters['bool'] = TypeUtils.str_to_bool
j2env.filters['yaml'] = YamlUtils.yaml_dict_to_string
j2env.filters['base64encode'] = base64.b64encode
# Add a "raise" keyword for raising exceptions from within jinja
j2env.globals['raise'] = JinjaUtils._jinja_keyword_raise
j2env.globals['gen_names'] = JinjaUtils._jinja_keyword_gen_names
j2env.globals['mkpass'] = JinjaUtils.mkpass
j2env.globals['keygen'] = JinjaUtils.keygen
j2env.globals['self_signed_cert_gen'] = JinjaUtils.self_signed_cert_gen
j2env.globals['ceph_key'] = JinjaUtils.ceph_key
j2env.globals['uuid'] = JinjaUtils.uuid
# Render the template
rendered_template = j2env.get_template(name).render(dict_)
return rendered_template + "\n"
评论列表
文章目录