o
    x[hº  ã                   @   s    d Z ddl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	m
Z
mZ dZeƒ jZe e¡Zddd„Zdd	d
„Zdd„ ZedkrNe eeeƒ  ¡ ƒ¡ dS dS )z,Debug jinja template rendering of user-data.é    N)Úread_cfg_paths)ÚJinjaLoadErrorÚJinjaSyntaxParsingExceptionÚNotJinjaErrorÚrender_jinja_payload_from_fileÚrenderc                 C   sR   | s	t jttd�} | jdtdd� | jddtdt› �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-dataz6Optional path to instance-data.json file. Defaults to z-dz--debugÚ
store_trueFz+Add verbose messages during template render)ÚactionÚdefaultr   )ÚargparseÚArgumentParserÚNAMEÚ__doc__Úadd_argumentÚstrÚCLOUDINIT_RUN_DIR)Úparser© r   ú</usr/lib/python3/dist-packages/cloudinit/cmd/devel/render.pyÚ
get_parser   s*   ÿÿû	ûr   Fc              
   C   s|  |r|}n't ƒ }t ¡ }| d¡}|dkr*| d¡}tj |¡s)t d||¡ |}n|}tj |¡s:t d|¡ dS zt	| ƒ�}| 
¡ }W d  ƒ n1 sNw   Y  W n tyd   t d| ¡ Y dS w zt|| ||rnd	nd
d�}	W n8 ttfy� }
 zt dt|
ƒ¡ W Y d}
~
dS d}
~
w ty« }
 zt d| t|
ƒ¡ W Y d}
~
dS d}
~
ww |	s¶t d| ¡ dS tj |	¡ dS )zý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.
    Ú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: %sz2Failed to render templated user-data file '%s'. %sz#Unable to render user-data file: %s)r   ÚosÚgetuidÚget_runpathÚpathÚexistsÚLOGÚwarningÚerrorÚopenÚreadÚIOErrorr   r   r   Úreprr   r   ÚsysÚstdoutÚwrite)Úuser_data_pathÚinstance_data_pathr!   Úinstance_data_fnÚpathsÚuidÚredacted_data_fnÚstreamr
   Úrendered_payloadÚer   r   r   Úrender_template:   sn   

ý€

ÿ€þ

üÿ€ý€úr:   c                 C   s   t |j|j|jƒS ©N)r:   r
   r   r!   )Ú_nameÚargsr   r   r   Úhandle_argsv   s   r>   Ú__main__r;   )NF)r   r   Úloggingr"   r.   Úcloudinit.cmd.develr   Ú!cloudinit.handlers.jinja_templater   r   r   r   r   Úrun_dirr   Ú	getLoggerÚ__name__r'   r   r:   r>   ÚexitÚ
parse_argsr   r   r   r   Ú<module>   s    


 <ÿ