
    x[h                        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j                  e      Zd
dZddZd Zed	k(  r- ej*                   ee e       j-                                      yy)z,Debug jinja template rendering of user-data.    N)read_cfg_paths)JinjaLoadErrorJinjaSyntaxParsingExceptionNotJinjaErrorrender_jinja_payload_from_filerenderc                     | st        j                  t        t              } | j	                  dt
        d       | j	                  ddt
        dt                | j	                  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)parsers    </usr/lib/python3/dist-packages/cloudinit/cmd/devel/render.py
get_parserr      s     ((dH
#$J   ,-/   :   M    c                    |r|}nt               }t        j                         }|j                  d      }|dk(  rJ|j                  d      }t        j                  j                  |      st        j                  d||       |}n|}t        j                  j                  |      st        j                  d|       y	 t        |       5 }|j                         }ddd       	 t        | ||rd	nd
      }	|	st        j                  d|        yt$        j&                  j)                  |	       y# 1 sw Y   VxY w# t        $ r t        j                  d|        Y yw xY w# t        t        f$ r)}
t        j                  dt        |
             Y d}
~
yd}
~
wt         $ r*}
t        j                  d| t#        |
             Y d}
~
yd}
~
ww xY w)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: %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es              r   render_templater=   :   s    - iik ,,_=!8$001JK77>>"23J$$
 $4 /77>>*+		79IJ.! 	&VI	&
9%/$U	
$ 		7HJJ%&9	& 	& 		.? M* 		CT!W	
 & 		@F	

 sN   =D: D.D: "E .D73D: :EEG.FG GGc                 X    t        |j                  |j                  |j                        S N)r=   r   r   r$   )_nameargss     r   handle_argsrB   v   s    4>>4+=+=tzzJJr   __main__r?   )NF)r   r   loggingr%   r1   cloudinit.cmd.develr   !cloudinit.handlers.jinja_templater   r   r   r   r   run_dirr   	getLogger__name__r*   r   r=   rB   exit
parse_args r   r   <module>rM      s   
 3   	 
 .  "$,, g!@9xK zCHH[z|6689: r   