V5*  ddlZddlZddlZddlZddlmZmZddlZddlZddl m Z ddl m Z ddl mZddlmZddlmZddlmZmZdd lmZmZdd lmZdd lmZmZmZmZdd lm Z dd l!m"Z"m#Z#m$Z$eidej%ej%Z&dZ'dZ(dZ)dZ*dZ+ddZ,dZ-dZ.ej/j0j1j2dZ3e4dkr= e3edS#e$rZ5e56YdZ5[5dSdZ5[5wwxYwdS)N)OperationalErrorProgrammingError) uidconverter)dateutil)get_ascii_table) setup_logging) ConfigError) read_configis_normalized_user_cpu)make_db_engineMakeDbException)prepare_data_json)OutputFormatterHistoryShowUnion servers_infoget_supported_columns)HistoryShowDBGov)lveinfo_parser dbgov_parserDEF_BLANK_VALUElveinfo) caller_name file_level console_levelc fd|DS)z Convert rows and its headers name to list dictionaries :param list|tuple|generator rows: :param list|tuple fields: :return list: cJg|]}tt| S)dictzip).0row_fieldss /builddir/build/BUILDROOT/lve-stats-4.3.2-1.el9.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/lvestats/lib/info/lveinfomain.py z$_convert_to_dict..*s+ 5 5 5DVT"" # # 5 5 5r)rowsr"s `r#_convert_to_dictr'#s 6 5 5 5 5 5 55r%ctj|}||||dS)z Save rows and its headers to stream :param list|tuple|generator rows: :param list|tuple fields: first csv file line :param file stream: stream to write data :return: N)csvwriterwriterow writerows)r&r"stream csv_writers r#save_csvr/-sAF##Jr%cB|jdko|js|jo|jS)z Normalization is done only if namespace.style == 'user', user id is specified, and either csv or json output selected :param namespace: command line options/settings :return: True if normalizagin of CPU should be done user)styler)jsonid) namespaces r#is_cpu_output_normalizabler6:s& ?f $ [)-*I9> [y|[r%cd|vr|d}n|Sd|vr|d}nd}d|vr|d}nd}g}|D]}t|}||t||}d||<|dkrt|||z dz||<|dkrt|||z dz||<|S)z Normalize CPU data, making limit always be 100%. This is used to show end user usage relative to their limits :param list rows: rows with data :param list|tuple fields: columns name :return list: normalized rows lCPUaCPUmCPUY@d)indexlistappendfloat) r&r" lcpu_index acpuindex mcpuindexnew_rows_prow_rowlcpus r# normalize_cpurIEs\\&))   LL((   LL((  HBBE{{T*%&&Z ??#DO44t;cADO ??#DO44t;cADO Or%c|Q t|}n?#t$r2}tt |Yd}~dSd}~wwxYw|t jdd}nt|}d|vrt|||\}}}nqtttj ||}| |}|jrtd}t|}nt!|||\}}|||js|jr|gdd|jr+t+|||j dS|jr"t/t1||jS|gd d |gd d |gddt5||jS)N)cfg--dbgov)nameverconfigdbengine)Serverz LVE version)aIOmIOlIOc(t|dz dS)Ng@)roundx_s r#zmain_..sRWXZ]bXbdeRfRfr%r"order)r-) aVMemmVMemlVMemaPMemmPMemlPMemrSrTrUbytes)aEPmEPlEPEPfVMemFCPUfaNprocmNproclNprocPMemFNprocFIOfaIOPSmIOPSlIOPSIOPSfpowers_of_1000)uCPUuEPuVMemuPMemuIOuNprocuIOPS percentage)r")r r logerrorstrsysargvr? dbgov_mainrNAMElvestats __version__ parse_argsrr lvestats_mainset_rowsr)r3 add_orderr/ get_fieldsrr'r"r) rPrQargv_e_argsr5output_formattedr&parsers r#main_rhs` %&111HH    IIc!ff    FFFFF  } U E,6vuh,O,O) #TTTx/CF]efff%%e,,  ! P./HII ))DD%28Y%O%O " dd###}h h""*?*?*?GfGf"ggg} Q!#3#>#>#@#@WWWWWW  Q !12BDTD[!\!\]]] ""*u*u*u)0 # 2 2 2""RRRYi # k k k ""#^#^#^`lmmm/8H8OPPPPs A'A  Actjddgdfddgdfg}|gddtjt d }tjj}tj d rtid tj }nd}t||j|jjjjjd z jjj|pt0}|jdkr|}n|}jsjr"jr|dgfdn#jr|dgfdt?j } t?} tC| "tC| } | r|| fdtGr$tIrtK||j}||fS)NFromTodatetimestrftime)orders)r9r;r8rSrTrUc:tt|SN)intrXrYs r#r[zlvestats_main..sE"IIr%r\from LVEINFODEBUGr)rrr<)rQ period_from period_touid show_columns server_id time_unitlimitby_usageby_usage_percentageby_fault thresholdorder_byr~r:IDc jpjSr)r1 reseller_name)xr5s r#r[zlvestats_main..sinG 0Gr%cftj|djp|S)Nr)ruid_to_username get_defaultr)rrQr5rs r#r[zlvestats_main..s:l:6%%k22#X//423r%) lve_versionc.jtnjSr) blank_valuer)_r5s r#r[zlvestats_main..sy/D/LOOR[Rgr%)&rrrr local_to_gmgetattrtoosenvirongetrloggingDEBUGrr4rrrrrr}rrrr~set_normalised_outputproceed_dyn_time_unitproceedr1rdisplay_usernamerrset differencer r6rI) rQr5rrutc_fromutc_tolog_ history_showr&supported_columns_ all_columnsunsupported_columnss ``` r#rrs&$,~z.JKMMM&S&S&S%>%>@@@#GIv$>$>??H  !), / /F z~~n%%RYgmTTT# L%0022%%o#%047#%# KCL&&(((b  1133##%%  592 5* 5"" FGGGG I I I I  #5"" F444444 5 5 5 /6;MNNN'))Kk**55c:L6M6MNNi""&gggg # i i i>$>y$I$I>T<#<== T !!r%cp|dt||}||}t|jddgdfddgdfdgdfdgdfd gd fd d gd fg}t jt|d}t j|j}t||||j | |j |j |j||j|j|jdz  }|jdkr|} n|} ||| fS)NrM)rPrQFROMTOrc,tj|dS)Nz %m-%d %H:%Mrrdts r#r[zdbgov_main..s(@M)#)#r%TSc,tj|dS)Nz%m-%d %H:%M:%Srrs r#r[zdbgov_main..s 8$!&!&r%CPUc|dkrdn|SNgMbP?rrrs r#r[zdbgov_main..sQYYAr%READWRITEc|dkrdn|Srrrs r#r[zdbgov_main..sq5yy!!ar%)r"rrr<) rQrrrrrrrrKrrrr:)removerrrformatrrrrrr4rrrrrrr}history_dbgov_show_dynamichistory_dbgov_show) rPrrQrr5rrrrr&s r#rrs LL ( ; ; ;F!!%((I&d^Z (d^## $VZ V&& 'W55 6g  ? ? @     #GIv$>$>??H  !), / /F#x6 L'7'B'B'D'D% 0Bo6Y5H#9MPT9T Lb  6688..00 & ,,r%c t|g|Ri|}|rt|dSdS#ttf$r2}tt |Yd}~dSd}~wwxYwr)rprintrrr~rr)rPargskwargsstr_exs r#mainrsV-d---f--   $KKKKK   . / #b''s'A*'A%%A*__main__)NN)7r)rrrsqlalchemy.excrrrlvestats.lib.commons.decorators lvestats.librlvestats.lib.commonsrlvestats.lib.commons.funcrlvestats.lib.commons.logsetuprlvestats.lib.configr r r lvestats.lib.dbenginer r lvestats.lib.jsonhandlerrlvestats.lib.lveinfolibrrrrlvestats.lib.lveinfolib_govr$lvestats.lib.parsers.lveinfoargparserrrERRORr~rr'r/r6rIrrrlibcommons decorators no_sigpiper__name__ce log_and_exitrr%r#rs  ========&&&&%%%%%%))))))555555777777++++++CCCCCCCCAAAAAAAA666666((((((((((((888888^^^^^^^^^^mBI'-W^Wdeee666   \\\   F-Q-Q-Q-Q`7"7"7"t---D  +,+ z [[]]  sCD"C<<D