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/utils/__pycache__/pydsl.cpython-310.pyc
o

�N�g�6�@s�dZddlmZddlmZddlmZed�	��Z
Gdd�de�ZGdd	�d	e
�Zd
aGdd�d�ZGd
d�d�ZGdd�d�Zdd�ZGdd�d�Zd
S)a�
:maintainer: Jack Kuan <kjkuan@gmail.com>
:maturity: new
:platform: all

A Python DSL for generating Salt's highstate data structure.

This module is intended to be used with the `pydsl` renderer,
but can also be used on its own. Here's what you can do with
Salt PyDSL::

    # Example translated from the online salt tutorial

    apache = state('apache')
    apache.pkg.installed()
    apache.service.running() \
                  .watch(pkg='apache',
                         file='/etc/httpd/conf/httpd.conf',
                         user='apache')

    if __grains__['os'] == 'RedHat':
        apache.pkg.installed(name='httpd')
        apache.service.running(name='httpd')

    apache.group.present(gid=87).require(apache.pkg)
    apache.user.present(uid=87, gid=87,
                        home='/var/www/html',
                        shell='/bin/nologin') \
               .require(apache.group)

    state('/etc/httpd/conf/httpd.conf').file.managed(
        source='salt://apache/httpd.conf',
        user='root',
        group='root',
        mode=644)


Example with ``include`` and ``extend``, translated from
the online salt tutorial::

    include('http', 'ssh')
    extend(
        state('apache').file(
            name='/etc/httpd/conf/httpd.conf',
            source='salt://http/httpd2.conf'
        ),
        state('ssh-server').service.watch(file='/etc/ssh/banner')
    )
    state('/etc/ssh/banner').file.managed(source='salt://ssh/banner')


Example of a ``cmd`` state calling a python function::

    def hello(s):
        s = "hello world, %s" % s
        return dict(result=True, changes=dict(changed=True, output=s))

    state('hello').cmd.call(hello, 'pydsl!')

�)�uuid4)�	HighState��OrderedDictz_listen require watch prereq use listen_in require_in watch_in prereq_in use_in onchanges onfailc@seZdZdS)�
PyDslErrorN)�__name__�
__module__�__qualname__�r
r
�D/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/pydsl.pyrasrc@seZdZdd�ZdS)�OptionscCs
|�|�S�N)�get)�self�namer
r
r�__getattr__f�
zOptions.__getattr__N)rrr	rr
r
r
rresrNc@sneZdZdd�Zedd��Zedd��Zdd�Zd	d
�Zdd�Z	ddd�Z
dd�Zdd�Zdd�Z
dd�Zd
S)�SlscCsR||_||_g|_t��j|_g|_g|_t	�|_
g|_||_t��s't
d��dS)Nz+PyDSL only works with a running high state!)r�saltenv�includesr�
get_activeZbuilding_highstate�included_highstate�extends�declsr�options�funcs�rendered_slsr)r�slsrrr
r
r�__init__ns�zSls.__init__cC�
t��jSr
)rrZ_pydsl_all_decls��clsr
r
r�
get_all_decls|�
zSls.get_all_declscCrr
)rrZ_pydsl_render_stackr r
r
r�get_render_stack�r#zSls.get_render_stackcK�|j�|�dSr
)r�update)rrr
r
r�set��zSls.setcOs\d|vr	|�d�|�d|j�}|�dd�r%|D]
}|j�||f�qdSt��}tdur4|�|�	��a|j
}g}|D]b}|�d|��}	|	|jvro|j�|�|�
|||jt�\}
}|�||
|�|rjtd�|���|�|�d|��}||vr~|�d�q;||dD]}
t|
t�r�tt|
��d	kr�|�|
d	�nq�q;|s�dSt|�d
kr�|dS|S)N�envrZdelayedF�:�
�_slsmod_�	stateconf�slsmod�r)�poprrr�appendrr�SLS_MATCHESZtop_matchesZget_toprr�addZrender_state�merge_included_statesr�joinZclean_duplicate_extends�
isinstance�dict�next�iter�len)rZ	sls_names�kwsrZinclZ	HIGHSTATE�	highstateZslsmodsrZr_envZhistates�errors�state_id�argr
r
r�include�sH

