�
܍~c � �� � d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl m
Z
mZ ej e
� � ZdZ edd d
g� � Zdej _ i d ed
d� � �d edd� � �d edd� � �d edd� � �d edd� � �d edd� � �d edd � � �d! ed"d#� � �d$ ed%d&� � �d' ed(d)� � �d* ed+d,� � �d- ed.d/� � �d0 ed1d2� � �d3 ed4d5� � �d6 ed7d8� � �d9 ed:d;� � �d< ed=d>� � �Zd?ed@ee fdA�Zd?ed@ee fdB�Zd?edCed@ee fdD�Zd?ed@ee fdE�ZdS )F� N)�
namedtuple)�Optional)�log)�subp)�is_container�
is_FreeBSDz/sys/class/dmi/id�KernelNames�linux�freebsd)NNzbaseboard-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.vendorzbios-version�bios_versionzsmbios.bios.versionzchassis-asset-tag�chassis_asset_tagzsmbios.chassis.tagzchassis-manufacturer�chassis_vendorzsmbios.chassis.makerzchassis-serial-number�chassis_serialzsmbios.chassis.serialzchassis-version�chassis_versionzsmbios.chassis.versionzsystem-manufacturer�
sys_vendorzsmbios.system.makerzsystem-product-name�product_namezsmbios.system.productzsystem-serial-number�product_serialzsmbios.system.serialzsystem-uuid�product_uuidzsmbios.system.uuidzsystem-version�product_versionzsmbios.system.version�key�returnc � � t � | � � }|�|j �dS d� t |j � � }t
� d|� � t j � |� � st
� d|� � dS t |d� � 5 }|� � � }ddd� � n# 1 swxY w Y n,# t $ r t
� d|� � Y dS w xY w|dt |� � dz
z d z k rd
} |� d� � � � � S # t $ r'}t
� d|||� � Y d}~nd}~ww xY wdS )
z/
Reads dmi data from /sys/class/dmi/id
Nz{0}/{1}�querying dmi data %szdid not find %s�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�exists�open�read�PermissionError�len�decode�strip�UnicodeDecodeError�error)r �kmap�dmi_key_path�fp�key_data�es �//usr/lib/python3/dist-packages/cloudinit/dmi.py�_read_dmi_syspathr> |