a c8h 3ã @sˆz(ddlZe dd¡ddlmZdZWn*eefyRddlZddlZdZYn0ddl Z ddl Z ddl m Z m Z dd „Zd d „Zd Zd ZdZdZdZdZdZdZd ZdZdZdZdZdZd ZdZdZ dZ!dZ"d Z#dZ$dZ%dZ&dZ'd Z(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2d Z3dZ4dZ5dZ6dZ7dZ8d Z9dZ:dZ;dZdZ?d Z@dZAdZBdZCdZDdZEdd„ZFd d!„ZGd"d#„ZHd$d%„ZId&d'„ZJdS)(éNÚGUdevz1.0)rTF)ÚPCIÚUSBc Csltrt ¡}n t dg¡}| d¡| d¡| d¡| d¡| d¡}g}|D]}| ¡}|| ¡t|ƒdt|ƒt |ƒdœ}|d d ur˜d |d <|d d ur¬d |d <|dkr|  d¡rÎ|  d¡|d<|  ¡|d<|  ¡dkrèqT|  d¡rôqT|  d¡dkrqT|  d¡dkr°qTn–|dkrr|  d¡}|rJ| d¡\|d<|d<|  d¡}|r°| d¡\|d<|d<n>|dkr°|  d¡r–|  d¡|d<|  d¡r°|  d¡|d<|  d¡r\|  d¡dkr\|  d¡sä|  d ¡r\|  d¡r|  d¡}t d!|¡} n|  d ¡}t d"|¡} | r\|  d#¡|d<|  d$¡|d<|  d%¡|d<|  d&¡|d<| |¡qT|S)'aE Returns list of dictionaries with keys for every device in system (values are provide as example): 'bus' : 'pci' 'driver' : 'pcieport-driver' 'pciType' : '1' 'detached' : '0' 'class' : 'OTHER' 'desc' : 'Intel Corporation|5000 Series Chipset PCI Express x4 Port 2' ÚÚpciÚusbÚblockZccwÚscsiÚ0)ÚbusÚdriverZpciTypeZdetachedÚclassZdescr NÚOTHERr ÚunknownZID_BUSr ÚdeviceÚ partitionZDM_NAMEZMAJORÚ1Ú7ÚPCI_IDú:Zprop1Zprop2Z PCI_SUBSYS_IDZprop3Zprop4Ú ID_VENDOR_IDÚ ID_MODEL_IDZID_PATHZDEVPATHz.*scsi-(\d+):(\d+):(\d+):(\d+)z!.*/(\d+):(\d+):(\d+):(\d+)/block/éééé)Úgi_gudevrZClientÚgudevZquery_by_subsystemÚ get_subsystemÚ get_driverÚ_clasify_pci_typeÚ_clasify_classÚ_get_device_descÚ has_propertyÚ get_propertyZget_nameÚ get_devtypeÚsplitÚreÚsearchÚgroupÚappend) ZclientZdevicesÚresultrÚ subsystemZ result_itemÚ pci_classZ pci_subsysÚpathÚm©r0úA/usr/lib/python3.9/site-packages/up2date_client/hardware_gudev.pyÚ get_devicessp   2 ú                  r2cCs$t ¡}|d|d|ddœ}|S)z÷ Return dictionaries with keys (values are provided as example): 'system.formfactor': 'unknown' 'system.kernel.version': '2.6.18-128.1.6.el5xen' 'system.kernel.machine': 'i686' 'system.kernel.name': 'Linux' rrr)zsystem.kernel.namezsystem.kernel.versionzsystem.kernel.machine)ÚosÚuname)r4r+r0r0r1Úget_computer_infons ýr5rZ00Z01Z02Z03Z04Z80Ú2Ú3Ú4Ú6Z05Z06Z07Z08rÚ9ÚCcCs|dkr dSdSdS)z) return 1 if device is PCI, otherwise -1 rrz-1Nr0)r,r0r0r1r ¾sr cCs@t| d¡ƒ\}}| ¡}|tkr&dS|tkrF|tkr:dS|tkrFdS| d¡}|rt| ¡}d|vrhdSd|vrtdS|r\|tkr†dS|t kr¨|t kršd S|t kr¦d Sn´|t krâ|t kr¼d S|tkrÈd S|tkrÔd S|tkràdSnz|tkrú|tkrúdS|tkr|tkrdS|tkr:|tkr*dS|tkr\dSn"|tkr\|tksX|tkr\dS|dkr˜| d¡sŽ| d¡r’| d¡dkr’dSdSn|dkr¦dS|dkrü|jdkrüt|ƒ}|dksØ|dkrÜdS|dkrêd S|d!krødSdSt d"| ¡¡}|rd#S|dkr$d S|d$ks8|d%krGsr>cCs@ztd| ¡dƒ}Wnty*YdS0| ¡}| ¡|S)zQ Return SCSI type of device in raw format as presented in /sys/...devpath../type z%s/typeÚréÿÿÿÿ)ÚopenrWÚIOErrorÚreadlineÚclose)rÚfr+r0r0r1rVSs rV)KZgiZrequire_versionZ gi.repositoryrrÚ ImportErrorÚ ValueErrorrZglibr3r'Zhwdatarrr2r5rHrJrIrLZPCI_CLASS_STORAGE_IPIrKZPCI_CLASS_STORAGE_OTHERr?ZPCI_CLASS_NETWORK_ETHERNETZPCI_CLASS_NETWORK_TOKEN_RINGZPCI_CLASS_NETWORK_FDDIZPCI_CLASS_NETWORK_ATMZPCI_CLASS_NETWORK_OTHERrDZPCI_CLASS_DISPLAY_VGAZPCI_CLASS_DISPLAY_XGAZPCI_CLASS_DISPLAY_3DZPCI_CLASS_DISPLAY_OTHERrPrQrRZPCI_CLASS_MULTIMEDIA_PHONEZPCI_CLASS_MULTIMEDIA_OTHERrSZPCI_CLASS_BRIDGE_HOSTZPCI_CLASS_BRIDGE_ISAZPCI_CLASS_BRIDGE_EISAZPCI_CLASS_BRIDGE_MCZPCI_CLASS_BRIDGE_PCIrTZPCI_CLASS_BRIDGE_NUBUSrUZPCI_CLASS_BRIDGE_RACEWAYZPCI_CLASS_BRIDGE_OTHERrMZPCI_CLASS_COMMUNICATION_SERIALZ PCI_CLASS_COMMUNICATION_PARALLELZ#PCI_CLASS_COMMUNICATION_MULTISERIALrNZPCI_CLASS_COMMUNICATION_OTHERr@rAZPCI_CLASS_INPUT_PENrBrOZPCI_CLASS_INPUT_GAMEPORTZPCI_CLASS_INPUT_OTHERrErGZPCI_CLASS_SERIAL_ACCESSZPCI_CLASS_SERIAL_SSArFZPCI_CLASS_SERIAL_FIBERZPCI_CLASS_SERIAL_SMBUSr r!r"r>rVr0r0r0r1Ús   P`"