Example #1
0
def compile_conf_templates(conf, tmpldirs, workdir, templates_key="templates"):
    """
    Compile template config files.

    :param conf: Config object holding templates info
    :param tmpldirs: Template paths
    :param workdir: Working dir
    :param template_keys: Template keys to search each templates
    """
    for k, v in conf.get(templates_key, {}).iteritems():
        src = v.get("src", None)
        dst = v.get("dst", src)

        if src is None:
            logging.warn("{} lacks 'src' parameter".format(k))
            continue

        if os.path.sep in src:
            logging.debug("Adding subdirs of source to template paths: " + src)
            srcdirs = [os.path.join(d, os.path.dirname(src)) for d in tmpldirs]
        else:
            srcdirs = tmpldirs

        # strip dir part as it will be searched from srcdir.
        src = os.path.basename(src)
        dst = os.path.join(workdir, dst)
        tpaths = srcdirs + [workdir]

        logging.debug("Generating {} from {} [{}]".format(dst, src, k))
        logging.debug("Template path: " + ", ".join(tpaths))
        anytemplate.render_to(src,
                              conf,
                              dst,
                              at_paths=tpaths,
                              at_engine="jinja2")
Example #2
0
def compile_conf_templates(conf, tmpldirs, workdir, templates_key="templates"):
    """
    Compile template config files.

    :param conf: Config object holding templates info
    :param tmpldirs: Template paths
    :param workdir: Working dir
    :param template_keys: Template keys to search each templates
    """
    for k, v in conf.get(templates_key, {}).iteritems():
        src = v.get("src", None)
        dst = v.get("dst", src)

        if src is None:
            logging.warn("{} lacks 'src' parameter".format(k))
            continue

        if os.path.sep in src:
            logging.debug("Adding subdirs of source to template paths: " + src)
            srcdirs = [os.path.join(d, os.path.dirname(src)) for d in tmpldirs]
        else:
            srcdirs = tmpldirs

        # strip dir part as it will be searched from srcdir.
        src = os.path.basename(src)
        dst = os.path.join(workdir, dst)
        tpaths = srcdirs + [workdir]

        logging.debug("Generating {} from {} [{}]".format(dst, src, k))
        logging.debug("Template path: " + ", ".join(tpaths))
        anytemplate.render_to(src, conf, dst, at_paths=tpaths,
                              at_engine="jinja2")
Example #3
0
def render_to(template, context=None, output=None, tpaths=None):
    """
    :param template: Template file path
    :param context: A dict or dict-like object to instantiate given
        template file
    :param output: File path to write the rendered result string to or None/'-'
        to print it to stdout
    :param tpaths: Template search paths
    """
    anytemplate.render_to(template, context, output, at_paths=tpaths,
                          at_engine="jinja2", at_ask_missing=True,
                          extensions=_JINJA2_EXTS)
Example #4
0
def main(argv=sys.argv):
    if len(argv) < 5:
        print("Usage: %s TEMPLATE_FILE CONTEXT_FILE OUTPUT_FILE TPATHS" % argv[0])
        sys.exit(-1)

    (template, context_f, output, paths) = argv[1:5]
    tpaths = paths.split(':')
    context = anyconfig.load(context_f)

    anytemplate.render_to(template, context, output, at_paths=tpaths,
                          at_engine="jinja2", at_ask_missing=True,
                          extensions=_JINJA2_EXTS)
Example #5
0
def render_to(template, context=None, output=None, tpaths=None):
    """
    :param template: Template file path
    :param context: A dict or dict-like object to instantiate given
        template file
    :param output: File path to write the rendered result string to or None/'-'
        to print it to stdout
    :param tpaths: Template search paths
    """
    anytemplate.render_to(template,
                          context,
                          output,
                          at_paths=tpaths,
                          at_engine="jinja2",
                          at_ask_missing=True,
                          extensions=_JINJA2_EXTS)
Example #6
0
def main(argv=sys.argv):
    if len(argv) < 5:
        print("Usage: %s TEMPLATE_FILE CONTEXT_FILE OUTPUT_FILE TPATHS" %
              argv[0])
        sys.exit(-1)

    (template, context_f, output, paths) = argv[1:5]
    tpaths = paths.split(':')
    context = anyconfig.load(context_f)

    anytemplate.render_to(template,
                          context,
                          output,
                          at_paths=tpaths,
                          at_engine="jinja2",
                          at_ask_missing=True,
                          extensions=_JINJA2_EXTS)
Example #7
0
def dump_depgraph(root, ers, workdir=None, outname="rpm_depgraph_gv", tpaths=fleure.globals.FLEURE_TEMPLATE_PATHS):
    """
    Make up context to generate RPM dependency graph w/ graphviz (sfdp) from
    the RPM database files for given host group.

    :param root: Host group's root dir where 'var/lib/rpm' exists
    :param ers: List of errata dict, see :func:`analyze_errata` in fleure.main
    :param workdir: Working dir to dump result
    :param outname: Output file base name
    :param tpaths: A list of template search paths
    """
    if workdir is None:
        workdir = root

    ctx = _make_depgraph_context(root, ers)
    fleure.utils.json_dump(ctx, os.path.join(workdir, outname + ".json"))

    output = os.path.join(workdir, outname + ".dot")
    opts = dict(at_paths=tpaths, at_engine="jinja2", at_ask_missing=True)
    anytemplate.render_to("rpm_depgraph_gv.dot.j2", ctx, output, **opts)
    anytemplate.render_to("rpm_depgraph_gv.css.j2", ctx, os.path.join(workdir, outname + ".css"), **opts)
    anytemplate.render_to("rpm_depgraph.html.j2", ctx, os.path.join(workdir, "rpm_depgraph.html"), **opts)

    output2 = os.path.join(workdir, outname + ".svg")
    cmd_s = "sfdp -Tsvg -o%s %s" % (output2, output)
    (rcode, out, err) = fleure.utils.subproc_call(cmd_s, timeout=120)
    if rcode != 0:
        if not err:
            err = "Maybe timeout occurs"
        LOG.warn(_("Failed to generate a SVG file: in=%s, out=%s, " "out/err=%s/%s"), output, output2, out, err)