o nnh&@sddlmZddlZddlZddlZddlZddlmZmZm Z m Z m Z m Z ddl mZddlmZddlmZmZmZmZddlmZmZmZddlmZdd lmZdd lm Z dd l!m"Z"m#Z#Gd d d e Z$dS)) annotationsN)BLOCK_END_STRINGBLOCK_START_STRINGCOMMENT_END_STRINGCOMMENT_START_STRINGVARIABLE_END_STRINGVARIABLE_START_STRING) constants) ensure_type) AnsibleErrorAnsibleFileNotFound AnsibleActionAnsibleActionFail)to_bytesto_text to_native)boolean) string_types) ActionBase)generate_ansible_template_varsAnsibleEnvironmentcs&eZdZdZdZdfdd ZZS) ActionModuleT Nc( s|durt}tt|||}~dD]*}||jjvr=t|jj|d}|dur7t|ts7t d|t |f||jj|<qz&t |jj dddd}t |jj dd dd}t |jj d ddd}Wnt yv} zt t| d} ~ ww|jj d d} |jj d d} |jj d d} |jj d|j} |jj dt}|jj dt}|jj dt}|jj dt}|jj dt}|jj dt}|jj ddpd}gd}gd}| |vr||| } zz| durt d| dus| durt d| |vrt dz|d| } Wnty!} zt t| d} ~ ww|jj dd}|dkr:dtt| j}z|j| }Wnt yY} z t d | t| fd} ~ wwt!|d!d"}zzt"|d#}z t|#d!d"}Wn t$y~t d$wWdn 1swY| d%g}|%|jj&tj'(| gg}|D]}|)tj'*|d|)|q|}|+}|,t-|jj d d| | |j.j/t0|| |d&} t||||||||d'}!| j1|d d|!d(}"Wn"t2yt3y} z t d)t | j4t| fd} ~ wwW|j5|n|j5|w|j+}#||#jd<d*D] }$|#j6|$dq,t7j8t9j:d+}%zatj'*|%tj';| }&t"t!|&d!d"d,}|j d/|#|j?|j@|j|j.|j=d0}'|,|'j|d1WtABt!|%d!d"n tABt!|%d!d"wWnt2y} z |,| jCWYd} ~ nd} ~ wwW|D|j?jEjF|SW|D|j?jEjF|S|D|j?jEjFw)2z! handler for template operations N) srcdeststatenewline_sequencevariable_start_stringvariable_end_stringblock_start_stringblock_end_stringcomment_start_stringcomment_end_stringstringz1%s is expected to be a string, but got %s insteadfollowF)strict trim_blocksT lstrip_blocksrrrrrrrr r!r"output_encodingzutf-8)z\nz\rz\r\n)r z z)'state' cannot be specified on a templatezsrc and dest are requiredz/newline_sequence needs to be one of: , or templatesmodepreservez0%03ozcould not find src=%s, %ssurrogate_or_strict)errorsrbz+Template source files must be utf-8 encodedansible_search_path)environment_class searchpathravailable_variables)rr rrr!r"r&r')preserve_trailing_newlinesescape_backslashes overridesz%s: %s) rrr rrr!r"r&r'r()dirwb)encodingr.)rrr$zansible.legacy.copy)task connection play_contextloadertemplarshared_loader_obj) task_vars)Gdictsuperrrun_taskargsr isinstancerrtyperget TypeErrorrDEFAULT_NEWLINE_SEQUENCErrrrrrindex _find_needler rstatS_IMODEosst_mode_loader get_real_filer ropenread UnicodeErrorextend_basedirpathdirnameappendjoincopyupdater_templarcopy_with_new_envr do_templater Exception__name__cleanup_tmp_filepoptempfilemkdtempCDEFAULT_LOCAL_TMPbasenamewrite_shared_loader_obj action_loader _connection _play_contextshutilrmtreeresult_remove_tmp_path_shelltmpdir)(selftmpr@rqs_typevaluer$r&r'esourcerrrrrrr r!r"r(wrong_sequencesallowed_sequencesr+ tmp_source b_tmp_sourcef template_datar2 newsearchpathp temp_varsr>r6 resultantnew_taskremove local_tempdir result_file copy_action __class__J/usr/local/lib/python3.10/dist-packages/ansible/plugins/action/template.pyrC$s             ,zActionModule.run)NN)rb __module__ __qualname__TRANSFERS_FILESrJrC __classcell__rrrrrsr)% __future__rrOrorMrejinja2.defaultsrrrrrransibler rgansible.config.managerr ansible.errorsr r r r+ansible.module_utils.common.text.convertersrrr)ansible.module_utils.parsing.convert_boolransible.module_utils.sixransible.plugins.actionransible.templaterrrrrrrs