File: //usr/lib/python3/dist-packages/cloudinit/handlers/__pycache__/cloud_config.cpython-310.pyc
o
�Ad� � @ sv d dl Z d dlmZ d dlmZ d dlmZmZmZ d dlm Z e�
e�ZdZ
e�d�ZdZd ZG d
d� dej�ZdS )� N)�handlers)�log)�mergers�safeyaml�util)�
PER_ALWAYSz
Merge-Typezdict(replace)+list()+str()z
#cloud-configz#cloud-config-jsonpc @ sL e Zd ZeegZdd� Zdd� Zdd� Zdd� Z d d
� Z
dd� Zd
d� ZdS )�CloudConfigPartHandlerc K sF t jj| tdd� d | _|�d�| _d|v r|�|d �| _g | _d S )N� )�version�cloud_config�cloud_config_path)r �Handler�__init__r � cloud_buf� get_ipath�cloud_fn�
file_names)�self�paths�_kwargs� r �A/usr/lib/python3/dist-packages/cloudinit/handlers/cloud_config.pyr 1 s
zCloudConfigPartHandler.__init__c C s� | j sd S g }| jr*|�dt| j� � | jD ]
}|sd}|�d| � q|�d� | jd urBtdg}|�|� |�t�| j�� ng }t �
| j d�|�d� d S )Nz# from %s files�?z# %s� �
i� )r r �append�lenr �CLOUD_PREFIX�extendr �dumpsr �
write_file�join)r �
file_lines�fn�linesr r r �_write_cloud_config9 s$
�
z*CloudConfigPartHandler._write_cloud_configc
C s� d}t dt fD ]}|�|d�}|r|} nqt�|�}|d u r$td��t�|�}t�|�}g } | �|� | �|� | s>t } || fS )Nr zX-%szempty cloud config)
�MERGE_HEADER�getr � load_yaml�
ValueErrorr �dict_extract_mergers�string_extract_mergersr �DEF_MERGERS)
r �payload�headers�merge_header_headers�h�tmp_h�payload_yaml�mergers_yaml�mergers_header�all_mergersr r r �_extract_mergersQ s$ �
z'CloudConfigPartHandler._extract_mergersc C sD |� � }tj|td�}tj�|�}t�d|� |j | j
dd�| _
d S )N)�prefixz!Merging by applying json patch %sF)�in_place)�lstripr �strip_prefix_suffix�JSONP_PREFIX� jsonpatch� JsonPatch�from_string�LOG�debug�applyr )r r- �patchr r r �_merge_patchh s
z#CloudConfigPartHandler._merge_patchc C s: | � ||�\}}t�d|� t�|�}|�| j|�| _d S )NzMerging by applying %s)r6 r? r@ r � construct�merger )r r- r. r2 �
my_mergers�mergerr r r �_merge_parts s
z"CloudConfigPartHandler._merge_partc C s g | _ d | _d S )N)r r )r r r r �_resety s
zCloudConfigPartHandler._resetc
C s� |t jkr| �� d S |t jkr| �� | �� d S z4| jd u s#| js&i | _|t jt kr3| � |� n| �
||� dD ]}|�|d�}q;| j�|�
� � W d S tyh } zt�d||� W Y d }~d S d }~w tyx t�td|� Y d S w )N)r �
� � z2Failed at merging in cloud config part from %s: %sz.Failed at merging in cloud config part from %s)r �
CONTENT_STARTrI �CONTENT_ENDr% r r �INCLUSION_TYPES_MAPr; rC rH �replacer �stripr) r? �warning� Exceptionr �logexc) r �data�ctype�filenamer- � frequencyr. �i�errr r r �handle_part} s8
��
��z"CloudConfigPartHandler.handle_partN)
�__name__�
__module__�__qualname__r r; �prefixesr r% r6 rC rH rI r[ r r r r r , s r )r<