File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/schedule.cpython-310.pyc
o
�N�gH � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
ZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Zddlm!Z! ddl"m#Z# zddl$m%Z& dZ'dZ(W n
e)y� dZ'dZ(Y nw zddl*Z*dZ+W n e)y� dZ+Y nw e�,e-�Z.G dd� d�Z/d d
� Z0dS )a\
Scheduling routines are located here. To activate the scheduler make the
``schedule`` option available to the master or minion configurations (master
config file or for the minion via config or pillar).
Detailed tutorial about scheduling jobs can be found :ref:`here
<scheduling-jobs>`.
Requires that python-dateutil is installed on the minion.
� N)�SaltInvocationError)�OrderedDictTFc @ sV e Zd ZdZdZ d@dd�Z d@dd�Z dAdd �Zd
d� Zdd
� Z dBdd�Z
dd� Zdd� ZdCdd�Z
dd� ZdCdd�ZdCdd�ZdCdd�ZdCdd �ZdCd!d"�Zd#d$� ZdCd%d&�ZdCd'd(�Zd)d*� ZdDd+d,�ZdDd-d.�ZdDd/d0�ZdDd1d2�ZdEd4d5�ZdFd6d7�ZdGd8d9�ZdGd:d;�ZdGd<d=�Z d>d?� Z!dS )H�SchedulezR
Create a Schedule object, pass in the opts and the functions dict to use
NFc C sj | j du s |du r-t�d� t�| �}|j|||||||| |
d� |du r'|S || _ | j S t�d� | j S )z6
Only create one instance of Schedule
NTzInitializing new Schedule)� returners� intervals�cleanup�proxy�
standalone�utils�_subprocess_listzRe-using Schedule)�instance�log�debug�object�__new__�__singleton_init__)�cls�opts� functionsr r r r r �new_instancer
r r � r �G/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/schedule.pyr M s(
�
�zSchedule.__new__c C s d S �Nr )�selfr r r r r r r r r
r r r r �__init__v s
zSchedule.__init__c
C s || _ || _|| _|ptj�|�| _|| _d | _d | _d | _ d| _
t|t�r*|| _
ni | _
| js?t|d�r9|| _n|j�� | _z
| j�ddd� �� | _W n ty` tjdtjd� d| _Y nw | �d �| _tj| _| jsrt|� |r~|D ]}
| �|
� qv| d u r�tjj� � | _!d S | | _!d S )
NT�__getitem__ztimezone.get_offsetc S s dS )N�0000r r r r r �<lambda>� s z-Schedule.__singleton_init__.<locals>.<lambda>z<Unable to obtain correct timezone offset, defaulting to 0000�Zexc_info_on_loglevelr �schedule_returner)"r r r �salt�loaderr
r �
skip_function�skip_during_range�splay�enabled�
isinstance�dictr �hasattrr Z
gen_functions�get�time_offset� Exceptionr
�warning�logging�DEBUG�optionr �sys�maxsize�
loop_interval�clean_proc_dir�delete_job_prefix�processZSubprocessListr )r r r r r r r r r
r �prefixr r r r � sJ
��
�
zSchedule.__singleton_init__c C s | j | j| j| jd fS r )r r r r �r r r r �__getnewargs__� s zSchedule.__getnewargs__c C s, d| j v r| j d |i dd�S | j�|i �S )z>
Return options merged from config and pillar
zconfig.mergeT)Zomit_master)r r r) )r �optr r r r/ � s
zSchedule.optionTc
C s� i }|r| j �di ��di �}t|t�std��|�|� |r4| j �di �}t|t�s/td��|�|� |rZt�|�}|D ]}t|| t�rW|| D ]} | �d�rV|| | = qJq=|S |S )�4
Return the schedule data structure
�pillar�schedule�Schedule must be of type dict.�_) r r) r&