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/grains/__pycache__/smartos.cpython-310.pyc
o

�N�g�@s�dZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZdZdejj
jiZe�e�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�ZdS)z�
SmartOS grain provider

:maintainer:    Jorge Schrauwen <sjorge@blackdot.be>
:maturity:      new
:depends:       salt.utils, salt.module.cmdmod
:platform:      SmartOS

.. versionadded:: 2017.7.0

�N�smartos�cmd.runcCstjj��rtSdS)z*
    Only load when we are on SmartOS
    F)�salt�utils�platformZ
is_smartos�__virtualname__�rr�G/opt/saltstack/salt/lib/python3.10/site-packages/salt/grains/smartos.py�__virtual__ sr
cCs�i}i}tdd��d�D]}tttgd�|�d����}|||d<||dd=q
t|�|d<d|d	<d|d
<dddd�|d<|D]I}||d
��dkrX|d	d7<n||d
��dkrj|d
d7<||d|dvr~d|d||d<|d||dd7<qCtjj	�
tdd��}|d|d<|d|d<|dr�|d|d<|d|d<|d|d<|d|d<|S)z?
    Return useful information from a SmartOS compute node
    rz&vmadm list -p -o uuid,alias,state,type�
)�uuid�alias�state�type�:rZcomputenode_vms_totalrZcomputenode_vms_runningZcomputenode_vms_stopped)ZKVMZLXZOSZcomputenode_vms_typerZrunning��stoppedr�sysinfozSDC VersionZcomputenode_sdc_versionz
VM CapableZcomputenode_vm_capablezCPU VirtualizationZcomputenode_vm_hw_virtZManufacturerZmanufacturerZProductZproductnameZUUID)�__salt__�split�dict�list�zip�len�lowerrr�json�loads)�grainsZvmsZvmrrrr	�_smartos_computenode_data)s6
rcCs�i}tdd����d�}|d|d<|d|d<t�d�}d	|d
<tj�d�r[tj	j
�dd��#}|D]}tj	j�
|�}|�|�}|rJ|�d�|d
<q3Wd
�|S1sVwY|S)z7
    Return useful information from a SmartOS zone
    rzzoneadm list -prrZzoneidrZzonenamezImage:\s(.+)�Unknown�imageversionz/etc/product�rN)r�stripr�re�compile�os�path�isfilerr�files�fopen�stringutils�
to_unicode�match�group)rZzoneinfor �fp_�liner,rrr	�_smartos_zone_data^s&

��
��r0c		Cs�ddd�}t�d�}t�d�}ddg}|D]M}tj�|�rbtjj�|d��5}|D]*}tjj	�
|�}|�|�}|rR|�d�|d	<|�|�d��}|rP|�d�|d
<nq(Wd�n1s]wYq|S)z)
    SmartOS zone pkgsrc information
    r)�
pkgsrcversion�
pkgsrcpathz
PKG_PATH=(.+)z;^https?://pkgsrc.joyent.com/packages/SmartOS/(.+)/(.+)/All$z/opt/local/etc/pkg_install.confz/opt/tools/etc/pkg_install.confr!rr2r1N)
r#r$r%r&r'rrr(r)r*r+r,r-)	rr2r1Zpkg_install_pathsZpkg_installr.r/Zmatch_pkgsrcpathZmatch_pkgsrcversionrrr	�_smartos_zone_pkgsrc_datays:	�
��
�����
r3c	Cs�dgi}t�d�}ddg}|D]:}tj�|�rItjj�|d��"}|D]}tjj	�
|���}|�|�r9|d�
|�q"Wd�n1sDwYq|S)z(
    SmartOS zone pkgin information
    Zpkgin_repositoriesz^(?:https|http|ftp|file)://.*$z&/opt/local/etc/pkgin/repositories.confz&/opt/tools/etc/pkgin/repositories.confr!N)r#r$r%r&r'rrr(r)r*r+r"r,�append)rZ	pkginrepoZrepositories_pathZrepositoriesr.r/rrr	�_smartos_zone_pkgin_data�s$�
�
����r5cCszi}tjj��rtjjj|t�dd�}ntjj��r%tjjj|t�dd�}tjjj|t	�dd�}tjjj|t
�dd�}|S)z$
    Provide grains for SmartOS
    T)Zmerge_lists)rrrZis_smartos_zoneZ
dictupdate�updater0Zis_smartos_globalzonerr5r3)rrrr	r�s ����)�__doc__�loggingr%r#Zsalt.modules.cmdmodrZsalt.utils.dictupdateZsalt.utils.jsonZsalt.utils.pathZsalt.utils.platformZsalt.utils.stringutilsr�modulesZcmdmod�runr�	getLogger�__name__�logr
rr0r3r5rrrrr	�<module>s(
�
	5.