HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/__pycache__/__init__.cpython-310.pyc
o

�N�g�H�@sPdZddlZddlZddlZddlZddlZddlZe�e	�Z
Gdd�d�ZdS)zF
This package contains the loader modules for the salt streams system
�Nc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zd,dd�Zd,dd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S)-�BeaconzI
    This class is used to evaluate and execute on the beacon system
    cCs0ddl}||_||_|j�||�|_t�|_dS)Nr)Zsalt.loader�opts�	functions�loader�beacons�dict�interval_map)�selfrr�salt�r�I/opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/__init__.py�__init__s
zBeacon.__init__cCsbg}t�|�}d|vr|dsdS|D�]�}|dkrqd}t||t�r1i}tt|j||��nt||t�r<||}d|vr`|dsKt�d|�qt||t�rX||d=n|�	||d�t�d|�d}|�
|d�rs|d}n|}|�d�}||jvr�|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<d}z|j|||�}Wn%t��d�}t�d||�d�|jd|�}|�||i|d��Y|�s�|D]-}d�|jd|�}d|v�r�||�d�7}d|v�r�|jd|d<|�|||d���qq|�r�|�|�qt�
d |�q|S)!a 
        Process the configured beacons

        The config must be a list and looks like this in yaml

        .. code_block:: yaml
            beacons:
              inotify:
                - files:
                    - /etc/fstab: {}
                    - /var/cache/foo: {}
        �enabledNzBeacon %s disabledzBeacon processing: %s�
beacon_module�	.validatez0Beacon %s configuration invalid, not running.
%szCNo validate function found for %s, running basic beacon validation.z(Configuration for beacon must be a list.Z_beacon_name�.beaconZrun_once�intervalz)Skipping beacon %s. Interval not reached.Zdisable_during_state_runz<Evaluting if beacon %s should be skipped due to a state run.Fzstate.*ZfunTz.closez)Closing beacon %s. State run in progress.z*Skipping beacon %s. State run in progress.Z
__grains__�zUnable to start %s beacon, %szsalt/beacon/{}/{}/�id)�tag�error�data�beacon_namer)rrrzUnable to process beacon %s)�copy�deepcopy�
isinstance�list�map�updater�log�trace�_remove_list_item�_determine_beacon_configrr�warning�append�_trim_config�_process_intervalr
�utils�minionZrunningr�re�match�info�__globals__�sys�exc_info�format�pop�disable_beacon)r	ZconfigZgrains�ret�b_config�mod�current_beacon_configr�validate_str�valid�vcommentZfun_strZrunoncerZ
is_runningZrunning_jobsZjobZ	close_strr�rawrrrrr�processs�




���

������
��


�
�zBeacon.processcCsBt||t�r|�|||�|St||t�r||�|�|S)zM
        Take a beacon configuration and strip out the interval bits
        )rrr!rr0)r	r3r4�keyrrrr%�s�zBeacon._trim_configcCsd}t|t�r
|�|d�}|S)zJ
        Process a beacon configuration to determine its interval
        F)rr�get)r	r5r;rrrrr"�s
zBeacon._determine_beacon_configcCs�t�d||�|jd}||jvr9t�d�|j|}t�d|�|||kr.d|j|<dS|j|d7<dSt�d|�d|j|<dS)	zk
        Process beacons with intervals
        Return True if a beacon should be run on this loop
        z(Processing interval %s for beacon mod %s�
loop_intervalzProcessing interval in mapzInterval counter: %srTz"Interval process inserting mod: %sF)rr rr)r	r4rr=Zcounterrrrr&�s




�
zBeacon._process_intervalcs&�fdd�t|�D�}|sdS|dS)zn
        Return the index of a labeled config item in the beacon config, -1 if the index is not found
        csg|]
\}}�|vr|�qSrr)�.0�index�item��labelrr�
<listcomp>�sz%Beacon._get_index.<locals>.<listcomp>���r)�	enumerate)r	�
beacon_configrBZindexesrrAr�
_get_index�szBeacon._get_indexcCs|�||�}||=dS)z:
        Remove an item from a beacon config list
        N)rG)r	rFrBr?rrrr!�s
zBeacon._remove_list_itemcCs~t|jd|t�r||jd|d<dS|�|jd|d�}|dkr1||jd||d<dS|jd|�d|i�dS)z@
        Update whether an individual beacon is enabled
        rrrN)rrrrGr$)r	�nameZ
enabled_valueZ
enabled_indexrrr�_update_enabled�szBeacon._update_enabledTcCsli}|r|j�di��di�}t|t�std��|�|�|r4|j�di�}t|t�s/td��|�|�|S)z3
        Return the beacons data structure
        ZpillarrzBeacons must be of type dict.)rr<rr�
ValueErrorr)r	�include_opts�include_pillarrZpillar_beaconsZopts_beaconsrrr�_get_beacons�s



zBeacon._get_beaconscCs\|j||d�}tjjjd|jd��}|jd|d�dd�Wd�dS1s'wYdS)	a
        List the beacon items

        include_pillar: Whether to include beacons that are
                        configured in pillar, default is True.

        include_opts:   Whether to include beacons that are
                        configured in opts, default is True.
        )rLrKr(�rT��completerz)/salt/minion/minion_beacons_list_complete�rN)rMr
r'�event�	get_eventr�
fire_event)r	rLrKr�evtrrr�list_beaconss
��
��zBeacon.list_beaconscCs^dd�|jD�}tjjjd|jd��}|jd|d�dd�Wd	�dS1s(wYdS)
z,
        List the available beacons
        cSs&g|]}d|vrd�|�dd���qS)rz{}�)r/�replace)r>Z_beaconrrrrC#s
�z1Beacon.list_available_beacons.<locals>.<listcomp>r(rNTrOz3/salt/minion/minion_beacons_list_available_completerQN)rr
r'rRrSrrT)r	Z_beaconsrUrrr�list_available_beaconss��
��zBeacon.list_available_beaconscs�t�fdd�|D��}|�d�}||jvr&d|vr|d=|j||�\}}nd�|�}d}tjjjd|jd��}|jd||d	�d
d�Wd�dS1sNwYdS)
z3
        Return available beacon functions
        c3s�|]	}|�d��VqdS)rN)r<)r>r@�rHrr�	<genexpr>6s�z)Beacon.validate_beacon.<locals>.<genexpr>rrzABeacon {} does not have a validate function, skipping validation.Tr(rN)rPr8r7z./salt/minion/minion_beacon_validation_completerQN)	�nextrr/r
r'rRrSrrT)r	rH�beacon_datarr6r7r8rUrrZr�validate_beacon2s&

�
�
��zBeacon.validate_beaconcCs�i}|||<||jdd�vrd�|�}d}n||jdvr#d|��}nd|��}d}|jd�|�tjjjd|jd	��}|j|||jdd
�dd�Wd
�dS1sVwYdS)z#
        Add a beacon item
        F�rKzACannot update beacon item {}, because it is configured in pillar.r�#Updating settings for beacon item: zAdded new beacon item: Tr(rN�rP�commentrz'/salt/minion/minion_beacon_add_completerQN)	rMr/rrr
r'rRrSrT�r	rHr]rrbrPrUrrr�
add_beaconOs0�
��
�
�
zBeacon.add_beaconcCs�i}|||<||jdd�vrd|�d�}d}nd|��}d}|jd�|�tjjjd|jd	��}|j|||jdd
�dd�Wd
�dS1sJwYdS)z&
        Modify a beacon item
        Fr_zCannot modify beacon item �, it is configured in pillar.r`Trr(rNraz*/salt/minion/minion_beacon_modify_completerQN)rMrrr
