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__/load.cpython-310.pyc
o

�N�gZ�@sRdZddlZddlZddlZddlZe�e�ZdZ	iZ
dd�Zdd�Zdd	�Z
dS)
z%
Beacon to emit system load averages
�N�loadcCs*tjj��rd}t�dt|�d|fStS)Nz"Not available for Windows systems.zUnable to load %s beacon: %sF)�salt�utils�platformZ
is_windows�log�error�__virtualname__)�err_msg�r
�E/opt/saltstack/salt/lib/python3.10/site-packages/salt/beacons/load.py�__virtual__s
rcCs�t|t�sdStjj�|�}d|vrt|dt�sdSd|vr(t|dt�s(dSd|vr.dStdd	�|�di�D��s=d
SdD]}t|d|t�sMdSt	|d|�d
krZdSq?dS)z+
    Validate the beacon configuration
    )Fz-Configuration for load beacon must be a list.�
emitatstartup)FzEConfiguration for load beacon option emitatstartup must be a boolean.�onchangeonly)FzDConfiguration for load beacon option onchangeonly must be a boolean.�averages)Fz3Averages configuration is required for load beacon.css�|]}|dvVqdS)�Z1mZ5mZ15mNr
)�.0�jr
r
r�	<genexpr>:s�zvalidate.<locals>.<genexpr>)FzHAverages configuration for load beacon must contain 1m, 5m or 15m items.r)FzYAverages configuration for load beacon: 1m, 5m and 15m items must be a list of two items.�)FzPConfiguration for load beacon: 1m, 5m and 15m items must be a list of two items.)TzValid beacon configuration)
�
isinstance�listrr�beacons�list_to_dict�bool�any�get�len)�config�itemr
r
r�validates(
�rc	Csdt�d�tjj�|�}d|vrd|d<d|vrd|d<g}t��}gd�}tt	||��}|drIt
sIdD]}||t
|<q5|dsIt�d�|Sd}dD]�}||�di�v�r|dr�t
||�t
|d|d	�kr�t
t
|�t
|d|d	�kr�t�d
t
||�t
|d|d	�t
t
|��d}nt
||�t
|d|d�kr�t
t
|�t
|d|d�kr�t�dt
||�t
|d|d�t
t
|��d}nCqMt
||�t
|d|d�ks�t
||�t
|d|d	�k�rt�d
t
||�t
|d|d�t
|d|d	��d}nqM|d�r(dD]	}||t
|<�q|�r0|�|�|S)a�
    Emit the load averages of this host.

    Specify thresholds for each load average
    and only emit a beacon if any of them are
    exceeded.

    `onchangeonly`: when `onchangeonly` is True the beacon will fire
    events only when the load average pass one threshold.  Otherwise, it will fire an
    event at each beacon interval.  The default is False.

    `emitatstartup`: when `emitatstartup` is False the beacon will not fire
     event when the minion is reload. Applicable only when `onchangeonly` is True.
     The default is True.

    .. code-block:: yaml

        beacons:
          load:
            - averages:
                1m:
                  - 0.0
                  - 2.0
                5m:
                  - 0.0
                  - 1.5
                15m:
                  - 0.1
                  - 1.0
            - emitatstartup: True
            - onchangeonly: False

    zload beacon startingr
TrFrz)Don't emit because emitatstartup is Falser�z$Emit because %f > %f and last was %frz#Emit because %f < %f and last was%fzEmit because %f < %f or > %f)rZtracerrrr�os�
getloadavg�dict�zip�LAST_STATUS�debugr�float�append)r�retZavgsZavg_keysZavg_dict�kZsend_beaconr
r
r�beaconSs�
"
"��

�"��

��"��
��

r+)�__doc__�loggingr!Zsalt.utils.beaconsrZsalt.utils.platform�	getLogger�__name__rrr%rrr+r
r
r
r�<module>s
	8