4096 ##ˆl–ß=¿J µ2ÛR‚œP-\lú˜´oÍ ƒpN ÌÀÊv#a '¡Dgrã@s¦ddlZddlZddlZddlmZddlmZddlmZm Z ddl m Z m Z m Z mZe e¡ZdZedgd¢ƒZd ej_ed d dƒed d 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/œZeeed0œd1d2„Zeeed0œd3d4„Zeeed0œd5d6„Zeeeed7œd8d9„Zeeed0œ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.tagZ board_vendorzsmbios.planar.makerZ board_namezsmbios.planar.productZ board_serialzsmbios.planar.serialZ board_versionzsmbios.planar.versionZ bios_datezsmbios.bios.reldateZ bios_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-datez bios-vendorz bios-versionzchassis-asset-tagzchassis-manufacturerzchassis-serial-numberzchassis-versionzsystem-manufacturerzsystem-product-namezsystem-serial-numberz system-uuidzsystem-version)ÚkeyÚreturnc CsFt |¡}|dus|jdur dSd t|j¡}t d|¡tj  |¡sVt d|¡dSzft   d|›�¡�Bt |dƒ�}|  ¡}Wdƒn1s’0YWdƒn1s°0YWn tyÜt d|¡YdS0|dt|ƒd d krúd }z| d ¡ ¡WSt�y@}zt d |||¡WYd}~n d}~00dS)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+ú1/usr/lib/python3.9/site-packages/cloudinit/dmi.pyÚ_read_dmi_syspathPs:    ÿH  ür-c Csšt |¡}|dus|jdur dSt d|j¡z2dd|jg}t |¡j ¡}t d||j¡|WStjy”}zt d||¡WYd}~n d}~00dS)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 |¡}|dus|jdur dSt d|j¡z2dd|jg}t |¡j ¡}t d||j¡|WStjy”}zt d||¡WYd}~n d}~00dS)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|WStjyz}zt d||¡WYd}~dSd}~00dS)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ƒ