lmƣddlmZddlmZddlmZmZddlmZddl m Z m Z ddl m Z ddlmZddl mZd Zd ZGd d eZd S))getuser)uid_to_username) HistoryShow FIELD_LIMIT) ChartMain)dateutilsizeutil)X_LEGEND_POINTS)lveinfolib_gov)funcc|pddzdzS)Nri)vs /builddir/build/BUILDROOT/lve-stats-4.3.2-1.el9.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/lib/chart/lvechartmain.py_4k_page_to_bytesrs Fa<$ )FromaCPUlVMemaPMemlPMemNprocFPMemFVMemFaIOlIOlIOPSIOPSfIOflCPUCPUfaVMemaEPlEPaNproclNprocEPfaIOPSmIOPSceZdZfdZdZdZedZ d dZdZ dZ ed Z d d Z ed Z d ZxZS)LveChartctdd|t|dd|_d|_t j|_d|_ dS)Nlvechartz7Creates a chart representing usage pattern for LVE/useraggregation_period<iF) super__init__intgetMINIMAL_TIME_STEP BYTES_IN_MBr get_governor_mode governor_mode user_ignore)selfconfig __class__s rr2zLveChart.__init__sp   E    "%VZZ0Db%I%I!J!J&!355 rctdk}||}|dddt|ddd d |S) Nroot)requiredz--idz2LVE id -- will display record only for that LVE iduser_id)helpdesttypez--userzBUse username instead of LVE id, and show only record for that user user_name)rArBdefault)radd_mutually_exclusive_group add_argumentr3)r:parseris_admin id_user_groups rcustomize_parserzLveChart.customize_parser(s99&;;X;NN ""6(\(1(+ # - - - ""8(l(3+/ # 1 1 1 rc4|dkr|r|dt||z |d| |dt||z |jz|d|dS#ttf$rYdSwxYw|d||z |d||z |jzdS|dd|dddS)a :param dictionary: dict to wich we append dbgov data :param governor_mode_is_all: :param num: number of dbgov data points near this LVEStatsHistory time :param dbcpu_sum: sum value of dbgov cpu near this LVEStatsHistory time :param dbio_sum: sum value of dbgov io near this LVEStatsHistory time :param _lve_time_index: index of lve point :return: rdbcpuacpudbioaioN)appendminr6KeyError IndexError)r: dictionarygovernor_mode_is_allnum dbcpu_sumdbio_sum_lve_time_indexs rappend_dbgov_data_to_dictz"LveChart.append_dbgov_data_to_dict6sH 77# M7#**3y3 6@RSb@c+d+deeev&--HsNT-==z%?PQ`?abbddddd *-DD7#**9s?;;;6"))(S.4;K*KLLLLL w  & &q ) ) ) v  % %a ( ( ( ( (sABBBc >fd}g}d}t|||D]}rF||dz z ||cxkr ||dz zkr$nn!|||dz }Jg} D]} | dkr| || tvr^rF| td|dz | o| d| d|| |S)Nc t|dS#t$rYdSwxYw)Nrr)r3indexrT)r^lvedata show_columnss r get_time_fromz6LveChart.make_lvedata_with_idle..get_time_fromUsO 75>,*<*z6LveChart.get_chart_data...s M M MCY M M Mrlower)rwcolryris @r z+LveChart.get_chart_data..sM,,,R`R[]`399;; M M M M;L M M M,,,rfrom)tscpulcpureadlreadwritelwritenone)rrrpr`cfgrg@)rrrrrrall)rrr4r get_governor_ignore_for_userr9r local_to_gm get_time_step load_data enumerate SHOW_COLUMNSr,convert_lvedata_to_dictr8r HistoryShowDBGovhistory_dbgov_showconvert_dbdata_to_dictpopr[len)r:enginefrom_tsto_tsserverr@show_allusernameutc_fromutc_to period_secrhby_key_by_key lve_timesr`dbdatadata_collecteddbtimes time_step2lve_time_indexlve_timerMrOtmp_dbtimes_list dbtime_indexdbtimeris @rget_chart_datazLveChart.get_chart_datars# HLLkBB      K|]}|VdSrr{)rwkeys r z-LveChart._add_faults_graph..s*GGCCIIKKGGGGGGrc3BK|]}t|VdSr)any)rwrrs rrz-LveChart._add_faults_graph..s0"S"S3~c':#;#;"S"S"S"S"S"Srz No FaultsFaultsr)legendx_valuesmin_yy_legend_convertermessage)updatetuplerkeysr add_graphr convert_powers_of_1000_for_graph)rendererrtimes lve_versionr legend_keysfaults_presentrs ` r_add_faults_graphzLveChart._add_faults_graphs($)'&% '' !   MM-   GG4 3F3FGGGGG U"S"S"S"S{"S"S"SSSTT%3=++ HE'H      rc ||}t|d}|s|ro|r|jr|r||ddd} |r|s| d=t |ddkrd| d<||d |z| |dd t d t|d } | s|rAddtfddtfd} |r| s| d=||d| d|tj t|d} | s|rAddtfddtfd} |r| s| d=||d| |dtj t|d}|s|rTddd}|r|s|d=t |ddkrd|d<||d|z||dtj d d!"|d#krLt|d$}|s|r3ddd%}|r|s|d&=||d'||dtj d d("t|d)}|s|r1ddd*}|r|s|d+=||d,||dtj t|d-}|s|r1ddd.}|r|s|d/=||d0||dtj | ||||| |tdS)1Nr)averager)limitr)rr!r!rMr)databaserz CPU Usage%)r"rr!)rrrunitrfaultslvmemrrrr)lVmemaVmemrzVirtual Memory Usage)rrrrlpmem)rrrzPhysical Memory Usage)rrrrlio)rrrrOzInput/Output Usagez/s)r rr)rrrrrrliops)rr)rz Io operations)rr)rlep)lEpaEprzEntry Processeslnproc)r'r&r' Processes)_get_title_suffixris_normalized_user_cpu_normalize_cpurrr3rr convert_bytes_for_graphrradd_common_x_legendr )r:rrrrris_user title_suffixis_lcpu_limited cpu_legendis_lvmem_limited vmem_legendis_lpmem_limited pmem_legendis_lio_limited io_legendis_liops_limited iops_legendis_lep_limited ep_legendis_lnproc_limited nproc_legends r add_graphszLveChart.add_graphss--n== nV455  @h @ 446 4? 4##N333"6@PQQJ ' 'v&>'*++a//&: 7#   ~{\/I&0(-QS25&>  @ @ @ ~g677  Tx T!5*;<#W.?@BBK ) 0 )(   ~/E&1U2:2R  T T T~g677  Tx T!5*;<#W.?@BBK ) 0 )(   ~/F&1E2:2R  T T T^E233  =X ='+--I % %e$>&)**Q..$8 &!   ~/Cl/R&/%q2:2R$(&;  = = = ??">'#:;;  G8 G-133 -$4-#G,"">?*5Q6>6_(,*E #GGG ^E233  ]X ]'+--I % %e$   ~/@&/%q2:2[  ] ] ] x 899  ] ]*.00L + 1 + *   ~{&2U!2:2[  ] ] ] x LLL$$UO<<<<'*++a//!!."9#">"F"RSSS!*v!*v  1&0N7 # # # 1 1rct|ddks|jdks|jrd}n,|jdkrd}n|jdkrd}n|jd krd }nd }|S) NrMrrrz. DB usage includedabusersz'. DB usage included, only if restrictedoffz,. DB usage is not limited, nor accounted forz*. DB usage is not accounted as part of LVE)rr8r9)r:rrs rrzLveChart._get_title_suffixOs ~g& ' '1 , ,0Bf0L0LPTP`0LLL  5 ( (0LL  9 , ,DLL  5 ( (ILLHLr)F)__name__ __module__ __qualname__r2rKr[ staticmethodrnrrrrrrr __classcell__)r<s@rr,r,s  ! ! ! ! !   )))8!!\!J!& G-G-G-G-R!!!222 \*X=X=X=X=t11\1,       rr,N)clcommon.cpapi.pluginlibrlvestats.lib.uidconverterrlvestats.lib.lveinfolibrrlvestats.lib.chartrlvestats.lib.commonsrr lvestats.lib.chart.utilr lvestats.libr r rrr,rrrrs-,,,,,555555<<<<<<<<((((((33333333333333''''''%%%%%%* @@@@@y@@@@@r