8889841có oBú]c@sÌdZddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z m Z dZejeƒZdd „Zd „Zd „Zed krÈejeƒƒndS( s,Debug jinja template rendering of user-data.iÿÿÿÿN(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 CsÊtt|jrtjntjƒ|jr7|j}nˆtƒ}tj ƒ}tj j |j t ƒ}|dkr¹tj j |j tƒ}tj j|ƒs¿tjd||ƒ|}q¿n|}tj j|ƒsåtjd|ƒdSy(t|jƒ}|jƒ}WdQXWn%tk r4tjd|jƒdSXy7td|d|jd |d |jrbtntƒ}Wn*tk r˜} tjd t| ƒƒdSX|s¶tjd |jƒdStjj|ƒdS( sýRender 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"         cCstƒjƒ}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