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/modules/__pycache__/zonecfg.cpython-310.pyc
o

�N�g�V�@sldZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
e�e�Z
dZddiZgd�Zdd	gZgd
�gd�dd
gddggd�dgddgdggd�ddgd�
Zdddddddd�Zejjjdd��Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd@d'd(�Zd)d*�Zd+d,�ZdAd-d.�Z d/d�Z!d0d1�Z"d2d3�Z#d4d5�Z$d6d7�Z%d8d9�Z&d:d;�Z'd<d=�Z(d@d>d?�Z)dS)Ba:
Module for Solaris 10's zonecfg

:maintainer:    Jorge Schrauwen <sjorge@blackdot.be>
:maturity:      new
:platform:      OmniOS,OpenIndiana,SmartOS,OpenSolaris,Solaris 10
:depend:        salt.modules.file

.. versionadded:: 2017.7.0

.. warning::
    Oracle Solaris 11's zonecfg is not supported by this module!
�N)�OrderedDict�zonecfg�import_�import)�rctl�net�fs�device�
dedicated-cpu�dataset�attr�
capped-cpu�
capped-memory)�dirZspecial�raw�type�options)�addresszallowed-addressz
global-nic�mac-addr�physical�propertyzvlan-id defrouter�matchr�name�value)rrrZncpusZ
importance)rZswap�locked�userZauths)
rrr	rrrr
r
r�adminrr)rrr	rrrrcCs<tddksdStdd�}|drdS|ddkrd	SdS)
z3
    Check if we are running in the globalzone
    Zkernel�SunOSF�cmd.run_all�zonename�retcode�stdout�globalT)�
__grains__�__salt__)r�r%�H/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/zonecfg.py�_is_globalzoneQsr'cCsRt�r"tjj�d�r"tddvrtStddkr"ttd�dkr"tSdt�d�fS)	z�
    We are available if we are have zonecfg and are the global zone on
    Solaris 10, OmniOS, OpenIndiana, OpenSolaris, or Smartos.
    r�os)ZOpenSolarisZSmartOSZOmniOSZOpenIndianazOracle SolarisZosmajorrelease�
Fz3 module can only be loaded in a solaris globalzone.)r'�salt�utils�path�whichr#�__virtualname__�intr%r%r%r&�__virtual__bs�r0cCs<|�dd�}|��}|D]}|�d�r|�|�qd�|�S)z*Internal helper to sanitize message outputz	zonecfg: �zOn line�
)�replace�
splitlines�
startswith�remove�join)�message�liner%r%r&�_clean_messageus

�
r:cCstt|t�r|r	dSdSt|t�r�t�d�}|��}|�d�r1|�d�r1|�|dd��ddd	�S|�d
�r�|�d�r�i}|�|dd��ddd	�D]J}|�d�}d
|dvrb|d�	d
d�|d<|d�
�rst|d�||d<qK|ddkr�d||d<qK|ddkr�d||d<qK|d||d<qK|Sd
|vr�|�	d
d�}|�
�r�t|�S|dkr�dS|dkr�dS|S|S)zCInternal helper for parsing configuration values into python values�true�falsez((?:[^,"']|"[^"]*"|'[^']*')+)�[�]����N��(�)�=�"r1rTF)�
isinstance�bool�str�re�compile�stripr5�endswith�splitr3�isdigitr/)rZ
listparserZrval�pairr%r%r&�_parse_values>


 
rPcCs0t|t�r<g}|�d�|��D]\}}|�|�|�d�|�|�|�d�q|�d�d�dd�|D���dd�St|t�r�g}|�d�|D].}t|t�rnt|�}|��D]\}}|�|�|�d�|�|�qYn|�|�|�d�qJ|�d�d�d	d�|D���dd�Sd
|vr�d|�d�S|S)zKInternal helper for converting pythonic values to configuration file valuesrBrD�,rCr1cs��|]}t|�VqdS�N�rH��.0�vr%r%r&�	<genexpr>���z"_sanitize_value.<locals>.<genexpr>z,)csrRrSrTrUr%r%r&rX�rY� rE)rF�dict�append�itemsr7r3�listr)rZ	new_value�krW�itemr%r%r&�_sanitize_value�s4










�

rac
Csftd|�r1tjj�|d��}t�dd�tjj�	|�
����Wd�dS1s*wYdSdS)z'Internal helper for debugging cfg files�file.file_exists�rz zonecfg - configuration file:
%sr1N)r$r*r+�filesZfopen�log�debugr7�data�decode�	readlines)�cfg_file�fp_r%r%r&�	_dump_cfg�s�"��rlFcCsBddi}tjj��}tjjj|ddd��'}|�|rdnd�|�dt|��d	��|�d
t|��d	��Wd�n1s>wYtd|�s\td
|ddkrT|n|�d�dd�t|�tddj	||d��}|ddk|d<|dr{|dn|d|d<|ddkr�|d=nt
|d�|d<td|�r�td|�|S)aa
    Create an in-memory configuration for the specified zone.

    zone : string
        name of zone
    brand : string
        brand name
    zonepath : string
        path of zone
    force : boolean
        overwrite configuration

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.create deathscythe ipkg /zones/deathscythe
    �statusT�w+���modez
