관리-도구
편집 파일: dmi.cpython-39.opt-1.pyc
a ����'�Dgr����������������������@���s���d�dl�Z�d�dlZd�dlZd�dlmZ�d�dlmZ�d�dlmZm Z �d�dl mZmZm Z mZ�e��e�ZdZedg�d��Zd ej_ed dd�edd d�eddd�eddd�eddd�eddd�eddd�eddd�eddd�eddd�edd d!�ed"d#d�ed$d%d�ed&d'd(�ed)d*d!�ed+d,d!�ed-d.d�d/�Zeee�d0�d1d2�Zeee�d0�d3d4�Zeee�d0�d5d6�Zeeee�d7�d8d9�Zeee�d0�d:d;�Zeed<�d=d>�ZdS�)?�����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.tagZboard_vendorzsmbios.planar.makerZ board_namezsmbios.planar.productZboard_serialzsmbios.planar.serialZ board_versionzsmbios.planar.versionZ bios_datezsmbios.bios.reldateZbios_vendorzsmbios.bios.vendorZbios_versionzsmbios.bios.versionZchassis_asset_tagzsmbios.chassis.tagZchassis_vendorzsmbios.chassis.makerz hw.vendorZchassis_serialzsmbios.chassis.serialzhw.uuidZchassis_versionzsmbios.chassis.versionZ sys_vendorzsmbios.system.makerZproduct_namezsmbios.system.productz hw.productZproduct_serialzsmbios.system.serialZproduct_uuidzsmbios.system.uuidZproduct_versionzsmbios.system.version)zbaseboard-asset-tagzbaseboard-manufacturerzbaseboard-product-namezbaseboard-serial-numberzbaseboard-versionzbios-release-datezbios-vendorzbios-versionzchassis-asset-tagzchassis-manufacturerzchassis-serial-numberzchassis-versionzsystem-manufacturerzsystem-product-namezsystem-serial-numberzsystem-uuidzsystem-version)�key�returnc�������������� ���C���sF��t��|��}|du�s|jdu�r dS�d�t|j�}t�d|��tj� |�sVt�d|��dS�zft �d|�����B�t|d��}|� ��}W�d����n1�s�0����Y��W�d����n1�s�0����Y��W�n �ty����t�d|��Y�dS�0�|dt|�d ��d �kr�d}z|�d����W�S��t�y@�}�zt�d |||��W�Y�d}~n d}~0�0�dS�)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���ZTimed�open�read�PermissionError�len�decode�strip�UnicodeDecodeError�error)r����kmapZdmi_key_path�fpZkey_data�e��r+����1/usr/lib/python3.9/site-packages/cloudinit/dmi.py�_read_dmi_syspathP���s:���� �H�r-���c�������������� ���C���s����t��|��}|du�s|jdu�r dS�t�d|j��z2dd|jg}t�|�j���}t�d||j��|W�S��tjy��}�zt�d||��W�Y�d}~n d}~0�0�dS�)z/ Reads dmi data from FreeBSD's kenv(1) Nr���Zkenvz-qzkenv returned '%s' for '%s'zfailed kenv cmd: %s %s) r���r���r���r���r���r����stdoutr%����ProcessExecutionError�r���r(����cmd�resultr*���r+���r+���r,���� _read_kenvx���s���� $r3���c�������������� ���C���s����t��|��}|du�s|jdu�r dS�t�d|j��z2dd|jg}t�|�j���}t�d||j��|W�S��tjy��}�zt�d||��W�Y�d}~n d}~0�0�dS�)z1 Reads dmi data from OpenBSD's sysctl(8) Nr���Zsysctlz-qnzsysctl returned '%s' for '%s'zfailed sysctl cmd: %s %s) r���r���r ���r���r���r���r.���r%���r/���r0���r+���r+���r,����_read_sysctl����s���� $r4���)r����dmidecode_pathr���c�������������� ���C���s����zD|d|�g}t���|�j���}t�d||���|�dd�dkr@W�dS�|W�S��t�jyz�}�zt�d||��W�Y�d}~dS�d}~0�0�dS�)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)r���r.���r%���r���r����replacer/���)r���r5���r1���r2���r*���r+���r+���r,����_call_dmidecode����s���� r9���c�����������������C���s����t���r dS�t��st��rt|��S�t��r,t|��S�t|��}|dur@|S�dd��}t���d�}||�st|dv�stt � d|��dS�t�d�}|r�t |�|�S�t � 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. Nc�����������������S���s$���|�dkp"|�d�dko"|�dd���dkS�)NZx86_64r����i����Z86r+���)Zarchr+���r+���r,����is_x86����s����zread_dmi_data.<locals>.is_x86����)Zaarch64Zamd64zdmidata is not supported on %sZ dmidecodez0did not find either path %s or dmidecode command)r���r���r���r3���r ���r4���r-���r����unamer���r���r����whichr9���r���)r���Z syspath_valuer<���Z uname_archr5���r+���r+���r,���� read_dmi_data����s&���� r@���)�srcr���c�����������������C���sx���d|�vr|�S�t����}t�d|��D�]R}||vr>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.r7���z'Replacing __dmi.%s__ in '%s' with '%s'.z__dmi.) r����keys�re�findallr���Zwarningr@���r���r8���)rA���Zvalid_dmi_keys�matchZ dmi_valuer+���r+���r,����sub_dmi_vars����s.������rG���)Zloggingr���rD����collectionsr����typingr���Z cloudinitr���r���Zcloudinit.utilr���r���r���r ���Z getLogger�__name__r���r���r ����__new__�__defaults__r����strr-���r3���r4���r9���r@���rG���r+���r+���r+���r,����<module>���s|��� ����� ����������1(0