dh=lddlmZddlmZmZddlmZddlmZddl m Z dZ dZ dZ Gd d eZGd d eZGd deZdS))clpwd) LIMIT_LVP_IDProcLve)LVEStat)LveStatsPlugin)serialize_lve_idi@Biʚ;iseletskc&eZdZdZdZddZdZdS) LVECollectorzl Collects data about LVE and LVP usage; Uses /proc/lve/list and /proc/lve/resellers/lvpXXX/list ctjd|_t |_dS)Ni)rClPwdget_sys_min_uidmin_uidr _proc_lveselfs /builddir/build/BUILDROOT/lve-stats-4.3.2-1.el9.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/plugins/generic/collectors.py__init__zLVECollector.__init__s,{}}44S99  rc i}|j|dD]c}t||j}|jdks|j|jkrt |j|j}|||<d|S)z Get information about LVE usage for given lvp_id (container id); :type lvp_id: int :rtype: dict[int, LVEStat] F)without_limitsr)rlinesrversionidrr reseller_id)rlvp_idstatslinestat serialized_ids r __parse_statszLVECollector.__parse_statss N(((FF , ,D4!7!7!9!9::Dw!||tw$,66 0$:J K K '+m$ rc|j|d<i}|jrE|jD]+}|||,|||td|di|d<||d<dS)N LVE_VERSION)rr old_stats) rrresellers_supported lvp_id_listupdate_LVECollector__parse_statspoprget)rlve_datarrs rexecutezLVECollector.execute,s"&."8"8":": > - - / / @.4466 @ @ T//v/>>???? T''))*** ,%%% ( Wb 9 9!rN)r)__name__ __module__ __qualname____doc__rr(r,rrr r sP ###     " " " " "rr c eZdZdZdZdZdS)LVEUsernamesCollectorc0d|_d|_d|_dS)N localhostiT) server_idperiodenabledrs rrzLVEUsernamesCollector.__init__9s$  rc|dddk|_|d|j|_dS)Ncollect_usernamesfalsetruer6)r*lowerr8r6)rconfigs r set_configz LVEUsernamesCollector.set_config>sDzz"5w??EEGG6Q K@@rcjrYtj}|}fdt |D|d<dSdS)Nc8g|]}|j|jjfSr1)pw_uidpw_namer6).0urs r z1LVEUsernamesCollector.execute..Fs& e e e1!(AIt~!F e e erusers)r8rr get_user_dictlistvalues)rr+dbrGs` rr,zLVEUsernamesCollector.executeBsp < fB$$&&E e e e ePTUZUaUaUcUcPdPd e e eHW    f frN)r-r.r/rr?r,r1rrr3r38sI AAAfffffrr3c4eZdZdZdZedZdZdS)CPUInfoCollectorzD Collects information on number of cores, and total # of Hz c&tdddS)zB This should make it trivial to mock up that file z /proc/cpuinforzutf-8)encoding)openrs rget_cpuinfo_filez!CPUInfoCollector.get_cpuinfo_fileNsOS7;;;;rcd}|}|rF|ddkr|dz }|}|Ft|z}||fS)a Method that counts number of cores and cpu herz for version > 4. In modern lve, cpu usage is always calculated as number of virtual ticks on a processor that has 1Ghz frequency on each core. :return: procs, total_hz r processor)readliner=findGIGAHERZ)fprocsrtotal_hzs rcountzCPUInfoCollector.countTsuzz|| zz||  --22 ::<rhs11111111//////666666    !"!"!"!"!">!"!"!"HfffffNfff"$$$$$~$$$$$r