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/runners/__pycache__/jobs.cpython-310.pyc
o

�N�g,E�@s<dZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddlZddl
mZz
ddlmZdZWneyIdZYnwe�e�Zdd�Zd dd	�Z	d!d
d�Zd"dd
�Z								d#dd�Z	d$dd�Zd%dd�Zd%dd�Z						d&dd�Zdd�Z dd�Z!dd�Z"d dd�Z#dS)'zB
A convenience system to manage jobs, both active and already run
�N)�SaltClientErrorTFcCstjj�t�S)z�
    Return the actively executing runners for the master

    CLI Example:

    .. code-block:: bash

        salt-run jobs.master
    )�salt�utils�masterZget_running_jobs�__opts__�rr�E/opt/saltstack/salt/lib/python3.10/site-packages/salt/runners/jobs.pyrs
rcCs�i}tj�td��4}z|jddtdd�}Wnty6}zt|�|WYd}~Wd�Sd}~wwWd�n1sAwY|rWt�dd�	t
|����id	�|��D]P\}}|rlt�dd
|��id	�t
|t
�srq[|D]6}|d|vr�t|d|�||d<||d�||�dd�iggd
��qt||dd�||di�qtq[tj�t�}|D].}	ttdtdf�}
|j|
�d�|	�}|r�|D]}|||	dvr�||	d�|�q�q�|S)z�
    Return a report on all actively running jobs from a job id centric
    perspective

    CLI Example:

    .. code-block:: bash

        salt-run jobs.active
    Z	conf_file�*zsaltutil.running�timeout)r
N�messagez!Attempting to contact minions: {}�progresszReceived reply from minion �jid�pid)�Running�Returnedr�
ext_job_cache�master_job_cache�.get_jidr)r�clientZget_local_clientr�cmdr�print�
__jid_event__�
fire_event�format�list�keys�items�
isinstance�_format_jid_instance�update�get�append�minion�MasterMinion�
_get_returner�	returners)�display_progress�retrZactive_Zclient_errorr"�data�job�mminionr
�returnerrrr�active*s^����
����
� �	��r,c
	s.i}tj�t�}ttd|tdf�}z	t|||d�}Wn
