~harlowja/cloud-init/changeable-templates

« back to all changes in this revision

Viewing changes to cloudinit/templater.py

  • Committer: Joshua Harlow
  • Date: 2014-03-08 03:33:41 UTC
  • Revision ID: harlowja@yahoo-inc.com-20140308033341-nfkhdben0e2hijf1
Add some basic template tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
 
45
45
 
46
46
def detect_template(text):
47
 
    try:
 
47
    if text.find("\n") != -1:
48
48
        ident, rest = text.split("\n", 1)
49
 
    except ValueError:
 
49
    else:
 
50
        ident = text
 
51
        rest = ''
 
52
    type_match = TYPE_MATCHER.match(ident)
 
53
    if not type_match:
50
54
        return (DEF_RENDERER, text)
 
55
    template_type = type_match.group(1).lower().strip()
 
56
    if template_type not in RENDERERS:
 
57
        raise ValueError("Unknown template type '%s' requested"
 
58
                         % template_type)
51
59
    else:
52
 
        type_match = TYPE_MATCHER.match(ident)
53
 
        if not type_match:
54
 
            return (DEF_RENDERER, text)
55
 
        template_type = type_match.group(1).lower().strip()
56
 
        if template_type not in RENDERERS:
57
 
            raise ValueError("Unknown template type '%s' requested"
58
 
                             % template_type)
59
 
        else:
60
 
            return (template_type, rest)
61
 
 
 
60
        return (template_type, rest)
 
61
    
62
62
 
63
63
def render_from_file(fn, params):
64
64
    return render_string(util.load_file(fn), params)
74
74
        params = {}
75
75
    try:
76
76
        renderer, content = detect_template(content)
77
 
    except ValueError:
 
77
    except ValueError as e:
78
78
        renderer = DEF_RENDERER
 
79
        LOG.warn("%s, using renderer %s", e, renderer)
79
80
    LOG.debug("Rendering %s using renderer '%s'", content, renderer)
80
81
    return RENDERERS[renderer](content, params)