%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core20/2599/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //snap/core20/2599/lib/python3/dist-packages/cloudinit/__pycache__/dmi.cpython-38.pyc

U

Ӈgr�@s�ddlZddlZddlZddlmZddlmZddlmZm	Z	ddl
mZmZm
Z
mZe�e�ZdZeddd	d
g�Zdej_edd
d�eddd�eddd�eddd�eddd�eddd�eddd�eddd�eddd�eddd �ed!d"d#�ed$d%d�ed&d'd �ed(d)d*�ed+d,d#�ed-d.d#�ed/d0d�d1�Zeeed2�d3d4�Zeeed2�d5d6�Zeeed2�d7d8�Zeeeed9�d:d;�Zeeed2�d<d=�Zeed>�d?d@�ZdS)A�N)�
namedtuple)�Optional)�performance�subp)�is_container�is_DragonFlyBSD�
is_FreeBSD�
is_OpenBSDz/sys/class/dmi/id�KernelNames�linux�freebsd�openbsd)NNNZboard_asset_tagzsmbios.planar.tagZboard_vendorzsmbios.planar.makerZ
board_namezsmbios.planar.productZboard_serialzsmbios.planar.serialZ
board_versionzsmbios.planar.versionZ	bios_datezsmbios.bios.reldateZbios_vendorzsmbios.bios.vendorZbios_versionzsmbios.bios.versionZchassis_asset_tagzsmbios.chassis.tagZchassis_vendorzsmbios.chassis.makerz	hw.vendorZchassis_serialzsmbios.chassis.serialzhw.uuidZchassis_versionzsmbios.chassis.versionZ
sys_vendorzsmbios.system.makerZproduct_namezsmbios.system.productz
hw.productZproduct_serialzsmbios.system.serialZproduct_uuidzsmbios.system.uuidZproduct_versionzsmbios.system.version)zbaseboard-asset-tagzbaseboard-manufacturerzbaseboard-product-namezbaseboard-serial-numberzbaseboard-versionzbios-release-datezbios-vendorzbios-versionzchassis-asset-tagzchassis-manufacturerzchassis-serial-numberzchassis-versionzsystem-manufacturerzsystem-product-namezsystem-serial-numberzsystem-uuidzsystem-version)�key�returnc
Cst�|�}|dks|jdkr dSd�t|j�}t�d|�tj�	|�sVt�d|�dSz>t
�d|����$t|d��}|�
�}W5QRXW5QRXWn"tk
r�t�d|�YdSX|dt|�d	d
kr�d}z|�d���WStk
�r}zt�d
|||�W5d}~XYnXdS)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�existsrZTimed�open�read�PermissionError�len�decode�strip�UnicodeDecodeError�error)r�kmapZdmi_key_path�fpZkey_data�e�r+�//usr/lib/python3/dist-packages/cloudinit/dmi.py�_read_dmi_syspathPs<
� �r-c
Cs�t�|�}|dks|jdkr dSt�d|j�z2dd|jg}t�|�j��}t�d||j�|WStjk
r�}zt�d||�W5d}~XYnXdS)z/
    Reads dmi data from FreeBSD's kenv(1)
    NrZkenvz-qzkenv returned '%s' for '%s'zfailed kenv cmd: %s
%s)	rrrrrr�stdoutr%�ProcessExecutionError�rr(�cmd�resultr*r+r+r,�
_read_kenvxs
 r3c
Cs�t�|�}|dks|jdkr dSt�d|j�z2dd|jg}t�|�j��}t�d||j�|WStjk
r�}zt�d||�W5d}~XYnXdS)z1
    Reads dmi data from OpenBSD's sysctl(8)
    NrZsysctlz-qnzsysctl returned '%s' for '%s'zfailed sysctl cmd: %s
%s)	rrr
rrrr.r%r/r0r+r+r,�_read_sysctl�s
 r4)r�dmidecode_pathrc
Cs�zD|d|g}t�|�j��}t�d||�|�dd�dkr@WdS|WStjk
r|}zt�d||�WY�dSd}~XYnXdS)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)rr.r%rr�replacer/)rr5r1r2r*r+r+r,�_call_dmidecode�s
r9cCs�t�r
dSt�st�rt|�St�r,t|�St|�}|dk	r@|Sdd�}t��d}||�st|dkstt	�
d|�dSt�d�}|r�t
||�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)NZx86_64r�i�Z86r+)Zarchr+r+r,�is_x86�szread_dmi_data.<locals>.is_x86�)Zaarch64Zamd64zdmidata is not supported on %sZ	dmidecodez0did not find either path %s or dmidecode command)rrrr3r	r4r-r�unamerrrZwhichr9r)rZ
syspath_valuer<Z
uname_archr5r+r+r,�
read_dmi_data�s&

r?)�srcrcCsxd|kr|St��}t�d|�D]R}||kr>t�d|||�q t|�}|sNd}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.r7z'Replacing __dmi.%s__ in '%s' with '%s'.z__dmi.)	r�keys�re�findallrZwarningr?rr8)r@Zvalid_dmi_keys�matchZ	dmi_valuer+r+r,�sub_dmi_vars�s.��rF)ZloggingrrC�collectionsr�typingrZ	cloudinitrrZcloudinit.utilrrrr	Z	getLogger�__name__rrr
�__new__�__defaults__r�strr-r3r4r9r?rFr+r+r+r,�<module>s�

�����


����������1(0

Zerion Mini Shell 1.0