name : cloud_config.cpython-39.pyc
a

'�Dg��@snddlZddlZddlmZmZmZmZddlmZe�	e
�ZdZe�
d�ZdZdZdZGd	d
�d
ej�ZdS)�N)�handlers�mergers�safeyaml�util)�
PER_ALWAYSz
Merge-Typezdict(replace)+list()+str()z
#cloud-configz#cloud-config-jsonpz*# Cloud-config part ignored SCHEMA_ERROR: c@sLeZdZeegZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�ZdS)�CloudConfigPartHandlercKsLtjj|tdd�d|_|�d�|_d|vr<|�|d�|_g|_g|_dS)N�)�versionZcloud_configZcloud_config_path)	r�Handler�__init__r�	cloud_bufZ	get_ipath�cloud_fn�
file_names�error_file_names)�self�paths�_kwargs�r�C/usr/lib/python3.9/site-packages/cloudinit/handlers/cloud_config.pyr3szCloudConfigPartHandler.__init__cCs�|js
dSg}|jrT|�dt|j��|jD]}|s:d}|�d|�q.|�d�|jD]}|�t�|���qZ|jdur�tdg}|�|�|�t	�
|j��ng}t�|jd�
|�d�dS)Nz# from %s files�?z# %s��
i�)r
r�append�lenr�MERGED_PART_SCHEMA_ERROR_PREFIXr�CLOUD_PREFIX�extendr�dumpsrZ
write_file�join)rZ
file_lines�fnZ
error_file�linesrrr�_write_cloud_config<s(



�
z*CloudConfigPartHandler._write_cloud_configc
Cs�d}tdtfD]}|�|d�}|r|}q.qt�|�}|durHtd��t�|�}t�|�}g}	|	�|�|	�|�|	s|t	}	||	fS)NrzX-%szempty cloud config)
�MERGE_HEADER�getrZ	load_yaml�
ValueErrorrZdict_extract_mergers�string_extract_mergersr�DEF_MERGERS)
r�payload�headersZmerge_header_headers�hZtmp_h�payload_yamlZmergers_yamlZmergers_headerZall_mergersrrr�_extract_mergersVs"




z'CloudConfigPartHandler._extract_mergerscCsD|��}tj|td�}tj�|�}t�d|�|j	|j
dd�|_
dS)N)�prefixz!Merging by applying json patch %sF)Zin_place)�lstriprZstrip_prefix_suffix�JSONP_PREFIX�	jsonpatchZ	JsonPatchZfrom_string�LOG�debugZapplyr)rr'Zpatchrrr�_merge_patchms
z#CloudConfigPartHandler._merge_patchcCs:|�||�\}}t�d|�t�|�}|�|j|�|_dS)NzMerging by applying %s)r+r0r1rZ	construct�merger)rr'r(r*Z
my_mergersZmergerrrr�_merge_partxs
z"CloudConfigPartHandler._merge_partcCsg|_d|_dS)N)rr)rrrr�_reset~szCloudConfigPartHandler._resetc	
Cs|tjkr|��dS|tjkr4|��|��dSzf|jdusF|jsLi|_|tjtkrf|�	|�n|�
||�dD]}|�|d�}qv|j�|�
��Wn`ty�}z*|j�|�
��t�d||�WYd}~n(d}~0ty�t�td|�Yn0dS)N)r�
�	� z2Failed at merging in cloud config part from %s: %sz.Failed at merging in cloud config part from %s)rZ
CONTENT_STARTr5ZCONTENT_ENDr!rrZINCLUSION_TYPES_MAPr.r2r4�replacer�stripr$rr0Zwarning�	ExceptionrZlogexc)	r�dataZctype�filenamer'Z	frequencyr(�i�errrrr�handle_part�s6

��z"CloudConfigPartHandler.handle_partN)
�__name__�
__module__�__qualname__rr.�prefixesrr!r+r2r4r5r@rrrrr.s	r)Zloggingr/Z	cloudinitrrrrZcloudinit.settingsrZ	getLoggerrAr0r"r%r&rr.rr
rrrrr�<module>s



© 2025 Cubjrnet7