Viewing File: /usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyc

ó
oBú]c@s$ddlmZddlZddlZyddlmZWnek
rUeZnXddl	m
Z
ddl	mZddl
mZddlmZmZddlmZmZmZmZdd	lmZejeƒZd
e
jfd„ƒYZed„Zed
„Z dddd„Z!dS(iÿÿÿÿ(tEACCESN(tUndefinedError(thandlers(tlog(tINSTANCE_JSON_FILE(t
render_stringtMISSING_JINJA_PREFIX(tb64dt	load_filet	load_jsont
json_dumps(t
PER_ALWAYStJinjaTemplatePartHandlercBs#eZdgZd„Zd„ZRS(s## template: jinjacKsptjj|tddƒ||_i|_x>|jdgƒD]*}x!|jƒD]}||j|<qQWq>WdS(Ntversionitsub_handlers(RtHandlert__init__RtpathsRtgett
list_types(tselfRt_kwargsthandlertctype((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyRs		cCså|tjkrdStjj|jjtƒ}t|||ƒ}|sJdStj	|ƒ}	|j
j|	ƒ}
|
sˆtj
d||	ƒdS|
jdkr¶|
j||||||ƒn+|
jdkrá|
j|||||ƒndS(NsPIgnoring jinja template for %s. Could not find supported sub-handler for type %sii(RtCONTENT_SIGNALStostpathtjoinRtrun_dirRtrender_jinja_payload_from_filettype_from_starts_withRRtLOGtwarningthandler_versionthandle_part(RtdataRtfilenametpayloadt	frequencytheaderstjinja_json_filetrendered_payloadtsubtypetsub_handler((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyR"$s(
(t__name__t
__module__tprefixesRR"(((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyRs		cCs¨i}d}tjj|ƒs1td|ƒ‚nytt|ƒƒ}Wn;ttfk
r„}|j	t
kr…td|ƒ‚q…nXt||||ƒ}|s¤dS|S(sRRender a jinja template payload sourcing variables from jinja_vars_path.

    @param payload: String of jinja template content. Should begin with
        ## template: jinja
.
    @param payload_fn: String representing the filename from which the payload
        was read used in error reporting. Generally in part-handling this is
        'part-##'.
    @param instance_data_file: A path to a json file containing variables that
        will be used as jinja template variables.

    @return: A string of jinja-rendered content with the jinja header removed.
        Returns None on error.
    sFCannot render jinja template vars. Instance data not yet present at %ssGCannot render jinja template vars. No read permission on '%s'. Try sudoN(tNoneRRtexiststRuntimeErrorR	RtIOErrortOSErrorterrnoRtrender_jinja_payload(R%t
payload_fntinstance_data_filetdebugt
instance_dataR)te((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyR;s$
c	Csèt|d|jdgƒƒ}|r=tjdt|ƒƒnyt||ƒ}Wn3ttfk
r…}tjd|t	|ƒƒdSXgtjdt
|ƒD]}d|jt
dƒ^q}|rätjd|d	j|ƒƒn|S(
Ntdecode_pathssbase64-encoded-keyssConverted jinja variables
%ss"Ignoring jinja template for %s: %ss%s[^\s]+s'%s'ts:Could not render jinja template variables in file '%s': %ss, (tconvert_jinja_instance_dataRRR8R
Rt	TypeErrortJUndefinedErrorR tstrR/tretfindallRtreplaceR(	R%R6R9R8tinstance_jinja_varsR)R:tvartwarnings((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyR5_s(	0R<t/cCs*i}g|D]}|jddƒ^q
}xøt|jƒƒD]ä\}}d|krk|jddƒ}n|r†dj|||ƒn|}||kr§t|ƒ}nt|tƒrt||d|d|ƒ||<tj	d|ƒr"x+||jƒD]\}	}
|
||	<qøWq"q>|||<q>W|S(s¢Process instance-data.json dict for use in jinja templates.

    Replace hyphens with underscores for jinja templates and decode any
    base64_encoded_keys.
    t-t_s	{0}{1}{2}tsepR;sv\d+(
RCtsortedtitemstformatRt
isinstancetdictR=RAtmatch(R#tprefixRJR;tresultRtkeytvaluetkey_pathtsubkeytsubvalue((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyR=ws %!(("R4RRRAtjinja2.exceptionsRR?tImportErrort	Exceptiont	cloudinitRRtloggingtcloudinit.sourcesRtcloudinit.templaterRRtcloudinit.utilRRR	R
tcloudinit.settingsRt	getLoggerR,RRRtFalseRR5R=(((sE/usr/lib/python2.7/site-packages/cloudinit/handlers/jinja_template.pyt<module>s"

"$#
Back to Directory File Manager