| Current Path : /lib/python3/dist-packages/cloudinit/cmd/devel/__pycache__/ |
| Current File : //lib/python3/dist-packages/cloudinit/cmd/devel/__pycache__/render.cpython-38.pyc |
U
�Ad � @ s� d Z ddlZddlZddlZddlmZ ddlmZmZ ddl m
Z
mZmZ dZ
e�e
�Zddd�Zdd
d�Zdd
� Zedkr�e�ee
e� �� �� dS )z,Debug jinja template rendering of user-data.� N)�log)�addLogHandlerCLI�read_cfg_paths)�JinjaLoadError�
NotJinjaError�render_jinja_payload_from_fileZrenderc C sL | st jttd�} | jdtdd� | jddtdd� | jdd d
ddd
� | 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.
)�progZdescription� 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 sP t t|rtjntj� |r |}nNt� }t�� }|�d�}|dkrj|�d�}tj �
|�snt�d||� |}n|}tj �
|�s�t�d|� dS z t
| ��}|�� }W 5 Q R X W n" tk
r� t�d| � Y dS X zt|| ||r�dnd d
�} W n> ttfk
�r( }
zt�dt|
�� W Y �dS d}
~
X Y nX | �s@t�d
| � dS tj�| � 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_datar Zinstance_data_sensitivez4Missing root-readable %s. Using redacted %s instead.z#Missing instance-data.json file: %s� zMissing user-data file: %sTF)ZpayloadZ
payload_fnZinstance_data_file�debugz5Cannot render from instance data due to exception: %sNz#Unable to render user-data file: %s)r �LOGr �DEBUGZWARNINGr �os�getuidZget_runpath�path�existsZwarning�error�open�read�IOErrorr r r �repr�sys�stdout�write)Zuser_data_pathZinstance_data_pathr Zinstance_data_fn�pathsZuidZredacted_data_fn�streamr Zrendered_payload�er r r �render_template8 sV
�
�
�r- c C s t |j|j|j�S )N)r- r r r )�_name�argsr r r �handle_argsn s r0 �__main__)N)NF)r r r r'