HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/__pycache__/sysfs.cpython-310.pyc
o

�N�gm�@sxdZddlZddlZddlZddlZddlZddlZe�e	�Z
dd�Zddd�Zdd�Z
dd
d�Zdd
d�Zdd�ZdS)z�
Module for interfacing with SysFS

.. seealso:: https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt
.. versionadded:: 2016.3.0
�NcCstjj��S)z
    Only work on Linux
    )�salt�utils�platformZis_linux�rr�F/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/sysfs.py�__virtual__srcCs>t|�}|dur
dStj�|�r|S|durt||�St|�S)z�
    Access/write a SysFS attribute.
    If the attribute is a symlink, its destination is returned

    :return: value or bool

    CLI Example:

     .. code-block:: bash

        salt '*' sysfs.attr block/sda/queue/logical_block_size
    FN)�target�os�path�isdir�write�read)�key�valuerrr�attrs

rcCs�z6t|�}t�d||�tjj�|d��}|�tjj�	|�d���	Wd�WdS1s/wYWdSt
y@YdSw)z�
    Write a SysFS attribute/action

    CLI Example:

     .. code-block:: bash

        salt '*' sysfs.write devices/system/cpu/cpu0/cpufreq/scaling_governor 'performance'
    zWriting %s to %s�w�
NTF)r�log�tracerr�filesZfopenrZstringutilsZto_str�	Exception)rrZtwriterrrrr3s
(��r�cCs�t|t�si}|D]}ttj�||��}|dur|||<q	|Sttj�||��}|dur.dStj�|�rvt|�}i}|d|dD]1}ttj�||��}|durs|�	d�}	|	�
�}|}
|	ro|	D]}||
vrji|
|<|
|}
q`||
|<qB|Sz[t�d|�t�
t�|tjtjB���=}|����}
|
s�	Wd�WdSzt|
�}
Wnty�zt|
�}
Wn	ty�YnwYnw|
Wd�WS1s�wYWdSty�YdSw)a
    Read from SysFS

    :param key: file or path in SysFS; if key is a list then root will be prefixed on each key

    :return: the full (tree of) SysFS attributes under key

    CLI Example:

     .. code-block:: bash

        salt '*' sysfs.read class/net/em1/statistics
    F�r�rw�/z
Reading %s...N)�
isinstance�strr
r	r
�joinrr�
interfaces�split�poprr�fdopen�open�O_RDONLY�
O_NONBLOCK�strip�intr�float)r�root�resZakeyZares�keys�resultZsubkeyZsubvalZsubkeysZ	subresultZskeyZtreader�valrrrr
Gsd
�

�����(��r
TcCsT|�d�stj�d|�}tj�|�}tj�|�s t�d|�dS|r$|Stj�|�S)a
    Return the basename of a SysFS key path

    :param key: the location to resolve within SysFS
    :param full: full path instead of basename

    :return: fullpath or basename of path

    CLI Example:

     .. code-block:: bash

        salt '*' sysfs.read class/ttyS0

    z/syszUnknown SysFS key %sF)	�
startswithr	r
r�realpath�existsr�debug�basename)r�fullrrrr�s
rc
Cs�t|�}|dustj�|�st�d|�dSg}g}g}tjjj|dd�D]Q\}}}|D]I}tj�	||�}tj�
|�s<q,t�|�j}	t
tj|	@�}
t
tj|	@�}tj�||�}|rg|
ra|�|�q,|�|�q,|
ro|�|�q,t�d|�q,q%|||d�S)a�
    Generate a dictionary with all available interfaces relative to root.
    Symlinks are not followed.

    CLI Example:

     .. code-block:: bash

        salt '*' sysfs.interfaces block/bcache0/bcache

    Output example:
     .. code-block:: json

       {
          "r": [
            "state",
            "partial_stripes_expensive",
            "writeback_rate_debug",
            "stripe_size",
            "dirty_data",
            "stats_total/cache_hits",
            "stats_total/cache_bypass_misses",
            "stats_total/bypassed",
            "stats_total/cache_readaheads",
            "stats_total/cache_hit_ratio",
            "stats_total/cache_miss_collisions",
            "stats_total/cache_misses",
            "stats_total/cache_bypass_hits",
          ],
          "rw": [
            "writeback_rate",
            "writeback_rate_update_seconds",
            "cache_mode",
            "writeback_delay",
            "label",
            "writeback_running",
            "writeback_metadata",
            "running",
            "writeback_rate_p_term_inverse",
            "sequential_cutoff",
            "writeback_percent",
            "writeback_rate_d_term",
            "readahead"
          ],
          "w": [
            "stop",
            "clear_stats",
            "attach",
            "detach"
          ]
       }

    .. note::
      * 'r' interfaces are read-only
      * 'w' interfaces are write-only (e.g. actions)
      * 'rw' are interfaces that can both be read or written
    FzSysFS %s not a dir)�followlinksz#Unable to find any interfaces in %s)rrr)rr	r
rr�errorrrZos_walkr�isfile�stat�st_mode�bool�S_IRUSR�S_IWUSR�relpath�append�warning)
r(Z
readwritesZreadsZwritesr
�_rZafileZcanpathZ	stat_modeZis_rZis_wr;rrrr�s2;�r)N)r)T)�__doc__�loggingr	r6Zsalt.utils.filesrZsalt.utils.pathZsalt.utils.platform�	getLogger�__name__rrrrr
rrrrrr�<module>s



B