%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17212/usr/lib/python3/dist-packages/cloudinit/__pycache__/
Upload File :
Create Path :
Current File : //snap/core/17212/usr/lib/python3/dist-packages/cloudinit/__pycache__/dmi.cpython-35.pyc



"�T`��$@s�ddlmZddlmZddlmZmZddlmZddl	Z	ej
e�ZdZ
eddd	g�ZdEej_d
edd�d
edd�dedd�dedd�dedd�dedd�dedd�ded d!�d"ed#d$�d%ed&d'�d(ed)d*�d+ed,d-�d.ed/d0�d1ed2d3�d4ed5d6�d7ed8d9�d:ed;d<�iZd=d>�Zd?d@�ZdAdB�ZdCdD�ZdS)F�)�log)�subp)�is_container�
is_FreeBSD)�
namedtupleNz/sys/class/dmi/idZKernelNames�linux�freebsdzbaseboard-asset-tagZboard_asset_tagzsmbios.planar.tagzbaseboard-manufacturerZboard_vendorzsmbios.planar.makerzbaseboard-product-nameZ
board_namezsmbios.planar.productzbaseboard-serial-numberZboard_serialzsmbios.planar.serialzbaseboard-versionZ
board_versionzsmbios.planar.versionzbios-release-dateZ	bios_datezsmbios.bios.reldatezbios-vendorZbios_vendorzsmbios.bios.vendorzbios-versionZbios_versionzsmbios.bios.versionzchassis-asset-tagZchassis_asset_tagzsmbios.chassis.tagzchassis-manufacturerZchassis_vendorzsmbios.chassis.makerzchassis-serial-numberZchassis_serialzsmbios.chassis.serialzchassis-versionZchassis_versionzsmbios.chassis.versionzsystem-manufacturerZ
sys_vendorzsmbios.system.makerzsystem-product-nameZproduct_namezsmbios.system.productzsystem-serial-numberZproduct_serialzsmbios.system.serialzsystem-uuidZproduct_uuidzsmbios.system.uuidzsystem-versionZproduct_versionzsmbios.system.versioncCsHtj|�}|dks*|jdkr.dSdjt|j�}tjd|�tjj	|�sytjd|�dSy)t
|d��}|j�}WdQRXWn&tk
r�tjd|�dSYnX|dt
|�dd	kr�d
}y|jd�j�SWn;tk
rC}ztjd|||�WYdd}~XnXdS)
z/
    Reads dmi data from /sys/class/dmi/id
    Nz{0}/{1}zquerying dmi data %szdid not find %s�rbzCould not read %ss��s
��utf8z-utf-8 decode of content (%s) in %s failed: %s)�DMIDECODE_TO_KERNEL�getr�format�DMI_SYS_PATH�LOG�debug�os�path�exists�open�read�PermissionError�len�decode�strip�UnicodeDecodeError�error)�key�kmapZdmi_key_path�fpZkey_data�e�r"�//usr/lib/python3/dist-packages/cloudinit/dmi.py�_read_dmi_syspath+s,
		 r$cCs�tj|�}|dks*|jdkr.dStjd|j�yQdd|jg}tj|�\}}|j�}tjd||j�|SWn?tjk
r�}ztjd||�dSWYdd}~XnXdS)z/
    Reads dmi data from FreeBSD's kenv(1)
    Nzquerying dmi data %sZkenvz-qzkenv returned '%s' for '%s'zfailed kenv cmd: %s
%s)r
rrrrrr�ProcessExecutionError)rr�cmd�result�_errr!r"r"r#�
_read_kenvMsr)cCs�yg|d|g}tj|�\}}|j�}tjd||�|jdd�dkrbdS|SWn?tjk
r�}ztjd||�dSWYdd}~XnXdS)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)rrrr�replacer%)r�dmidecode_pathr&r'r(r!r"r"r#�_call_dmidecodedsr.cCs�t�r
dSt�r t|�St|�}|dk	r<|Sdd�}tj�d}||�pm|d
ks�tjd|�dStj	d�}|r�t
||�Stjd	t�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.
    NcSs0|dkp/|ddko/|dd�dkS)NZx86_64r�i�Z86r")Zarchr"r"r#�is_x86�szread_dmi_data.<locals>.is_x86��aarch64�amd64zdmidata is not supported on %sZ	dmidecodez0did not find either path %s or dmidecode command)r3zamd64)
rrr)r$r�unamerrrZwhichr.Zwarningr)rZ
syspath_valuer1Z
uname_archr-r"r"r#�
read_dmi_datavs$		

	r6)NN)Z	cloudinitrZloggingrZcloudinit.utilrr�collectionsrrZ	getLogger�__name__rrZkdmi�__new__Z
defaults__r
r$r)r.r6r"r"r"r#�<module>s:"

Zerion Mini Shell 1.0