o
    w7e                     @   s   d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
Z
mZmZ dZeeZdddZdd
dZdd ZedkrLeeee   dS dS )z,Debug jinja template rendering of user-data.    N)log)addLogHandlerCLIread_cfg_paths)JinjaLoadErrorNotJinjaErrorrender_jinja_payload_from_filerenderc                 C   sL   | s	t jttd} | jdtdd | jddtdd | jdd	d
ddd | S )a  Build 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.
    )progdescription	user_dataz$Path to the user-data file to render)typehelpz-iz--instance-datazXOptional path to instance-data.json file. Defaults to /run/cloud-init/instance-data.jsonz-dz--debug
store_trueFz+Add verbose messages during template render)actiondefaultr   )argparseArgumentParserNAME__doc__add_argumentstr)parser r   </usr/lib/python3/dist-packages/cloudinit/cmd/devel/render.py
get_parser   s&   	r   Fc              
   C   s\  t t|rtjntj |r|}n't }t }|d}|dkr5|d}tj	
|s4td|| |}n|}tj	
|sEtd| dS zt| }| }W d   n1 sYw   Y  W n tyo   td|  Y dS w zt|| ||ryd	nd
d}	W n ttfy }
 ztdt|
 W Y d}
~
dS d}
~
ww |	std|  dS tj|	 dS )zRender 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.
    instance_datar   instance_data_sensitivez4Missing root-readable %s. Using redacted %s instead.z#Missing instance-data.json file: %s   NzMissing user-data file: %sTF)payload
payload_fninstance_data_filedebugz5Cannot render from instance data due to exception: %sz#Unable to render user-data file: %s)r   LOGr   DEBUGWARNINGr   osgetuidget_runpathpathexistswarningerroropenreadIOErrorr   r   r   reprsysstdoutwrite)user_data_pathinstance_data_pathr!   instance_data_fnpathsuidredacted_data_fnstreamr   rendered_payloader   r   r   render_template8   s`   





r<   c                 C   s   t |j|j|jS N)r<   r   r   r!   )_nameargsr   r   r   handle_argsn   s   r@   __main__r=   )NF)r   r   r%   r0   	cloudinitr   cloudinit.cmd.develr   r   !cloudinit.handlers.jinja_templater   r   r   r   	getLoggerr"   r   r<   r@   __name__exit
parse_argsr   r   r   r   <module>   s   


 6