File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/slsutil.cpython-310.pyc
o
�N�g�L � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddl Zddl
ZdZd*dd�Zd+d
d�Z
d+dd
�Zd,dd�Zdd� Zdd� Zdd� Z d-dd�Zd.dd�Zd/dd �Zd0d"d#�Zd0d$d%�Zd0d&d'�Zd0d(d)�ZdS )1z0
Utility functions for use with or in SLS files
� NZslsutilTFc C s t jj�| |||�S )a3
Merge ``upd`` recursively into ``dest``
If ``merge_lists=True``, will aggregate list object types instead of
replacing. This behavior is only activated when ``recursive_update=True``.
CLI Example:
.. code-block:: shell
salt '*' slsutil.update '{foo: Foo}' '{bar: Bar}'
)�salt�utils�
dictupdate�update)�destZupdZrecursive_update�merge_lists� r �H/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/slsutil.pyr s r �smart�yamlc C s t jj�| ||||�S )a
Merge a data structure into another by choosing a merge strategy
Strategies:
* aggregate
* list
* overwrite
* recurse
* smart
CLI Example:
.. code-block:: shell
salt '*' slsutil.merge '{foo: Foo}' '{bar: Bar}'
�r r r �merge)Zobj_aZobj_b�strategy�rendererr r r r r
$ s r
c C s( i }| D ]
}t jj�|||||�}q|S )av
.. versionadded:: 2019.2.0
Merge a list of objects into each other in order
:type lst: Iterable
:param lst: List of objects to be merged.
:type strategy: String
:param strategy: Merge strategy. See utils.dictupdate.
:type renderer: String
:param renderer:
Renderer type. Used to determine strategy when strategy is 'smart'.
:type merge_lists: Bool
:param merge_lists: Defines whether to merge embedded object lists.
CLI Example:
.. code-block:: shell
$ salt-call --output=txt slsutil.merge_all '[{foo: Foo}, {foo: Bar}]'
local: {u'foo': u'Bar'}
r )�lstr r r �ret�objr r r � merge_all9 s r �
jinja|yamlc K s� | s
|s
t j�d��| r|rt j�d��t j�tt�}| r)td | |�dd�d�}|r1d}||d<