ty&YdSw|�dg�}	|�di���ra�D])}
|rCt�	d|
id�d	�|
vrU|rT�|
�d	�||
<q7|r`�|
�d	�||
<q7|rs�fd
d�|	D�D]}d||<qlz
�t
t����d
�}Wn
tt
fy�d}Ynw|r�||d�S|S)a�
    Return the printout from a previously executed job

    jid
        The jid to look up.

    ext_source
        The external job cache to use. Default: `None`.

    returned : True
        If ``True``, include the minions that did return from the command.

        .. versionadded:: 2015.8.0

    missing : False
        If ``True``, include the minions that did *not* return from the
        command.

    display_progress : False
        If ``True``, fire progress events.

        .. versionadded:: 2015.5.0

    CLI Example:

    .. code-block:: bash

        salt-run jobs.lookup_jid 20130916125524463507
        salt-run jobs.lookup_jid 20130916125524463507 --out=highstate
    rr)�
ext_sourcer&zCRequested returner could not be loaded. No JIDs could be retrieved.�Minions�Resultrr�returnc3s�|]	}|�vr|VqdS�Nr)�.0�x��returnsrr�	<genexpr>�s�zlookup_jid.<locals>.<genexpr>zMinion did not return�outN��	outputterr()rr"r#rr$�list_job�	TypeErrorr rr�next�iter�
StopIteration�AttributeError)
r
r-Zreturned�missingr&r'r*r+r(Ztargeted_minionsr"Z	minion_idr9rr4r�
lookup_jiddsD!����
�
rAc	Cs�d|i}tj�t�}ttd|tdf�}|r"t�dd|��id�|j|�d�|�}|�t	||��|j|�d�|�|d	<d
�
td�}t�d�r^||jvr^|j||�}|r^||d<|S)
a�
    List a specific job given by its jid

    ext_source
        If provided, specifies which external job cache to use.

    display_progress : False
        If ``True``, fire progress events.

        .. versionadded:: 2015.8.8

    CLI Example:

    .. code-block:: bash

        salt-run jobs.list_job 20130916125524463507
        salt-run jobs.list_job 20130916125524463507 --out=pprint
    r
rrrzQuerying returner: r�	.get_loadrr/�{}.get_endtime�job_cache_store_endtime�EndTime)rr"r#rr$rrr%rrrr )	r
r-r&r'r*r+r)�fstr�endtimerrrr:�s$��r:cCsttd|tdf�}|rt�dd|�d�id�tj�t�}	|	j|�d��}
i}|
D]�}d}
|r`d	}
d
|
|vr`t|t	�r[|D]}||
|d
vrY|
|d
|||krYd}
qAnt
�d�|r�|
r�d	}
d|
|vr�|
|d}t|t�rz|g}|D]}tj
j�|�D]
}t�||�r�d}
q�q||r�|
r�d	}
d
|
|vr�tj
j�|�D]}t�|
|d
|�r�d}
q�|r�|
r�d	}
tr�t�|�}t�|
|d�}||kr�d}
nt
�d�|r�|
r�d	}
tr�t�|�}t�|
|d�}||kr�d}
nt
�d�|
r�|
|||<q,|�r||d�S|S)a�	
    List all detectable jobs and associated functions

    ext_source
        If provided, specifies which external job cache to use.

    **FILTER OPTIONS**

    .. note::
        If more than one of the below options are used, only jobs which match
        *all* of the filters will be returned.

    search_metadata
        Specify a dictionary to match to the job's metadata. If any of the
        key-value pairs in this dictionary match, the job will be returned.
        Example:

        .. code-block:: bash

            salt-run jobs.list_jobs search_metadata='{"foo": "bar", "baz": "qux"}'

    search_function
        Can be passed as a string or a list. Returns jobs which match the
        specified function. Globbing is allowed. Example:

        .. code-block:: bash

            salt-run jobs.list_jobs search_function='test.*'
            salt-run jobs.list_jobs search_function='["test.*", "pkg.install"]'

        .. versionchanged:: 2015.8.8
            Multiple targets can now also be passed as a comma-separated list.
            For example:

            .. code-block:: bash

                salt-run jobs.list_jobs search_function='test.*,pkg.install'

    search_target
        Can be passed as a string or a list. Returns jobs which match the
        specified minion name. Globbing is allowed. Example:

        .. code-block:: bash

            salt-run jobs.list_jobs search_target='*.mydomain.tld'
            salt-run jobs.list_jobs search_target='["db*", "myminion"]'

        .. versionchanged:: 2015.8.8
            Multiple targets can now also be passed as a comma-separated list.
            For example:

            .. code-block:: bash

                salt-run jobs.list_jobs search_target='db*,myminion'

    start_time
        Accepts any timestamp supported by the dateutil_ Python module (if this
        module is not installed, this argument will be ignored). Returns jobs
        which started after this timestamp.

    end_time
        Accepts any timestamp supported by the dateutil_ Python module (if this
        module is not installed, this argument will be ignored). Returns jobs
        which started before this timestamp.

    .. _dateutil: https://pypi.python.org/pypi/python-dateutil

    CLI Example:

    .. code-block:: bash

        salt-run jobs.list_jobs
        salt-run jobs.list_jobs search_function='test.*' search_target='localhost' search_metadata='{"bar": "foo"}'
        salt-run jobs.list_jobs start_time='2015, Mar 16 19:00' end_time='2015, Mar 18 22:00'

    rrr�Querying returner �
 for jobs.rz	.get_jidsTF�MetadatazKThe search_metadata parameter must be specified as a dictionary.  Ignoring.�Target�Function�	StartTimezA'dateutil' library not available, skipping start_time comparison.z?'dateutil' library not available, skipping end_time comparison.r8)r$rrrrr"r#r%r�dict�log�info�strr�argsZsplit_input�fnmatch�DATEUTIL_SUPPORT�dateutil_parser�parse�error)r-r9�search_metadata�search_function�
search_targetZ
start_timeZend_timer&r+r*r'Zmret�itemZ_match�key�targets�targetZparsed_start_timeZ_start_timeZparsed_end_timerrr�	list_jobs�s�V��
���
���
��
���
r_c	Cs�ttd|tdf�}|rt�dd|�d�id�tj�t�}|�d�}||jvr1td|�d	���|j|||�}|r@||d
�S|S)a
    List all detectable jobs and associated functions

    ext_source
        The external job cache to use. Default: `None`.

    CLI Example:

    .. code-block:: bash

        salt-run jobs.list_jobs_filter 50
        salt-run jobs.list_jobs_filter 100 filter_find_job=False

    rrrrHrIrz.get_jids_filter�'z(' returner function not implemented yet.r8)	r$rrrrr"r#r%�NotImplementedError)	�countZfilter_find_jobr-r9r&r+r*�funr'rrr�list_jobs_filter~s��


rdcCs�i}ttd|tdf�}tj�t�}z|j|�d�|�}t||�||<Wnty:d�|�||d<|YSw|j|�d�|�||d<d�td�}t�	d�ri||jvri|j||�}|ri|||d	<|S)
z�
    Print a specific job's detail given by its jid, including the return data.

    CLI Example:

    .. code-block:: bash

        salt-run jobs.print_job 20130916125524463507
    rrrBz_Requested returner {} is not available. Jobs cannot be retrieved. Check master log for details.r/rrCrDrE)
r$rrr"r#r%rr;rr )r
r-r'r+r*r)rFrGrrr�	print_job�s*
�
��recCs�t�}t||d�}|�dg�}|�di�}|D]}||vr0d||vr0||dr+dnd||<qd||<q|D]}d||vrI||drId||<q7|S)a
    Check if a job has been executed and exit successfully

    jid
        The jid to look up.
    ext_source
        The external job cache to use. Default: `None`.

    CLI Example:

    .. code-block:: bash

        salt-run jobs.exit_success 20160520145827701627
    )r-r.r/r0TF)rNr:r )r
r-r'r(Zminions�resultr"rrr�exit_success�s
�rgcCsN|rt|t�st�d�dSt||||||d�}|r%t|�d}t||�SdS)aA
    .. versionadded:: 2015.8.0

    List all detectable jobs and associated functions

    CLI Example:

    .. code-block:: bash

        salt-run jobs.last_run
        salt-run jobs.last_run target=nodename
        salt-run jobs.last_run function='cmd.run'
        salt-run jobs.last_run metadata="{'foo': 'bar'}"
    z8The metadata parameter must be specified as a dictionaryF)r-r9rXrYrZr&���)rrNrOrPr_�sortedre)r-r9�metadata�functionr^r&Z	_all_jobsZlast_jobrrr�last_run�s 

�
rlcCs"|D]}|r|dur|SqdS)zF
    Helper to iterate over returner_types and pick the first one
    Nr)Zreturner_typesr+rrrr$s
��r$cCs�|sddi}|S|�dd�t|�dg��|�dd�|�dd	�|�d
d�d�}d
|vr3|�d
i�|d<nd|vrGd
|dvrG|d�d
i�|d<d|vrQ|d|d<|S)z)
    Helper to format a job instance
    �Errorz/Cannot contact returner or no job with this jidrczunknown-function�argZtgtzunknown-targetZtgt_typer�user�root)rLZ	ArgumentsrKzTarget-typeZUserrjrJ�kwargsr.)r r)r)r'rrr�_format_job_instances"



�	rrcCs$t|�}|�dtjj�|�i�|S)z'
    Helper to format jid instance
    rM)rrrrrr
Zjid_to_time)r
r)r'rrrr;src	
cs��t�|�D]t}tj�||�}t�|�D]e}tj�||d�}tjj�|d��}tj�	|�}Wd�n1s7wYtj�
|�sCqtjj�|d��}tj�	|�}Wd�n1s\wY|d}|rrt�dd|��id�||||fVqqdS)z2
    Walk through the job dir and return jobs
    z.load.p�rbNr
rz
Found JID r)
�os�listdir�path�joinrr�filesZfopen�payload�load�isfilerr)	Zjob_dirr&�topZt_path�finalZ	load_pathZrfhr)r
rrr�
_walk_throughDs&�����r~)F)NTFF)NF)NNNNNNNF)TNNFr1)NNNNNF)$�__doc__rS�loggingrtZsalt.clientrZsalt.minionZsalt.payloadZsalt.returnersZsalt.utils.argsZsalt.utils.filesZsalt.utils.jidZsalt.utils.masterZsalt.exceptionsrZdateutil.parser�parserrUrT�ImportError�	getLogger�__name__rOrr,rAr:r_rdrergrlr$rrrr~rrrr�<module>sd�


;
�
L+
�&
�
%
%#
�+