File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/__pycache__/__init__.cpython-310.pyc
o
;j Q � @ sP d Z ddlZddlZddlZddlZddlZddlZe�e �Z
G dd� d�ZdS )zF
This package contains the loader modules for the salt streams system
� Nc @ s� e Zd ZdZd0dd�Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zdd� Zdd� Z
d1dd�Zd1dd�Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� ZdS )2�BeaconzI
This class is used to evaluate and execute on the beacon system
Nc C s4 dd l }|| _|| _|j�||�| _|pt� | _d S )Nr )Zsalt.loader�opts� functions�loader�beacons�dict�interval_map)�selfr r r �salt� r �I/opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/__init__.py�__init__ s
zBeacon.__init__c C s� | j d �|�}|du rdS d}t|t�r i }tt|j|�� nt|t�r'|}|du r-dS |}| �|d�r9|d }|� d�}|| jv rwz!t �
|�}t|t�rU|�d|i� t�
d|� | j| |� W dS tyv tj
d|dd � Y dS w dS )
z�
Close a single beacon module if it has a close function.
This releases resources like inotify file descriptors.
r N�
beacon_module�.close�_beacon_namezClosing beacon %szFailed to close beacon %sT)�exc_info)r �get�
isinstance�list�map�updater �_determine_beacon_configr �copy�deepcopy�append�log�debug� Exception)r �name�
beacon_config�current_beacon_config�beacon_name� close_str�configr r r �
_close_beacon s4
��zBeacon._close_beaconc C s* | � � }|D ]}|dkr
q| �|� qdS )aY
Close all beacon modules that have a close function.
This ensures resources like inotify file descriptors are properly
released when beacons are refreshed or the Beacon instance is replaced.
See: https://github.com/saltstack/salt/issues/66449
See: https://github.com/saltstack/salt/issues/58907
�enabledN)�_get_beaconsr$ )r r �modr r r �
close_beacons? s �zBeacon.close_beaconsc C sb g }t �|�}d|v r|d sdS |D �]�}|dkrqd}t|| t�r1i }tt|j|| �� nt|| t�r<|| }d|v r`|d sKt�d|� qt|| t�rX|| d= n| � || d� t�d|� d}| �
|d�rs|d }n|}|� d�}|| jv r�| j| || �\} }
| s�t�d||
� qnt�
d|� t|| t�s�t�d � q|| �d
|i� |� d�}|| jv �r�| �
|d�}| �
|d
�}
|
r�| �||d
�}| �||
�s�t�d|� q| �
|d��r1t�d|� | �||d�}d}tjj�| j�}|D ]
}t�d|d ��rd}q�|�r1|� d�}|| jv �r*t�d|� | j| || � nt�d|� q|| j| jd<