create -b -F
z
create -b
z
set brand=r2z
set zonepath=Nzfile.directory_existszfile.makedirs_permsr@�/Z0700rzzonecfg -z {zone} -f {cfg})�zoneZcfgr rr!�stderrr8r1rb�file.remove)r*r+rd�mkstemp�fpopen�writerar$rl�formatr:)rsZbrandZzonepath�force�retrjrk�resr%r%r&�create�s4����r}cC�|ddi}t|�tddj||d��}|ddk|d<|dr#|dn|d	|d
<|d
dkr4|d
=|St|d
�|d
<|S)aR
    Create an in-memory configuration from a template for the specified zone.

    zone : string
        name of zone
    template : string
        name of template

    .. warning::
        existing config will be overwritten!

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.create_from_template leo tallgeese
    rmTrz%zonecfg -z {zone} create -t {tmpl} -F)rsZtmplr rr!rtr8r1�rlr$ryr:)rs�templater{r|r%r%r&�create_from_template
s���r�cCsrddi}tddj|d��}|ddk|d<|dr|dn|d	|d
<|d
dkr/|d
=|St|d
�|d
<|S)z�
    Delete the specified configuration from memory and stable storage.

    zone : string
        name of zone

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.delete epyon
    rmTrzzonecfg -z {zone} delete -F�rsr rr!rtr8r1�r$ryr:)rsr{r|r%r%r&�delete0s
���r�cCs�ddi}tddj||rd|��ndd��}|dd	k|d<|dr&|d
n|d|d<|ddkr7|d=|St|d�|d<|S)
a'
    Export the configuration from memory to stable storage.

    zone : string
        name of zone
    path : string
        path of file to export to

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.export epyon
        salt '*' zonecfg.export epyon /zones/epyon.cfg
    rmTrzzonecfg -z {zone} export{path}z -f r1�rsr,r rr!rtr8r��rsr,r{r|r%r%r&�exportOs���r�cCr~)a
    Import the configuration to memory from stable storage.

    zone : string
        name of zone
    path : string
        path of file to export to

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.import epyon /zones/epyon.cfg
    rmTr�zonecfg -z {zone} -f {path}r�r rr!rtr8r1rr�r%r%r&rrs���c	Cs~ddi}d}|dvrd|d<d|�d�|d<natjj��}tjjj|d	d
d��I}|dkrZt|t�s6t|t�r:t|�}t|t	�rEt
|���nt
|�}|�|�d
|�dt|��d��n|dkri|�|�d
|�d��Wd�n1sswY|r�t
|�tddj||d��}|ddk|d<|dr�|dn|d|d<|ddkr�|d=nt|d�|d<td|�r�td|�|S)z�
    internal handler for set and clear_property

    methode : string
        either set, add, or clear
    zone : string
        name of zone
    key : string
        name of property
    value : string
        value of property

    rmTN)�set�clearFzunkown methode �!r8rnrorpr�rZrDr2r�rr�r�r rr!rtr1rbru)r*r+rdrvrwrFr[r^rarGrH�lowerrxrlr$ryr:)�methoders�keyrr{rjrkr|r%r%r&�	_property�s@"��
��r�cCstd|||�S)a
    Set a property

    zone : string
        name of zone
    key : string
        name of property
    value : string
        value of property

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.set_property deathscythe cpu-shares 100
    r��r�)rsr�rr%r%r&�set_property�s�r�cCstd||d�S)z�
    Clear a property

    zone : string
        name of zone
    key : string
        name of property

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.clear_property deathscythe cpu-shares
    r�Nr�)rsr�r%r%r&�clear_property�s�r�c	Ks�ddi}tjjjd i|��}|D]}t||t�s t||t�r(t||�||<q|dvr:d|d<d|��|d<|S|dvrQ|rQ||vrQd|d<d�|�|d<|Stjj	�
�}tjj	j|d	d
d���}|dvrp|�d
|�d��n=|dvr�|r�||}	t|	t�s�t|	t�r�t|	�}	t|	t
�r�t|	���nt|	�}	|�d�||t|	���n	|�d|�d��|��D]M\}}
|dvr�||kr�q�t|
t�s�t|
t�r�t|	�}	t|
t
�r�t|
���nt|
�}	|t|vr�|�d|�dt|	��d��q�|�d
|�dt|	��d��q�|�d�Wd�n	1�swY|�r]t|�tddj||d��}|ddk|d<|d�r7|dn|d|d<|ddk�rH|d=nt|d�|d<td|��r]td|�|S)!a'
    internal resource hanlder

    methode : string
        add or update
    zone : string
        name of zone
    resource_type : string
        type of resource
    resource_selector : string
        unique resource identifier
    **kwargs : string|int|...
        resource properties

    rmT)�add�updateFzunknown methode r8)r�z,resource selector {} not found in parametersrnrorp)r�zadd r2zselect {} {}={}
