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/engines/__pycache__/stalekey.cpython-310.pyc
o

�N�g��@s�dZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
Ze�e�Z
dd�Zdd�Zdd�Zd	d
�Zdd�Zddd�ZdS)a�
An engine that uses presence detection to keep track of which minions
have been recently connected and remove their keys if they have not been
connected for a certain period of time.

Requires that the :conf_master:`minion_data_cache` option be enabled.

.. versionadded:: 2017.7.0

:configuration:

    Example configuration:

    .. code-block:: yaml

        engines:
          - stalekey:
              interval: 3600
              expire: 86400

�NcCst�d�sdSdS)NZminion_data_cache)Fz8stalekey engine requires minion_data_cache to be enabledT)�__opts__�get�rr�I/opt/saltstack/salt/lib/python3.10/site-packages/salt/engines/stalekey.py�__virtual__%s
rcCs@tj�t��}|��}|dWd�S1swYdS)z
    Get the keys
    �minionsN)�salt�key�get_keyrZall_keys)�keysrrrr�	_get_keys+s$�rcCsDtj�t�}|D]}t�d|�|�dtjj�	|�g�||=q|S)z
    Delete the keys
    zRemoving stale key for %sz
key.delete)
r�wheel�WheelClientr�log�info�cmd�utils�stringutils�
to_unicode)�
stale_keysrr
�krrr�_delete_keys4src
Cs�d}i}tj�|�rdz;tjj�|d��!}tjj�|�}|D]}tjj	�
|�}||||<qWd�n
1s7wYW||fSW||fStyc}zd}t�
d||�WYd}~||fSd}~ww||fS)z-
    Read minion data from presence file
    F�rbNTz#Could not open presence file %s: %s)�os�path�existsrr�files�fopen�msgpack�loadrr�OSErrorr�error)�
presence_filer!r�fZ_minionsZminionZ_minion�errr�_read_presence@s*������r%c
Cs�d}z%tjj�|d��}tjj�||�Wd�W|S1s wYW|StyC}zd}t�d||�WYd}~|Sd}~ww)z,
    Write minion data to presence file
    F�wbNTz'Could not write to presence file %s: %s)	rrrrr�dumpr rr!)r"rr!r#r$rrr�_write_presenceWs�����r(��:	c
Cs�tjj�t�}d�td�}tj�t�}	t�	d�i}t
|�\}}|r*t�|�qt
�}t��}|��}	|D]}
|
|vrB|||
<q7|
|	vrJ|||
<q7t�	d�g}|��D]\}
}|||kre|�|
�qV|rmt||�}t||�}t�|�q)z
    Start the engine
    z
{}/presence.pZcachedirTzChecking for present minionsz%Finished checking for present minions)rrrZ	CkMinionsr�formatr
rr�debugr%�time�sleeprZ
connected_ids�items�appendrr()
�intervalZexpireZckr"r
rr!Zminion_keys�nowZpresent�mr�seenrrr�startes<


�

�


�r5)r)r*)�__doc__�loggingrr-Zsalt.configrZsalt.keyZsalt.utils.filesZsalt.utils.minionsZsalt.utils.msgpackZ
salt.wheel�	getLogger�__name__rrrrr%r(r5rrrr�<module>s"