Current File : //usr/lib/python3/dist-packages/cloudinit/config/__pycache__/cc_write_files.cpython-312.pyc
�

Ӈg��
��UdZddlZddlZddlZddlmZddlmZmZddl	m
Z
ddlmZddl
mZddlmZd	Zd
ZdZej(e�Zdd
gedgd�Zeed<dedede
deddf
d�Zd�Zddedeefd�Zd�Zd�Z d�Z!y)z"Write Files: write arbitrary files�N)�Optional)�
url_helper�util)�Cloud)�Config)�
MetaSchema)�PER_INSTANCEi�Fz
text/plain�cc_write_files�all�write_files)�id�distros�	frequency�activate_by_schema_keys�meta�name�cfg�cloud�args�returnc�:�|jdg�}|D�cgc]}tj|dt�s|��!}}|stjd|�ytj|j�}t|||jj|�ycc}w)Nr�deferzESkipping module named %s, no/empty 'write_files' key in configuration)�getr�get_cfg_option_bool�
DEFAULT_DEFER�LOG�debug�fetch_ssl_details�pathsr�distro�
default_owner)rrrr�	file_list�f�filtered_files�ssl_detailss        �A/usr/lib/python3/dist-packages/cloudinit/config/cc_write_files.py�handler'"s������
�r�*�I���
��'�'��7�M�B�	
��N��
��	�	�
;��	
�
	��(�(����5�K���n�e�l�l�&@�&@�+�N��s�$Bc���|sd}|j�j�}|dvrdgS|dvrddgS|dvrdgS|tk(rtgS|rtj	d|t�tgS)N�)�gz�gzip�application/x-gzip)z	gz+base64zgzip+base64zgz+b64zgzip+b64�application/base64)�b64�base64z%Unknown encoding type %s, assuming %s)�lower�strip�TEXT_PLAIN_ENCr�warning)�
encoding_types r&�canonicalize_extractionr54s�����
�!�'�'�)�/�/�1�M���&�$�%�%��J�J�$�&:�;�;�
�)�)�$�%�%���&��������3���	
�

����ownerr%c
��|syt|�D�]A\}}|jd�}|stjd|dz|��5tj
j
|�}t|jdd�||jdd�|jdd��}|�tjd|dz|���tj|jd|��\}}	t|jd	�t�}
tj|d
�rdnd}tj||||
||	�
�tj|||	���Dy)N�pathz3No path provided to write for entry %s in module %s��source�content�encodingz>No content could be loaded for entry %s in module %s; skippingr7�permissions�append�ab�wb)�omode�mode�user�group)�	enumeraterrr3�osr9�abspath�read_url_or_decoder�extract_usergroup�decode_perms�
DEFAULT_PERMSr�
write_file�chownbyname)r�filesr7r%�i�f_infor9�contents�u�g�permsrBs            r&rrMs:�����u�%�!%�	��6��z�z�&�!����K�K�E��A���
�

��w�w���t�$��%��J�J�x��&���J�J�y�$�'��J�J�z�4�(�	
�����K�K���A���	
�
��'�'��
�
�7�E�(B�C���A��V�Z�Z�
�6�
�F���0�0���B��������(�%�e�!�1�	
�	
����q�!�$�C!%r6c�X�|�|S	t|ttf�rt|�Stt|�d�S#tt
f$r^g}||fD]:}	|j
d|z��#t$r|j
d|z�Y�8wxYwtjdg|���|cYSwxYw)N�z%oz%rz0Undecodable permissions %s, returning default %s)	�
isinstance�int�float�str�	TypeError�
ValueErrorr?rr3)�perm�default�reps�rs    r&rKrKus����|�����d�S�%�L�)��t�9���s�4�y�!�$�$���z�"�������	&�A�
&����D�1�H�%���
&����D�1�H�%�
&��	&�
	���F�N��N����s7� <�<�B)�A*�)B)�*B
�B)�	B
�
B)�(B)c�R�|�dn|jdd�}t|�}|�|syd}|r5	tj||jdd�dd|��j}|�|st|�}t||�}|S#t
$r t
jtd|�d}Y�EwxYw)N�urir)�headers�)rd�retries�sec_betweenr%zVFailed to retrieve contents from source "%s"; falling back to data from "contents" keyF)r�boolr�read_file_or_urlrR�	Exceptionr�logexcrr5�extract_contents)r;r%r<r=�url�use_url�result�extractionss        r&rIrI�s����.�$�f�j�j���&=�C��3�i�G���w��
�F��	� �0�0���
�
�9�d�3���'���h�

�"��7�.�h�7��!�'�;�7���M���	��K�K��,��	
��G�	�s�4A=�=&B&�%B&c��|}|D]E}|dk(rtj|dd��}�!|dk(rtj|�}�<|tk(s�F�G|S)Nr,F)�quiet�decoder-)r�decomp_gzipr/�	b64decoder2)rR�extraction_typesro�ts    r&rlrl�s^��
�F�
����$�$��%�%�f�E�%�H�F�
�&�
&��%�%�f�-�F�
�.�
 ��
��Mr6)N)"�__doc__r/�loggingrG�typingr�	cloudinitrr�cloudinit.cloudr�cloudinit.configr�cloudinit.config.schemar�cloudinit.settingsr	rLrr2�	getLogger�__name__rr�__annotations__r[�listr'r5�dictrrKrIrl�r6r&�<module>r�s���)�
��	��&�!�#�.�+��
��
����g����!����w�� -��	��j��O��O�6�O�%�O�t�O��O�$�2%%�C�%%�h�t�n�%%�P�*"�J	r6