�
�

�zSls.includecGs||jjs|��rtd��|D]-}|jj}|j�|���	|��t
|j�}t|j�D]}|d8}|j
|kr:|j|=nq)qdS)Nz7Cannot extend() after the ordered option was turned on!r/)r�ordered�	last_funcr�mod�	_state_idrr1r"r0r:r�reversed�_id)rZstate_funcs�fr>�i�declr
r
r�extend�s

���z
Sls.extendNcCsV|sdt���}z|��|WSty*t|�|��|<}|j�|�|YSw)N�.)�_uuidr"�KeyError�StateDeclarationrr1)r�id�sr
r
r�state�s�z	Sls.statecCs|jr|jdSdS)N���)r�rr
r
rrB�sz
Sls.last_funccCr%r
)rr1)rZ	statefuncr
r
r�
track_func�r(zSls.track_funccCs�d|j}|�|�jj|d�|��|=t�}|jr$dd�|jD�|d<|jr=t�|d<}|jD]}|jdd�||j	<q1|j
D]	}|��||j	<q@|jrbg}t�
��||j|�|rbtd�|���|S)	Nr,)r.cSsg|]
}|d|di�qS)rr/r
)�.0�tr
r
r�
<listcomp>�sz$Sls.to_highstate.<locals>.<listcomp>r@rJ��contextr+)rrQr-r'r"rrr�_reprrFrrrrr4rr5)rr.Z	slsmod_idr<rJ�extrIr=r
r
r�to_highstate�s(



�zSls.to_highstatec
Cs�|��D]T\}}|�|�}|��D]F\}}d|vr"|�dd�\}}ntdd�|D��}|�|�t||�}i}	|D]}
t|
t�rNtt|
����\}}||	|<q9||fi|	��qqdS)NrKr/css�|]
}t|t�r|VqdSr
)r6�str)rU�xr
r
r�	<genexpr>�s�z%Sls.load_highstate.<locals>.<genexpr>)	�itemsrQ�rsplitr8�remove�getattrr6r7r9)
rr<ZsidrIrP�modname�args�funcnamerCZ
named_argsr^�k�vr
r
r�load_highstate�s"



���zSls.load_highstater
)rrr	r�classmethodr"r$r'r@rJrQrBrTr\rir
r
r
rrms

/

rc@sDeZdZdd�Zdd�ZeZdd�Zdd�Zdd
d�Zdd
d�Z	d	S)rNcCs||_g|_dSr
)rF�_mods)rrOr
r
rrs
zStateDeclaration.__init__cCs:|jD]}|j|kr|Sqt||j�}|j�|�|Sr
)rk�_name�StateModulerFr1)rr�mr
r
rrs

