§ Ù@ªj< ãó¦—ddlmZddlmZmZddlmZddlmZddl m Z dZ dZ dZ Gd „d e¦«ZGd „d e¦«ZGd „de¦«ZdS)é)Úclpwd)Ú LIMIT_LVP_IDÚProcLve)ÚLVEStat)ÚLveStatsPlugin)Úserialize_lve_idi@BiÊš;Úiseletskcó&—eZdZdZd„Zdd„Zd„ZdS)Ú LVECollectorzl Collects data about LVE and LVP usage; Uses /proc/lve/list and /proc/lve/resellers/lvpXXX/list có‚—tj¦« d¦«|_t ¦«|_dS)Niô)rÚClPwdÚget_sys_min_uidÚmin_uidrÚ _proc_lve©Úselfs úŽ/builddir/build/BUILDROOT/lve-stats-5.0.5-1.el8.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/plugins/generic/collectors.pyÚ__init__zLVECollector.__init__s,€Ý”{‘}”}×4Ò4°SÑ9Ô9ˆŒ Ý ™œˆŒˆˆórcó —i}|j |d¬¦«D]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)rÚlinesrÚversionÚidrrÚ reseller_id)rÚlvp_idÚstatsÚlineÚstatÚ serialized_ids rÚ __parse_statszLVECollector.__parse_statss‡€ð ˆØ”N×(Ò(¨ÀÐ(ÑFÔFð ,ð ,ˆDݘ4 ¤×!7Ò!7Ñ!9Ô!9Ñ:Ô:ˆDØŒw˜!Š|ˆ|˜tœw¨$¬,Ò6Ð6Ý 0°´¸$Ô:JÑ KÔ K� Ø'+��mÑ$øØˆ rcó¾—|j ¦«|d<i}|j ¦«rE|j ¦«D]+}| | |¬¦«¦«Œ,| | ¦«¦«| td¦«| di¦«|d<||d<dS)NÚ LVE_VERSION)rrÚ old_stats) rrÚresellers_supportedÚ lvp_id_listÚupdateÚ_LVECollector__parse_statsÚpoprÚget)rÚlve_datarrs rÚexecutezLVECollector.execute,sÕ€Ø"&¤.×"8Ò"8Ñ":Ô":ˆ�ÑØˆØ Œ>× -Ò -Ñ /Ô /ð @Øœ.×4Ò4Ñ6Ô6ð @ð @�Ø— ’ ˜T×/Ò/°vÐ/Ñ>Ô>Ñ?Ô?Ð?Ð?Ø � Š �T×'Ò'Ñ)Ô)Ñ*Ô*Ð*Ø � Š •, Ñ%Ô%Ð%Ø (§ ¢ ¨W°bÑ 9Ô 9ˆ�ÑØ!ˆ�ÑÐÐrN)r)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr(r,©rrr r sP€€€€€ððð #ð#ð#ð ð ð ð ð "ð "ð "ð "ð "rr có —eZdZd„Zd„Zd„ZdS)ÚLVEUsernamesCollectorcó0—d|_d|_d|_dS)NÚ localhostiT)Ú server_idÚperiodÚenabledrs rrzLVEUsernamesCollector.__init__9s€Ø$ˆŒØˆŒ ؈Œ ˆ ˆ rcó¨—| dd¦« ¦«dk|_| d|j¦«|_dS)NÚcollect_usernamesÚfalseÚtruer6)r*Úlowerr8r6)rÚconfigs rÚ set_configz LVEUsernamesCollector.set_config>sD€Ø—z’zÐ"5°wÑ?Ô?×EÒEÑGÔGÈ6ÒQˆŒ ØŸš K°´Ñ@Ô@ˆŒˆˆrcóȇ—‰jrYtj¦«}| ¦«}ˆfd„t | ¦«¦«D¦«|d<dSdS)Ncó8•—g|]}|j|j‰jf‘ŒSr1)Úpw_uidÚpw_namer6)Ú.0Úurs €rú z1LVEUsernamesCollector.execute..Fs&ø€Ð eÐ eÐ eÈ1 !¤(¨A¬I°t´~Ð!FÐ eÐ eÐ erÚusers)r8rr Ú get_user_dictÚlistÚvalues)rr+ÚdbrGs` rr,zLVEUsernamesCollector.executeBspø€Ø Œ<ð fÝ”‘”ˆBØ×$Ò$Ñ&Ô&ˆEØ eÐ eÐ eÐ eÕPTÐUZ×UaÒUaÑUcÔUcÑPdÔPdÐ eÑ eÔ eˆH�WÑ Ð Ð ð fð frN)r-r.r/rr?r,r1rrr3r38sI€€€€€ðððð AðAðAðfðfðfðfðfrr3có4—eZdZdZd„Zed„¦«Zd„ZdS)ÚCPUInfoCollectorzD Collects information on number of cores, and total # of Hz có&—tddd¬¦«S)zB This should make it trivial to mock up that file z /proc/cpuinfoÚrzutf-8)Úencoding)Úopenrs rÚget_cpuinfo_filez!CPUInfoCollector.get_cpuinfo_fileNs€õ�O S°7Ð;Ñ;Ô;Ð;rcóÚ—d}| ¦«}|rF| ¦« d¦«dkr|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=ÚfindÚGIGAHERZ)ÚfÚprocsrÚtotal_hzs rÚcountzCPUInfoCollector.countTsu€ðˆà�zŠz‰|Œ|ˆØð Ø�zŠz‰|Œ|× Ò  Ñ-Ô-°Ò2Ð2ؘ‘ �à—:’:‘<”<ˆDð ð õ ˜eÑ#ˆà�hˆÐrcó’—| ¦«}| |¦«\|d<|d<| ¦«dS)NrZÚtotalHz)rRr\Úclose)rr+rYs rr,zCPUInfoCollector.executejsB€Ø × !Ò !Ñ #Ô #ˆØ15·²¸A±´Ñ.ˆ�ј8 IÑ.Ø �Љ Œ ˆ ˆ ˆ rN)r-r.r/r0rRÚ staticmethodr\r,r1rrrMrMIsW€€€€€ððð<ð<ð<ð ððñ„\ðð*ððððrrMN)ÚclcommonrÚclcommon.clprocrrÚlvestatrÚlvestats.core.pluginrÚlvestats.lib.commons.funcrÚMEGAHERZrXÚ __author__r r3rMr1rrúrhsððÐÐÐÐÐØ1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÐÐÐÐÐØ/Ð/Ð/Ð/Ð/Ð/Ø6Ð6Ð6Ð6Ð6Ð6à €Ø €à € ð!"ð!"ð!"ð!"ð!"�>ñ!"ô!"ð!"ðHfðfðfðfðf˜Nñfôfðfð"$ð$ð$ð$ð$�~ñ$ô$ð$ð$ð$r