zselect zset rDrZzend
Nrr�r�r rr!rtr1rbrur%)r*r+�argsZclean_kwargsrFr[r^raryrdrvrwrxrGrHr�r]�_zonecfg_resource_settersrlr$r:)r�rs�
resource_type�resource_selector�kwargsr{r_rjrkrrWr|r%r%r&�	_resource�sv��
�����r�cKstd||dfi|��S)a_
    Add a resource

    zone : string
        name of zone
    resource_type : string
        type of resource
    kwargs : string|int|...
        resource properties

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.add_resource tallgeese rctl name=zone.max-locked-memory value='(priv=privileged,limit=33554432,action=deny)'
    r�N�r�)rsr�r�r%r%r&�add_resourceSsr�cKstd|||fi|��S)a
    Add a resource

    zone : string
        name of zone
    resource_type : string
        type of resource
    resource_selector : string
        unique resource identifier
    kwargs : string|int|...
        resource properties

    .. note::
        Set resource_selector to None for resource that do not require one.

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.update_resource tallgeese rctl name name=zone.max-locked-memory value='(priv=privileged,limit=33554432,action=deny)'
    r�r�)rsr�r�r�r%r%r&�update_resourcegsr�c	Csddi}tjj��}tjjj|ddd�� }|r$|�d�||t|���n	|�d|�d��Wd	�n1s7wY|r�t|�t	d
dj||d��}|d
dk|d<|dr]|dn|d|d<|ddkrm|d=nt
|d�|d<t	d|�r�t	d|�|S)a�
    Remove a resource

    zone : string
        name of zone
    resource_type : string
        type of resource
    resource_key : string
        key for resource selection
    resource_value : string
        value for resource selection

    .. note::
        Set resource_selector to None for resource that do not require one.

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.remove_resource tallgeese rctl name zone.max-locked-memory
    rmTrnrorpzremove {} {}={}
zremove r2Nrr�r�r rr!rtr8r1rbru)r*r+rdrvrwrxryrarlr$r:)rsr�Zresource_keyZresource_valuer{rjrkr|r%r%r&�remove_resource�s8
������r�c	Cs�i}tddj|d��}|ddk�rLd}i}|d�d�D�]"}d	|vr&q|�d
�r6|s.q|��dd�}|���d	�d}d
|vrI|dd�}|tvrj|rV||�|�|re|}i}||vrdg||<qd}i}q|tvr�|rw||�|�|}i}||vr�g||<q|�d
�r�|���d
�r�|s�q|��dd�}|dkr�d|vr�i||<t	|��|���
d	�dd��}d|vr�d|vr�|d|||d<qt�d|�qt	|��|���
d	�dd��||<q|r�||�|�d}i}|dk�r.d|v�ri||<t	|��|���
d	�dd��}d|v�r'd|v�r'|d|||d<qt�d|�qt	|��|���
d	�dd��||<q|�rL||�|�|S)a
    Display the configuration from memory

    zone : string
        name of zone
    show_all : boolean
        also include calculated values like capped-cpu, cpu-shares, ...

    CLI Example:

    .. code-block:: bash

        salt '*' zonecfg.info tallgeese
    rzzonecfg -z {zone} infor�r rNr!r2�:r=r?r@�	rrrz,zonecfg.info - not sure how to deal with: %s)
r$ryrMr5�rstriprK�"_zonecfg_info_resources_calculatedr\�_zonecfg_info_resourcesrP�indexre�warning)	rsZshow_allr{r|ZresnameZresdatar9r�Zkvr%r%r&�info�s���
��
"
�

"(r�)FrS)*�__doc__�loggingrIZsalt.utils.argsr*Zsalt.utils.dataZsalt.utils.decoratorsZsalt.utils.filesZsalt.utils.pathZsalt.utils.odictr�	getLogger�__name__rer.Z__func_alias__r�r�r�Z#_zonecfg_resource_default_selectorsr+Z
decoratorsZmemoizer'r0r:rPrarlr}r�r�r�rr�r�r�r�r�r�r�r�r%r%r%r&�<module>sn
�	��

)!

7&
##7W;