r'rRrSrTrcrrr�
modify_beaconrs(
��
�	�	zBeacon.modify_beaconcCs�||jdd�vrd|�d�}d}n||jdvr$|jd|=d|��}nd|�d�}d	}tjjjd
|jd��}|j|||jdd�d
d�Wd�d	S1sPwYd	S)z&
        Delete a beacon item
        Fr_zCannot delete beacon item rerzDeleting beacon item: zBeacon item z not found.Tr(rNraz*/salt/minion/minion_beacon_delete_completerQN)rMrr
r'rRrSrT�r	rHrbrPrUrrr�
delete_beacon�s(��
�
�
zBeacon.delete_beaconcCsbd|jdd<tjjjd|jd��}|jd|jdd�dd�Wd	�dS1s*wYdS)
� 
        Enable beacons
        Trrr(rNrOz,/salt/minion/minion_beacons_enabled_completerQN�rr
r'rRrSrT�r	rUrrr�enable_beacons���
��zBeacon.enable_beaconscCsbd|jdd<tjjjd|jd��}|jd|jdd�dd	�Wd
�dS1s*wYdS)riFrrr(rNTrOz-/salt/minion/minion_beacons_disabled_completerQNrjrkrrr�disable_beacons�rmzBeacon.disable_beaconscCs�||jdd�vrd|�d�}d}n
|�|d�d|��}d}tjjjd|jd��}|j|||jd	d
�dd�Wd
�dS1sBwYdS)z!
        Enable a beacon
        Fr_zCannot enable beacon item reTzEnabling beacon item r(rNrraz+/salt/minion/minion_beacon_enabled_completerQN)rMrIr
r'rRrSrrTrgrrr�
enable_beacon�s$
��
�
�
zBeacon.enable_beaconcCs�||jdd�vrd�|�}d}n
|�|d�d|��}d}tjjjd|jd��}|j|||jdd	�d
d�Wd�dS1sAwYdS)
z"
        Disable a beacon
        Fr_z:Cannot disable beacon item {}, it is configured in pillar.zDisabling beacon item Tr(rNrraz,/salt/minion/minion_beacon_disabled_completerQN)	rMr/rIr
r'rRrSrrTrgrrrr1�s*��
��
�
�
zBeacon.disable_beaconcCs`i|jd<tjjjd|jd��}|jdd|jdd�dd�Wd	�dS1s)wYdS)
z/
        Reset the beacons to defaults
        rr(rNTzBeacons have been resetraz)/salt/minion/minion_beacon_reset_completerQNrjrkrrr�resets
��
�	�	zBeacon.resetN)TT)�__name__�
__module__�__qualname__�__doc__r
r:r%r"r&rGr!rIrMrVrYr^rdrfrhrlrnror1rprrrrrs.


#r)rtr�loggingr)r-Zsalt.utils.eventr
Zsalt.utils.minion�	getLoggerrqrrrrrr�<module>s