�zStateDeclaration.__getattr__cC�|jSr
)rFrSr
r
r�__str__�zStateDeclaration.__str__cCs
t|j�Sr
)r9rkrSr
r
r�__iter__rzStateDeclaration.__iter__Ncst�fdd�|D��S)Nc3s�|]}|���VqdSr
)rZ)rUrnrXr
rr_s�z)StateDeclaration._repr.<locals>.<genexpr>r�rrYr
rXrrZszStateDeclaration._reprTc		CsDt��d}|j|��vr[|��}|r-|jdj|ur-td�|jdj	|j|j
|j
j���|���|j�|j
�|�|jdj��|jD]}z	|j�|j�WqFtyZYqFwt��jjd|j|��i�}t|t�sytd�d�|����t|��dd�d	�}|r�|D]\}}|d
s�ddl}td�|�||i����q�|S)NrRzVCannot run state({}: {}) that is required by a runtime state({}: {}), at compile time.rz
state.highz-An error occurred while running highstate: {}z; cSs|ddS)Nr/Z__run_num__r
�rVr
r
r�<lambda>>sz+StateDeclaration.__call__.<locals>.<lambda>)�key�resultz.Failed executing low state at compile time:
{})rr$rFr"rBrk�_funcr�formatrlrCrDr0rrb�_remove_auto_requirer�
ValueErrorrrrQZ	functionsrZr6r7r5�sortedr`�pprintZpformat)	r�checkrrBrnrwrgrhr}r
r
r�__call__sV
��	
��
�����zStateDeclaration.__call__r
)T)
rrr	rr�__getitem__rprrrZrr
r
r
rrNs
rNc@s6eZdZdd�Zdd�Zdd�Zdd�Zdd
d�Zd	S)
rmcCs||_||_d|_dSr
)rDrlrx)rrZparent_declr
r
rrMs
zStateModule.__init__cCs�|jr*||jjkr|jS|tvr$|jjrtd�||j���||j_|jSt|j|�S|tvr;td|�|_}t||�St||�|_}|S)Nz?Multiple state functions({}) not allowed in a state module({})!)rxr�
REQUISITESrryrlrc�
StateFunction)rrrGr
r
rrRs"
�
zStateModule.__getattr__cOst||��||�Sr
)rc�	configure)rZ_fnamerer;r
r
rrh�zStateModule.__call__cCror
)rlrSr
r
rrpkrqzStateModule.__str__NcCs|j|j�|�fSr
)rlrxrZrsr
r
rrZnr�zStateModule._reprr
)rrr	rrrrprZr
r
r
rrmLsrmcs�fdd�}|S)Ncs<|D]	}|��|d�q|��D]}|j�g|�R�q|Sr
)�	referencer`)rrer;rCZmod_refrtr
r�reqss
z&_generate_requsite_method.<locals>.reqr
)rVr�r
rtr�_generate_requsite_methodrsr�c@s^eZdZdd�Zdd�Zdd�Zddd	�Zd
d�Zdd
�Ze	�Z
eD]Ze
e�e
e<q"[
[dS)r�cCsf||_||_g|_d|_t��d}|jjr1|��}|r*|�	|j�t
|j�d|_|�|�dSdS)NrRr/)rCrre�
require_indexrr$rrArBZrequirer:rT)rrZ
parent_modrZlast_fr
r
rr~s�zStateFunction.__init__cCs"|jdur|j|j=d|_dSdSr
)r�rerSr
r
rrz�s


�z"StateFunction._remove_auto_requirecOs|�||�|Sr
)r�)rrer;r
r
rr�szStateFunction.__call__NcCsB|js|dkrtd|jj����|js|dkr|jS|jg|jS)NrJz(No state function specified for module: )rrrCrlrersr
r
rrZ�s�zStateFunction._reprcCs�t|�}|r7|d}|jjdkr.|jdvr.t|�r.|j|d<t||dd�|d�}|dd�=t|dd�|d<|��D]\}}|�||i�q;|j	�
|�|S)Nr�cmd)�callZ	wait_callr/)�funcrer;)r)�listrCrlr�callablerr7r`r1rerJ)rrer;�firstrgrhr
r
rr��s
�

zStateFunction.configurecCsPt|t�r	|j}n|r
|std|�d|����|j�|t|�t|�igi�dS)Nz+Invalid a requisite reference declaration! z: )r6rmrDrrer1r])r�req_typerC�refr
r
rr��s

"zStateFunction.referencer
)rrr	rrzrrZr�r��locals�nsr�r�r�r
r
r
rr�}s
	r�)�__doc__ZuuidrrLZ
salt.staterZsalt.utils.odictrr'�splitr��	Exceptionrr7rr2rrNrmr�r�r
r
r
r�<module>s"U�I&