3 \�me� �@s�dZddlZddlZddlZddlZddlmZddlmZm Z m Z dZ ej e �Zddd�Zdd d �Zd d �Ze d kr�ejee e�j���dS)z,Debug jinja template rendering of user-data.�N)�read_cfg_paths)�JinjaLoadError� NotJinjaError�render_jinja_payload_from_fileZrendercCsL|stjttd�}|jdtdd�|jddtdd�|jdd d d d d �|S)aBuild 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_parsers  rFc Cs0|r |}nNt�}tj�}|jd�}|dkrT|jd�}tjj|�sXtjd||�|}n|}tjj|�sttjd|�dSy t |��}|j �}WdQRXWn t k r�tjd|�dSXyt ||||r�d nd d �} Wn6t tfk �r} ztjd t| ��dSd} ~ XnX| �s tjd |�dStjj| �dS)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_datarZinstance_data_sensitivez4Missing root-readable %s. Using redacted %s instead.z#Missing instance-data.json file: %s�NzMissing user-data file: %sTF)ZpayloadZ payload_fnZinstance_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�LOGZwarning�error�open�read�IOErrorrrr�repr�sys�stdout�write) Zuser_data_pathZinstance_data_pathrZinstance_data_fn�pathsZuidZredacted_data_fn�streamrZrendered_payload�errr�render_template8sL          r+cCst|j|j|j�S)N)r+rrr)�_name�argsrrr� handle_argsmsr.�__main__)N)NF)rrZloggingrr%Zcloudinit.cmd.develrZ!cloudinit.handlers.jinja_templaterrrrZ getLogger�__name__rrr+r.�exit� parse_argsrrrr�<module>s   5