%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core22/current/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //snap/core22/current/lib/python3/dist-packages/cloudinit/__pycache__/dmi.cpython-310.pyc

o

Ӈgr�@s�ddlZddlZddlZddlmZddlmZddlmZm	Z	ddl
mZmZm
Z
mZe�e�ZdZedgd��Zd	ej_id
eddd��d
eddd��deddd��deddd��deddd��deddd��deddd��ded d!d��d"ed#d$d��d%ed&d'd(��d)ed*d+d,��d-ed.d/d��d0ed1d2d(��d3ed4d5d6��d7ed8d9d,��d:ed;d<d,��d=ed>d?d��Zd@edAeefdBdC�Zd@edAeefdDdE�Zd@edAeefdFdG�Zd@edHedAeefdIdJ�Zd@edAeefdKdL�ZdMedAefdNdO�ZdS)P�N)�
namedtuple)�Optional)�performance�subp)�is_container�is_DragonFlyBSD�
is_FreeBSD�
is_OpenBSDz/sys/class/dmi/id�KernelNames)�linux�freebsd�openbsd)NNNzbaseboard-asset-tag�board_asset_tagzsmbios.planar.tagzbaseboard-manufacturer�board_vendorzsmbios.planar.makerzbaseboard-product-name�
board_namezsmbios.planar.productzbaseboard-serial-number�board_serialzsmbios.planar.serialzbaseboard-version�
board_versionzsmbios.planar.versionzbios-release-date�	bios_datezsmbios.bios.reldatezbios-vendor�bios_vendorzsmbios.bios.vendorzbios-version�bios_versionzsmbios.bios.versionzchassis-asset-tag�chassis_asset_tagzsmbios.chassis.tagzchassis-manufacturer�chassis_vendorzsmbios.chassis.makerz	hw.vendorzchassis-serial-number�chassis_serialzsmbios.chassis.serialzhw.uuidzchassis-version�chassis_versionzsmbios.chassis.versionzsystem-manufacturer�
sys_vendorzsmbios.system.makerzsystem-product-name�product_namezsmbios.system.productz
hw.productzsystem-serial-number�product_serialzsmbios.system.serialzsystem-uuid�product_uuidzsmbios.system.uuidzsystem-version�product_versionzsmbios.system.version�key�returnc
CsBt�|�}|dus|jdurdSd�t|j�}t�d|�tj�	|�s+t�d|�dSz3t
�d|����!t|d��}|�
�}Wd�n1sIwYWd�n1sXwYWntynt�d|�YdSw|dt|�d	d
kr}d}z|�d���WSty�}zt�d
|||�WYd}~dSd}~ww)z/
    Reads dmi data from /sys/class/dmi/id
    Nz{0}/{1}�querying dmi data %szdid not find %szReading �rbzCould not read %s����
��utf8z-utf-8 decode of content (%s) in %s failed: %s)�DMIDECODE_TO_KERNEL�getr�format�DMI_SYS_PATH�LOG�debug�os�path�existsr�Timed�open�read�PermissionError�len�decode�strip�UnicodeDecodeError�error)r�kmap�dmi_key_path�fp�key_data�e�r?�//usr/lib/python3/dist-packages/cloudinit/dmi.py�_read_dmi_syspathPsH
�
�������rAc
C�t�|�}|dus|jdurdSt�d|j�zdd|jg}t�|�j��}t�d||j�|WStjyK}zt�d||�WYd}~dSd}~ww)z/
    Reads dmi data from FreeBSD's kenv(1)
    Nr!�kenvz-qzkenv returned '%s' for '%s'zfailed kenv cmd: %s
%s)	r(r)rr,r-r�stdoutr7�ProcessExecutionError�rr:�cmd�resultr>r?r?r@�
_read_kenvx�
��rIc
CrB)z1
    Reads dmi data from OpenBSD's sysctl(8)
    Nr!�sysctlz-qnzsysctl returned '%s' for '%s'zfailed sysctl cmd: %s
%s)	r(r)r
r,r-rrDr7rErFr?r?r@�_read_sysctl�rJrL�dmidecode_pathc
Cs|z"|d|g}t�|�j��}t�d||�|�dd�dkr WdS|WStjy=}zt�d||�WYd}~dSd}~ww)z
    Calls out to dmidecode to get the data out. This is mostly for supporting
    OS's without /sys/class/dmi/id support.
    z--stringz dmidecode returned '%s' for '%s'�.�zfailed dmidecode cmd: %s
%sN)rrDr7r,r-�replacerE)rrMrGrHr>r?r?r@�_call_dmidecode�s
��rQcCs�t�rdSt�st�rt|�St�rt|�St|�}|dur |Sdd�}t��d}||�s:|dvs:t	�
d|�dSt�d�}|rFt
||�St	�
dt�dS)	a�
    Wrapper for reading DMI data.

    If running in a container return None.  This is because DMI data is
    assumed to be not useful in a container as it does not represent the
    container but rather the host.

    This will do the following (returning the first that produces a
    result):
        1) Use a mapping to translate `key` from dmidecode naming to
           sysfs naming and look in /sys/class/dmi/... for a value.
        2) Use `key` as a sysfs key directly and look in /sys/class/dmi/...
        3) Fall-back to passing `key` to `dmidecode --string`.

    If all of the above fail to find a value, None will be returned.
    NcSs$|dkp|ddko|dd�dkS)N�x86_64r�i��86r?)�archr?r?r@�is_x86�s$zread_dmi_data.<locals>.is_x86�)�aarch64�amd64zdmidata is not supported on %s�	dmidecodez0did not find either path %s or dmidecode command)rrrrIr	rLrAr.�unamer,r-r�whichrQr+)r�
syspath_valuerW�
uname_archrMr?r?r@�
read_dmi_data�s&

r`�srccCsxd|vr|St��}t�d|�D])}||vrt�d|||�qt|�}|s'd}t�d|||�|�d|�d�|�}q|S)zBReplace __dmi.VARNAME__ with DMI values from either sysfs or kenv.�__z__dmi\.([^_]+)__z7Ignoring invalid __dmi.%s__ in %s. Expected one of: %s.rOz'Replacing __dmi.%s__ in '%s' with '%s'.z__dmi.)	r(�keys�re�findallr,�warningr`r-rP)ra�valid_dmi_keys�match�	dmi_valuer?r?r@�sub_dmi_vars�s.��rj)�loggingr.rd�collectionsr�typingr�	cloudinitrr�cloudinit.utilrrrr	�	getLogger�__name__r,r+r
�__new__�__defaults__r(�strrArIrLrQr`rjr?r?r?r@�<module>s�
	������
��
���������������"��%��(��+��1(0

Zerion Mini Shell 1.0