oB]c@sdZddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z m Z dZejeZdd Zd Zd Zed krejendS( s,Debug jinja template rendering of user-data.iN(trender_jinja_payload_from_file(tlog(tINSTANCE_JSON_FILEtINSTANCE_JSON_SENSITIVE_FILEi(taddLogHandlerCLItread_cfg_pathstrenderc Cs||s!tjdtdt}n|jddtdd|jdddtdd |jd d d d dtdd|S(sBuild or extend and arg parser for jinja render utility. @param parser: Optional existing ArgumentParser instance representing the subcommand which will be extended to support the args of this utility. @returns: ArgumentParser with proper argument configuration. tprogt descriptiont user_datattypethelps$Path to the user-data file to renders-is--instance-datasXOptional path to instance-data.json file. Defaults to /run/cloud-init/instance-data.jsons-ds--debugtactiont store_truetdefaults+Add verbose messages during template render(targparsetArgumentParsertNAMEt__doc__t add_argumenttstrtFalse(tparser((s>/usr/lib/python2.7/site-packages/cloudinit/cmd/devel/render.pyt get_parsersc Cstt|jrtjntj|jr7|j}nt}tj }tj j |j t }|dkrtj j |j t}tj j|stjd|||}qn|}tj j|stjd|dSy(t|j}|j}WdQXWn%tk r4tjd|jdSXy7td|d|jd |d |jrbtnt}Wn*tk r} tjd t| dSX|stjd |jdStjj|dS( sRender the provided user-data template file using instance-data values. Also setup CLI log handlers to report to stderr since this is a development utility which should be run by a human on the CLI. @return 0 on success, 1 on failure. is4Missing root-readable %s. Using redacted %s instead.s#Missing instance-data.json file: %siNsMissing user-data file: %stpayloadt payload_fntinstance_data_filetdebugs$Cannot render from instance data: %ss#Unable to render user-data file: %s(RtLOGRRtDEBUGtWARNINGt instance_dataRtostgetuidtpathtjointrun_dirRRtexiststwarningterrortopenR treadtIOErrorRtTrueRt RuntimeErrorRtsyststdouttwrite( tnametargstinstance_data_fntpathstuidtredacted_data_fntstreamR trendered_payloadte((s>/usr/lib/python2.7/site-packages/cloudinit/cmd/devel/render.pyt handle_args(sJ"         cCstj}tt|S(N(Rt parse_argsR9R(R1((s>/usr/lib/python2.7/site-packages/cloudinit/cmd/devel/render.pytmainYst__main__(RRR R-t!cloudinit.handlers.jinja_templateRt cloudinitRtcloudinit.sourcesRRtRRRt getLoggerRtNoneRR9R;t__name__texit(((s>/usr/lib/python2.7/site-packages/cloudinit/cmd/devel/render.pyts     1