
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
3
\me                 @   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
 dZejeZdddZdd	d
Zdd Zedkrejeee j  dS )z,Debug jinja template rendering of user-data.    N)read_cfg_paths)JinjaLoadErrorNotJinjaErrorrender_jinja_payload_from_fileZ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.6/render.py
get_parser   s     r   Fc             C   s0  |r
|}nNt  }tj }|jd}|dkrT|jd}tjj|sXtjd|| |}n|}tjj|sttjd| dS y t	| }|j
 }W dQ R X W n  tk
r   tjd|  dS X yt|| ||rd	nd
d}	W n6 ttfk
r }
 ztjdt|
 dS d}
~
X nX |	s tjd|  dS tj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   Zinstance_data_sensitivez4Missing root-readable %s. Using redacted %s instead.z#Missing instance-data.json file: %s   NzMissing user-data file: %sTF)ZpayloadZ
payload_fnZinstance_data_filedebugz5Cannot render from instance data due to exception: %sz#Unable to render user-data file: %s)r   osgetuidZget_runpathpathexistsLOGZwarningerroropenreadIOErrorr   r   r   reprsysstdoutwrite)Zuser_data_pathZinstance_data_pathr   Zinstance_data_fnpathsZuidZredacted_data_fnstreamr   Zrendered_payloader   r   r   render_template8   sL    


r+   c             C   s   t |j|j|jS )N)r+   r   r   r   )_nameargsr   r   r   handle_argsm   s    r.   __main__)N)NF)r   r   Zloggingr   r%   Zcloudinit.cmd.develr   Z!cloudinit.handlers.jinja_templater   r   r   r   Z	getLogger__name__r   r   r+   r.   exit
parse_argsr   r   r   r   <module>   s   

 
5