3 gD@sJdZddlmZmZmZmZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZyeWnek reZYnXyddlZdZWnek rd ZYnXyddlZddlZdZWnek rd ZYnXddlZejd dd Zeed seje_ejZddlZe jd dgddl Z WdQRXddl m!Z!yddl"m#Z#m$Z$dZ%Wn^ek ryddl&m#Z#m$Z$dZ%Wn.ek rddl'm(Z(m)Z)m*Z*dZ%YnXYnXy ddl+Z+Wnek rdZ+YnXej,j-dyddl.m/Z0dZ1Wnek r*d Z1YnXda2da3ddZ4e4Z5e5rfe j6e!j7Z8e8j9de5ddZ:ddZ;ddZd"d#Z?d$d%Z@d&d'ZAd(d)ZBd*d+ZCd,d-ZDd.d/ZEd0d1ZFd2d3ZGd4d5ZHd6d7ZId8d9ZJd:d;ZKdkrFxszcpu_count..)r+listdirOSErrorrecompiler0)Zcpu_dirr)r:r cpu_counts   r@cCsytrtjdSWn YnXd}tjdtjry^tjdj}d}x6|D].}|jdr`qPt |j dd}||krP|}qPW|dkrd|SWn YnXtjd tj r$ydt d d j}t }x4|D],}d |krt |j d dj}|j|qWt|dkrt|SWn YnXtjd tjryFtjdj}d}x |D]}d|krN|d7}qNW|dkrx|SWn YnXdS)Nzcpu.cpu_socket(s)rz/usr/bin/lscpuz/usr/bin/lscpu -pr#,z /proc/cpuinfor(z physical id:z/usr/sbin/dmidecodez /usr/sbin/dmidecode -t processorzProcessor InformationrE)subscription_manager_availableSubManHardwareZ getCpuInfor+r,X_OKpopenr/ startswithintr1r-r.setr2addr0)number_socketslinesZmax_socket_indexlineZ socket_indexZ socket_idscountrrr__get_number_socketssX        rRc Csxdd}dd}tjdtjs"iStr4tjtjdtddj}tjdj }t }d d d }|d d kr~|dFddks|dkrz||}|dkrd|d<nd|d<||d<||d|d<||d|d<||d|d<||d|d<||d|d<||d|d<||d|d<||d |d!<||d"}|d#kr:d$}yt t t |d%|d&<Wntk rtdG|d&<YnXn||dHkrp||}d'|d<||d)|d<||d*|d<||d+|d<||d,|d<d-||d.||d/f|d0<||d1|d<d#|d<||d|d<||d2|d!<||d3}|j}y t t t |d d4|d&<Wntk rjdI|d&<YnXn|dJkr.||}||d<||d<||d6|d<||d7|d<||d8|d<||d9|d<||d|d<|d"}yt t t |d%|d&<Wntk rdK|d&<YnX||d:|d!<n|dLkr||}||d<||d<||d*|d<||d9|d<||d|d<||d<|d<||d=ddM}yt t t |d%|d&<Wntk rdN|d&<YnXn|dOkri}xH|jdAD]:} | jdB} t| dkrq| d%j|| d j<qW||d<||d|d<||d<||d<||dC|d<d#|d<d#|d<d#|d<d#|d<||d:|d!<d |d&<nX||d<||d<||d<||d<d#|d<d#|d<d#|d<d#|d<d#|d<d#|d!<d |d&<|ds d%|d<n@yt |d|d<Wnd%|d<YnX|dd krJd%|d<tj} | jjdDrtt} | rt| |dE<|S)PNcSs|j}||krdS||S)Nr#)lower)aentryerrr get_entryszread_cpuinfo..get_entrycSsd}i}x|jdD]|}t|s"q|d}|dkr4PxZ|jdD]L}t|sNq@|jd}t|dkrfq@|dj|dj}}|||j<q@WqW|S)Nrz r rDrC)r1r0r2rS)cpulistrQtmpdictcpuZcpu_attrr5namevaluerrrget_cpulist_as_dicts"  z)read_cpuinfo..get_cpulist_as_dictz /proc/cpuinfoCr(ZCPUZ Processor)r)Zdescrr9rC86x86_64platformZi386rQZ vendor_idtypez model nameZmodelz cpu familyZ model_numberZ model_verZsteppingZ model_revz cache sizecacheZbogomipsflagsotherzcpu mhzr#z-1rZspeedalphaalphaev6z cpus detectedr[z cpu modelz cpu variationz%s/%sz system typezsystem variationZ model_versionz cpu revisionzplatform stringzcycle frequency [Hz]i@Bia64vendorfamilyZarchrevZrevisionZfeaturesppc64machineZclocks390s390xrXz: zbogomips per cpuZ cpu_socketsZ socket_countrE)rhrirE)rjrE)rmrE)rprq)r+r,r-locale setlocale LC_NUMERICr.readunamerSr@rKroundfloat ValueErrorr1r0r2rZ RhnServerZ capabilitiesZ hasCapabilityrR) rWr^rYrxrQZhwdictrZZ mhz_speedZhz_speedr[r5srNrrr read_cpuinfos &              r}cCs@tj}|d}|dddkr&tS|dddkriszread_network..rr`z 127.0.0.1cSs|dtjkS)Nr)rr)rrrrrrsz::1r#)rrrrrfilter)ZnetdictZ list_of_addrsZ ipv4_addrsZ ipv6_addrsrrr read_network[s4      rc4Csi}d|d<t r(t r(tjjd|StrFtttjtj }nt j }x6|D],}y,trntj |}nt j |t jdd}Wnd}YnXytjd|}Wnd}YnX|rtjj|}t||}y@trtj|}n,td|d }|jjd d j}|jWn |d kr0d }nd}YnXy.trNtj|}nt j |t jdd}Wnd}YnXy.trtj|} nt j |t jdd} Wnd} YnXy.trtj|} nt j |t jdd} Wnd} YnXg} tr`tj|} xL| D]D} x<| jD]0}|j }|dkr:d}| j!||j"|j#dq"WqWnyxt j |t j$D]} | djdd}t%j&|}|j'rd}n(|j(rd}n|j)rd}n |j*rd}| d}d}xd|jdD]V}|sPnF|j+dkr|d7}n.|d t,t-|jdddddj.d7}qW| j!|||dqtWWnt/k rlYnX||| | || d||<qVW|S)NZ NETINTERFACESr)zWWarning: information about network interfaces could not be retrieved on this platform. raddrr#z/sys/class/net/%s/masterz/sys/class/net/%s/device/ueventr(r*rloZloopbackZUnknownnetmask broadcastglobalZuniverse)scoperr%linkhostZsiterDZffffrrrC1)rrrrmoduleZipv6)0ethtool_presentnetifaces_presentsysstderrwritelistrLethtoolr Zget_active_devices netifaces interfacesZ get_hwaddrZ ifaddressesZAF_LINKr+readlinkr$basenamerZ get_moduler.readliner1r2rZ get_ipaddrrZ get_netmaskZ get_broadcastZget_interfaces_infoZget_ipv6_addressesrappendZaddressrr ipaddressZ IPv6AddressZ is_globalZ is_link_localZ is_loopbackZ is_site_localrSbinrKrindexKeyError)ZintDictrZ interfacerrZmaster_interfacerZ driver_filerrrZip6_listZdev_infor4Zip6rZip6_addrZ scope_infoZ ip6_netmaskZ netmask_bitsZ two_octetsrrrread_network_interfaces~s                      4rc CsBi}d|d<tjdj}|ddko6|dddk rH|dk rH|St}|rZ||d <td }|rn||d <td }|r|d |}||d<td|d<td}|r||d<td}|r||d<td}|r||d<td}td}td} td} dd|d|d| d| f|d<x*t|jD]} || dkr || =q W|S)NZDMIr)r`rr9rCrarbrkz!/dmidecode/SystemInfo/ProductNameproductz/dmidecode/SystemInfo/Versionrsystemz%/dmidecode/BaseBoardInfo/ManufacturerZboardz/dmidecode/BIOSinfo/VendorZ bios_vendorz/dmidecode/BIOSinfo/VersionZ bios_versionz/dmidecode/BIOSinfo/ReleaseDateZ bios_releasez#/dmidecode/ChassisInfo/SerialNumberz/dmidecode/ChassisInfo/AssetTagz%/dmidecode/BaseBoardInfo/SerialNumberz"/dmidecode/SystemInfo/SerialNumberz#(%s: %s) (%s: %s) (%s: %s) (%s: %s)ZchassisZassetrr)r+rxrSr&r%rkeys) ZdmidictrxrkrversionrreleaseZchassis_serialZ chassis_tagZ board_serialZ system_serialkrrrread_dmisJ(   rc Csytrt}nt}|j}Wn6tk rTtj}dtjd}|j |iSXi}x*|D]"}|j dr`t |||t |<q`W|j t |S)Nz0Error reading system and smbios information: %s rr) using_gudevr rZGetAllProperties Exceptionr rrexc_inforrJr update get_smbios)ZpropsZcomputerr!msgZsystem_and_smbiosrrrrget_hal_system_and_smbios;s      rc CsDttriStttdtdtdtdtdtddSdS) a  Returns dictionary with values we are interested for. For historical reason it is in format, which use HAL. Currently in dictionary are keys: smbios.system.uuid, smbios.bios.vendor, smbios.system.serial, smbios.system.manufacturer. z"/dmidecode/SystemInfo/SerialNumberz"/dmidecode/SystemInfo/Manufacturerz!/dmidecode/SystemInfo/ProductNamez/dmidecode/SystemInfo/SKUnumberz/dmidecode/SystemInfo/Familyz/dmidecode/SystemInfo/Version)zsmbios.system.uuidzsmbios.bios.vendorzsmbios.system.serialzsmbios.system.manufacturerzsmbios.system.productzsmbios.system.skunumberzsmbios.system.familyzsmbios.system.versionN)r"rr'r&r%rrrrrPsrc.Cs"tr t}nzt\}}d}|s"|rr+rZup2date_clientrrrZrhn.i18nr r NameErrorrKrr ImportErrorrrrgettextZ translationtrr rZdbusZsuppress_errorsrr Zup2date_client.hardware_udevr r rZup2date_client.hardware_gudevZup2date_client.hardware_halrrrrtr$rZsubscription_manager.hwproberrGrFrrrr rrr!rr"r%r&r'r6r@rRr}rrr~rrrrrrr__name__Zhwrrrrrrrs                7B!K#:]