%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib/python3.7/site-packages/lvestats/lib/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib/python3.7/site-packages/lvestats/lib/__pycache__/lveinfolib.cpython-37.pyc

B

��1bɟ�%@s�ddlmZddlmZddlmZddlmZmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZmZddlmZdd	lmZdd
lmZmZmZmZmZmZmZddlmZm Z m!Z!m"Z"m#Z#ddl$m%Z%dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0ddl1m2Z2m3Z3m4Z4m5Z5ddl6m7Z7m8Z8ddl9m:Z:m;Z;dZ<dd�Z=dd�Z>dd�Z?dd�Z@dd�ZAGdd�deB�ZCdd �ZDd!�E�d"�E�d#�E�d"�E�d$�E�d%�E�d&�E�d%�E�d'�E�d(�E�d)�E�d(�E�d*�E�d+�E�d,�E�d+�E�d-�E�d.�E�d/�E�d.�E�d0�E�d1�E�d2�E�d1�E�d3�E�d4�E�d5�E�d4�E�iZFd6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKd7d9d8d:d;d<d=d7d9d8d:d<d;d=dL�$ZGd!d$d*d'd-d0d3gZHd"d%d+d(d.d1d4gZIdMdNdOdPdQdRdSgZJdTdUdVdWdXdYdZgZKd#d&d,d)d/d2d5gZLd[d\d]d^�ZMx"eNeG�O��D]ZPePeMeP�Q�<�qWd_d`�ZRdadb�ZSdcdd�ZTdedfdg�fdhdidg�fdjdkdg�fgZUdldm�ZVGdndo�doeB�ZWGdpdq�dqeW�ZXGdrds�dseX�ZYGdtdu�dueW�ZZdxdvdw�Z[dS)y�)�absolute_import)�division)�
basestring)�map�zipN)�	strtobool)�Float�Integer)�exc)�text)�and_�or_�not_�select�label�desc�asc)�func�
ColumnElement�case�alias�cast)�LveStatsPluginTerminated)�gm_datetime_to_unixtimestamp�round_1m�str_to_timedelta�unixtimestamp_to_gm_datetime�gm_to_local�local_to_gm)�
convert_bytes�convert_powers_of_1000�mempages_to_bytes)�history�history_x60�servers�LVE_STATS_2_TABLENAME_PREFIX)�skip_user_by_maxuid�get_current_max_lve_id)�HIDE_MAX_UID_LVE_PARAMETER�read_config)�HistoryShow�HistoryShowUnion�OutputFormatter�get_lve_versionc	Csfttjg��tj|k�}|���<}|�|�}|jrT|��}|dkrFdSt	|d�SndSWdQRXdS)N��lve_version)
rr$r/�where�	server_idZbegin�executeZreturns_rowsZfetchone�int)�dbenginer1�sql_query_lve_versionZtransaction_Zcursor_�res�r7�H/opt/alt/python37/lib/python3.7/site-packages/lvestats/lib/lveinfolib.pyr-.s

r-cCsttjtjg�}|�|�S)N)rr$r1r/r2)r4r5r7r7r8�servers_info<sr9cCs
t�|�S)N)�str�lower)�key_r7r7r8�convert_key_to_labelAsr=cCsLt�}x@t|���D]0\}}t|jt�r8tt|�|�}n|}|||<qW|S)z�
    Add label (on SQL add ".. as ..") to aggregate_func_dict
    key of dict convert to lowercase and add as label
    :param dict func_dict:
    :return dict:
    )�dict�list�items�
issubclass�	__class__rrr=)Z	func_dictZfunc_dict_labeledr<Zsqlalchemy_funcZfunc_labeledr7r7r8�add_labes_to_columnEsrCcCst|ttf�r|gS|S)N)�
isinstancerr3)�argr7r7r8�convert_to_listVsrFc@s�eZdZd#dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Ze
d$dd��Ze
dd��Ze
dd��Ze
dd��Ze
dd ��Ze
d!d"��ZdS)%r,NcCs\|pt�|_t|�|_dd�|D�|_t�|_t�|_|rXx|D]\}}|�||�q@WdS)NcSsg|]}|���qSr7)r;)�.0�_r7r7r8�
<listcomp>asz,OutputFormatter.__init__.<locals>.<listcomp>)r?�rows�fields�_fields_lowered�_orders�set�_hidden_fields�	add_order)�selfrKrJ�ordersZfield�orderr7r7r8�__init__^s
zOutputFormatter.__init__cs$�jr�fdd��jD�S�jSdS)Ncsg|]}|�jkr|�qSr7)rO)rGZf_)rQr7r8rIksz.OutputFormatter.get_fields.<locals>.<listcomp>)rOrK)rQr7)rQr8�
get_fieldsiszOutputFormatter.get_fieldscCs
||_dS)z{
        Use this method if you used hide_fields
        number items in row must bee same as in fields after hide
        N)rJ)rQrJr7r7r8�set_rowsoszOutputFormatter.set_rowscCs|j�t|��|_dS)z>
        :param tuple|list h_fields:
        :return:
        N)rO�unionrN)rQZh_fieldsr7r7r8�hide_fieldsvszOutputFormatter.hide_fieldscCsrt|t�rTyt||�}Wn tk
r8td|��YnXt|d�sTtdt|���|j�dd�|D�|f�dS)zp
        :param list|tuples fields:
        :param order: field to use to order result
        :return:
        zNon such %s order�__call__z input object %s must be callablecSsh|]}|���qSr7)r;)rGrHr7r7r8�	<setcomp>�sz,OutputFormatter.add_order.<locals>.<setcomp>N)rDr:�getattr�AttributeError�
ValueError�hasattrrM�append)rQrKrSr7r7r8rP}s

zOutputFormatter.add_orderc
Cs�t|�}t�}xtt|j|�D]d\}}||jkr0qxD|jD]:\}}||kr8y||�}Wq8ttttfk
rpYq8Xq8W|�	|�qW|S)z8
        :param iterable row_:
        :return:
        )
r?rrLrOrM�	TypeErrorr]�KeyError�
IndexErrorr_)rQ�row_Zrow_outZfield_Zr_Zorder_fieldsrSr7r7r8�
_convert_line�s

zOutputFormatter._convert_lineccs x|jD]}|�|�VqWdS)N)rJrd)rQrcr7r7r8�__iter__�szOutputFormatter.__iter__cCs8t|t�r(tt|j|j|j|j���S|�|j|�S)N)rD�slicer?rrdrJ�start�stop)rQ�indexr7r7r8�__getitem__�s
zOutputFormatter.__getitem__cCs
t|j�S)N)�lenrJ)rQr7r7r8�__len__�szOutputFormatter.__len__cCst|�S)N)r?)rQr7r7r8�get_corrected_list�sz"OutputFormatter.get_corrected_list�%m-%d %H:%McCs
|�|�S)N)�strftime)�valueZformat_r7r7r8ro�szOutputFormatter.strftimecCs>|dkrdSyt|�Wntk
r,|SXt|d�dS)N�-�d�%)�floatr]r:)rpr7r7r8�
percentage�szOutputFormatter.percentagecCs|dkrdSt|�S)Nrq)r)rpr7r7r8�bytes�szOutputFormatter.bytescCs|dkrdSt|�S)Nrq)r )rpr7r7r8�powers_of_1000�szOutputFormatter.powers_of_1000cCs*yt�t|��jStk
r$|SXdS)N)�pwd�getpwuidr3�pw_namera)rpr7r7r8�username�szOutputFormatter.usernamecCstj�|�S)zE
        Convert unix timestamp to datetime (local timezone)
        )�datetimeZ
fromtimestamp)rpr7r7r8r|�szOutputFormatter.datetime)NN)rn)�__name__�
__module__�__qualname__rTrUrVrXrPrdrerjrlrm�staticmethodrorurvrwr{r|r7r7r7r8r,\s"

r,cCs�t�}t�}xn|D]f}t|�}|�|�}|dkrdt|t�r@|}n|j}|dt|d�7}t||�}|�|�|�|�qW|S)z�
    Enumerate if columns name or functions are duplicated
    Use for force add duplicate columns to select operator
    :param list|tuple columns:
    :return list|tuple: enumerated columns
    �rH)r?r:�countrDr�namerr_)�columns�outputZ
output_strZc_Zc_strZ
dubl_countZc_namer7r7r8�enumerate_duplicate_columns�s




r��aCPU�lCPU�mCPU�aVMem�lVMem�mVMem�aEP�lEP�mEP�aPMem�lPMem�mPMem�aNproc�lNproc�mNproc�aIO�lIO�mIO�aIOPS�lIOPS�mIOPS�idZcpuZmemZmepZmemphy�ioZnprocZiopsZ	cpu_limitZ	mep_limitZ	mem_limitZlmemphyZio_limitZlnprocZliops�	mem_fault�memphy_fault�	mep_fault�nproc_fault�	cpu_fault�io_fault�
iops_fault)$�IDr�r�r�r�r�r�r�r�r�r�r�r�r�r��VMemF�PMemF�EPf�NprocF�CPUf�IOf�IOPSf�uCPU�uEP�uVMem�uPMem�uIO�uNproc�uIOPSr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��From�To�anyF)ZFROMZTOZANYFcCs|dkrdSt|�S)N)�normalize_column_names)�namesr7r7r8�normalize_optional_column_namesCsr�cCs$g}x|D]}|�t|��q
W|S)N)r_�normalize_column_name)r��resultr�r7r7r8r�Is
r�cCs|rt|��SdS)N)�KEYS_NORMALIZATION_LOOKUP_TABLE�upper)r�r7r7r8r�Psr�Z10mcCs|tj|jddd�S)N�
)�minutes)r|�	timedelta�minute)�dtr7r7r8�<lambda>V�r�Z1hcCs"|jr|jdd�S|tjdd�S)Nr)r�r�)Zhours)r��replacer|r�)r�r7r7r8r�Wr�Z1dcCs|jddd�S)Nr)Zhourr�)r�)r�r7r7r8r�Xr�c
Cs�t|�t|tjdd��g}dg}t}xJtD]B\}}||d�}||dt|�kr,|}|�d|�|�|�q,W||d�|d<t�}xDt|�D]8\}	}|�||	d||	dt	t|��
��f�q�W|S)Nr�)r�Z1mr�)rr|r��time_unit_ordersr�insertr_r?�	enumerater3Z
total_seconds)
�period_from�	period_toZ
period_groupsZtime_unit_listZ_from_order_fun�	time_unitZ	order_funZ
from_to_pointZfrom_to_groupsrir7r7r8�dyn_time_unit_groups\s"r�c@s�eZdZd<dd�Zd	d
�Zd=dd�Zd
d�Zd>dd�Zdd�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd?d0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�ZdS)@r*N�	localhost��������?r�rFcCs�||_||_t|t�|_|dkr@tt||d�d�}|�dd�t|�|_	||_
||_t|�|_
|rpt|�|_n2|j
r�td�|j
kr�td�|_n|j
o�|j
d|_t|	�|_|
|_||_|
|_|p�t�d�|_|dk	r�|ntj|_t|jd	�|_t|ttf��r|nt|�|_t|ttf��r"|nt|�|_|�p8|� �|_!t"|j	t#t$t%t&d
d�gdd
dgdd�ggd�|_'t(t)��*t+d��|_,dS)a*
        Show different statistics from history table
        :param sqlalchemy.engine.base.Engine dbengine: database engine to use
        :param datetime.datetime|float|int period_from:  start time retrieve data
        :param datetime.datetime|float|int period_to:    end time retrieve data
        :param int|None|list|tuple uid:                  filter the output information to the user uid
        :param tuple|list show_columns:        display columns in the order specified. If not, show all supported
                valid column names: 'aCPU', 'lPMem', 'uIO', 'uEP', 'lEP', 'aVMem', 'PMemF', 'lVMem', 'NprocF', 'anyF',
                'aNproc', 'VMemF', 'ID', 'lCPU', 'aIOPS', 'aEP', 'aPMem', 'uPMem', 'lIO', 'lIOPS', 'uCPU',
                'lNproc', 'aIO', 'uIOPS', 'EPf', 'uVMem', 'uNproc'

        :param str server_id:                  filtering the output for "server id"
        :param int time_unit:                  grouping output over an interval of time (in seconds)
        :param str|None order_by:              sorting output by column name (supported by columns)
        :param str|tuple|list by_usage:        filtering are grouped data for the percentage of the use of resources
        :param float by_usage_percentage:      percent for the parameter setting 'by_usage'
        :param tuple|list|None by_fault:       filtering data are grouped for quantity faults (None if it is not filtered)
                valid names: 'aCPU', 'lPMem', 'uIO', 'uEP', 'lEP', 'aVMem', 'PMemF', 'lVMem', 'NprocF', 'anyF', 'aNproc',
                'VMemF', 'ID', 'lCPU', 'aIOPS', 'aEP', 'aPMem', 'uPMem', 'lIO', 'lIOPS', 'uCPU', 'lNproc', 'aIO', 'uIOPS',
                'EPf', 'uVMem', 'uNproc'
        :param threshold:                     number faults for filtering the data are grouped (used together with by_fault)
        :param int|None limit:                 limit on the number of output data (if 0 or None, then the limit is not set)
        :return generator:                     returns a list/generator of data with the order set out in the 'show_columns'
        N)r4r1)r/rr�r�r�ZSQLZalivecSs
t|d�S)N�)�round)�xr7r7r8r��r�z&HistoryShow.__init__.<locals>.<lambda>r�r�r�cSstt|�dd�S)NgY@�)r�rt)�itemr7r7r8r��r�)rKrR�true)-r4�uidrDr3�_is_multi_uids�get_supported_columnsr-r�r��show_columnsr1r�r��by_faultr��order_by�by_usage�by_usage_percentage�	threshold�limit�loggingZ	getLogger�logr"�	__table__�tabler�_table_alivertrr�r��get_time_count�
time_countr,�	FIELD_MAX�
FIELD_AVERAGE�FIELD_LIMIT�FIELD_USAGE�result_correctorrr)�getr(�hide_maxuid_lve)rQr4r�r�r�r�r1r�r�r�r�r�r�r�r�r�r�Z	show_idler7r7r8rTts>


zHistoryShow.__init__cCs�|jjddddddddd	g	d
d�d�|jjjd
kr�|jjddddddddddddddddgtd�|jjddd d!d"d#d$gtd�|jjddddddgtd�dS)%Nr�r�r�r�r�r�r�r�r�cSstt|��S)N)r3r�)r�r7r7r8r��r�z3HistoryShow.set_normalised_output.<locals>.<lambda>)rKrS�sqliter�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)r�rPr4�url�
drivernamertr3r!)rQr7r7r8�set_normalised_output�s$z!HistoryShow.set_normalised_outputcCs"|dkr|j}|jj�|j|j�S)zX
        Generate WHERE created BETWEEN xxxxxxxxx AND yyyyyyyy
        :return:
        N)r��c�created�betweenr�r�)rQr�r7r7r8�_where_time_period�szHistoryShow._where_time_periodcCs|jjj|jkS)zK
        Generate WHERE server_id = 'server_name'
        :return:
        )r�r�r1)rQr7r7r8�_where_server_id�szHistoryShow._where_server_id���cCs�|dkr|j}|dkr|j}|dkrd|jrXt|jjdkttt|jj��|jjt	�k��S|jjdkSt
|ttf�r�|j
jjdkr�t|jj�t|��jjddid�j�S|jj�t|��Sn|jj|kSdS)zGenerate WHERE id = 'user_uid'Nr�rr��
literal_bindsT)�compile_kwargs)r�r�r�rr�r�r
rr&r'rDr?�tupler4r�r�rZin_Z
expression�compile�string)rQr�r�r7r7r8�
_where_uid�szHistoryShow._where_uidcCs�ttj�|j|j�tjdktj|jk�}tt	d�g��
|�}t��}t|j
ddid���dd�}|j�|�|j�|�}|j�dt��|�|��ddS)	z
        SELECT count(*) FROM lve_stats2_history WHERE id = 0 AND created BETWEN xxxx AND yyyy server_id = 'localhost'
        rzcount(*)r�T)r��
� zquery time: %s)rr"r�r�r�r�r�r1rrr0�timer:r�r�r��debugr4r2�fetchall)rQr0�query�
time_start�q�datar7r7r8r��szHistoryShow.get_time_countcCstt�|�t|��t�t�S)z�
        Generate aggregate function for calculate average
        for example sum(lve_stats2_history.cpu) / 60
        :param item:
        :return:
        )rr�sum�_fun_time_countr)rQr�r7r7r8�_fun_avgszHistoryShow._fun_avgcCs"tt�|�dkt�|�fgdd�S)a
        Generate aggregate function for calculate limit
        if column_limit is zero its mean no limit
        for example CASE WHEN (min(lve_stats2_history.cpu_limit) > 0) THEN max(lve_stats2_history.cpu_limit) ELSE 0 END
        :param item:
        :return:
        r)�else_)rr�min�max)rQr�r7r7r8�
_fun_limitszHistoryShow._fun_limitcCs
t�|�S)z�
        Generate aggregate function for calculate fault
        for example sum(lve_stats2_history.cpu_fault)
        :param item:
        :return:
        )rr)rQr�r7r7r8�
_fun_faultszHistoryShow._fun_faultcCs<t|�|�dkdf|�|�dk|�|�|�|�fgdd�S)ac
        Generate aggregate function for calculate resource usage equivalent average/limit
        for example
        CASE WHEN ( CASE WHEN (min(lve_stats2_history.cpu_limit) > 0) THEN max(lve_stats2_history.cpu_limit) ELSE 0 END IS NULL) THEN NULL
                WHEN (CASE WHEN (min(lve_stats2_history.cpu_limit) > 0) THEN max(lve_stats2_history.cpu_limit) ELSE 0 END > 0)
                    THEN (sum(lve_stats2_history.cpu) / 1422) / CASE WHEN (min(lve_stats2_history.cpu_limit) > 0)
                    THEN max(lve_stats2_history.cpu_limit) ELSE 0 END END
        :param item:
        :return:
        Nr)r
)rr
r	)rQr��
item_limitr7r7r8�
_fun_usage$s"zHistoryShow._fun_usagecCs(tt�|�dkt�|�fgt�|�d�S)a�
        Generate aggregate function for calculate maximum resource usage; for backward capability with lve-stats 0.x
        for example:
            CASE
                WHEN
                    (sum(lve_stats2_history.cpu_fault) > 0)
                THEN
                    max(lve_stats2_history.cpu_limit)
                ELSE
                    max(lve_stats2_history.cpu) END
        :param item:
        :param item_limit:
        :param item_fault:
        :return:
        r)r
)rrrr)rQr�rZ
item_faultr7r7r8�_fun_max6szHistoryShow._fun_maxcCs|��rtd�S|jSdS)Nzcount(*))�_check_need_joinrr�)rQr7r7r8rHszHistoryShow._fun_time_countcCs�|jr|jS|��r|j}n|j}|jjjdkrVt|j	j
|j|jt�|j|jSt
�|j	j
|j|j�|j|jSdS)Nr�)r�r�rr�r�r4r�r�rr�r�r�r	r�floor)rQZ_tabler7r7r8�_fun_time_fromNs&zHistoryShow._fun_time_fromcCs|jr|jS|��|jSdS)N)r�r�rr�)rQr7r7r8�_fun_time_to\szHistoryShow._fun_time_tocCs.|jrtd|jjj�Stdtt|j���SdS)Nr�)r�rr�r�r�rr:r�)rQr7r7r8�_fun_user_idbszHistoryShow._fun_user_idc	Csv|dkrXt�|jjj|jjj|jjj|jjj|jjj|jjj	|jjj
�}�n|dkrl|��}�n|dkr~|��}n�|dkr�|�
�}n�t|}t|jj|�}|tkr�|�|�}n�|tkr�|�|�}n�|tkr�|�|�}n�|tk�rttt�|�}t|jj|�}|�||�}nX|tk�rrttt�|�}ttt�|�}t|jj|�}t|jj|�}|�|||�}|S)a
        Function for obtain aggregate function (or column name) by column name
        :param item: 'aCPU', 'aVMem', 'aPMem', 'aEP', 'aNproc',  'aIO', 'aIOPS', 'lCPU', 'lVMem', 'lPMem', 'lEP',
                     'lNproc',  'lIO', 'lIOPS', 'CPUf', 'VMemF', 'PMemF', 'EPf', 'NprocF',  'IOf', 'IOPSf', 'uCPU',
                     'uVMem', 'uPMem', 'uEP', 'uNproc',  'uIO', 'uIOPS', 'mCPU', 'mVMem', 'mPMem', 'mEP',  'mNproc',
                     'mIO', 'mIOPS', 'anyF', 'ID', 'From', 'To'
        :type item: str
        :return:
        r�r�r�r�)rrr�r�r�r�r�r�r�r�r�rrr�FIELD_TO_TABLE_COLUMNr[r�r	r�r
�FIELD_FAULTrr�rirr�r)	rQr��fun_�column_name�table_column�column_name_limit�table_column_limit�column_name_fault�table_column_faultr7r7r8�_aggregate_fun_casehs8
L



zHistoryShow._aggregate_fun_casecsVt�j�}t�j�}�jr,|��jjj�}n|�����}�j	r\��
�j	�}|�t|��n*�jrx|�t
�jjj��n|�����|�rt�}xf|D]^}|tkr�t�|�}�j��
t|�k}	n(t�|�}�j��
t|���
|�k}	|�|	�q�W|�t|��|�r.�fdd�|D�}
|�t|
���jdk�rR�jdk	�rR|��j�}|S)Ncsg|]}�j��|�k�qSr7)r�r )rGZ	funk_key_)rQr7r8rI�sz/HistoryShow._group_by_query.<locals>.<listcomp>r)rFr�r�r�Zgroup_byr�r�r�rr�r Zappend_order_byrrr?r�rir�r�r�r�r_Z
append_havingr
r�)rQZselect_queryZ
by_usage_listZ
by_fault_listrZorder_by_aggregate_funcZfilter_fun_listr�riZ
filter_funZby_fault_filterr7)rQr8�_group_by_query�s6




zHistoryShow._group_by_querycCsVt�}xJ|jD]@}|�|�}t|t�r2|�|�q|dkrDt||�}|�|�qW|S)ze
        Generate output columns for SELECT <_columns_query(self)> FROM ...
        :return:
        )r�r�)r?r�r rD�extendrr_)rQ�columns_agregate_func�
column_key�
column_funr7r7r8�_columns_query�s


zHistoryShow._columns_querycCsJddddddddd	d
ddd
dh}t|t|j�|jhBt|jp@t��B@�S)Nr�r�r�r�r�r�r�r�r�r�r�r�r�r�)�boolrNr�r�r�)rQr�r7r7r8�_check_need_time_count�sz"HistoryShow._check_need_time_countcCs|��o|jS)N)r(r�)rQr7r7r8r�szHistoryShow._check_need_joincCs�|dkr|��}|r6t|j|jd�|jd|jd��}nt|��|���}|jr\t||���}t|��|�}|r�|j�	|j
t|jjj|j
jjk|j|j
d���}|�|�}|S)z'
        :type need_join: bool
        N)r�r)r�r�)r�)r&rr�r�r�r1r�rr0Z	outerjoinr�r�r�r�Zselect_from)rQ�columns_�	need_join�where_queryrZ
_table_joinedr7r7r8�
_select_query�s
zHistoryShow._select_querycCs(|��}|j||��d�}|�|�}|S)N)r)r*)r&r,rr!)rQr)rr7r7r8�
main_query�s
zHistoryShow.main_querycCs�t|��|��|���}tt�|jjj	�t�
|jjj	�g��|�}t��}t
|jddid���dd�}|j�|�|j�|�}|j�dt��|�|��dS)z�
        SELECT min(created), max(created) FROM lve_stats2_history WHERE id = <ID> AND created BETWEN xxxx AND yyyy server_id = 'localhost'
        r�T)r�r�r�zquery time: %sr)rr�r�r�rrrr�r�r�rr0rr:r�r�r�rr4r2r)rQr+rrrrr7r7r8�_min_max_created�s*zHistoryShow._min_max_createdcCs�|��\}}|dkr|jStt|��}tt|��}t||�}t�}xZt|�D]N\}}}	t�|�}
tt	|��|
_
tt	|��d|
_|	|
_d|
_
|�|
���qLW|S)Nr�r)r.r�rrr�r?�reversed�copyrrr�r�r�r�r"�proceed)rQZmin_createdZmax_createdr�r�Ztime_unit_groupsrJZ_fromZ_toZ
_time_unitZ	self_copyr7r7r8�proceed_dyn_time_unit�s

z!HistoryShow.proceed_dyn_time_unitcCs�|jt�ks|jt�krt�S|jdk	rHt|jttf�sH|jdkrHt�S|��}t��}t|jddid��}|j�	|�
dd��|j��}y0|�
|�}|j�	dt��|�|��|j_Wn"tk
r�|��t��YnX|��|jSdS)Nrr�T)r�r�r�zquery time: %s)r�r�r?rDr-rr:r�r�rr�r4Zconnectr2rr�rJr�close)rQrrrZconnZcursorr7r7r8r1
s$$

zHistoryShow.proceedcs�fdd����D�S)Ncs"g|]}dd�t�j|�D��qS)cSsi|]\}}||�qSr7r7)rGr��valr7r7r8�
<dictcomp>"sz7HistoryShow.proceed_dict.<locals>.<listcomp>.<dictcomp>)rr�)rGZ	items_val)rQr7r8rI"sz,HistoryShow.proceed_dict.<locals>.<listcomp>)r1)rQr7)rQr8�proceed_dict!szHistoryShow.proceed_dict)NNr�NNNr�Nr�rNNNF)N)r�N)NF)r}r~rrTr�r�r�r�r�r	r
rrrrrrrr r!r&r(rr,r-r.r2r1r6r7r7r7r8r*rs8
>


	
	)%

r*c@s$eZdZdd�Zdd�Zdd�ZdS)�_HistoryShowX1cOs6tj|f|�|�d|jkr*dg|j|_t�|_dS)Nr�)r*rTr�r?�_labels)rQ�args�kwargsr7r7r8rT&s
z_HistoryShowX1.__init__c
Cs`|dkrH|jjj|jjj|jjj|jjj|jjj|jjj|jjjg}�n|dkrbt	d|jjj
�}n�|dkrr|j}n�|dkr�|j}n�t
|}t|jj|�}|tttkr�t	||�}n�|tkr�t
tt�|�}t	|t|jj|��}||g}np|tk�r\t
tt�|�}t
tt�|�}t	|t|jj|��}t	|t|jj|��}t	|d|�}	||||	g}|S)z!
        :type item: str
        r�r�r�r�r��_max)r�r�r�r�r�r�r�r�r�rr�r�r�rr[r�r�rr�rir�)
rQr�rrrrrrrZtable_column_maxr7r7r8r ,s2  

z"_HistoryShowX1._aggregate_fun_casecCst�}|j|jpt�}|jrpxPt|j�D]B}|tkrPt�|�}|�t|�q*t	�|�}|�
t||g�q*W|jr�|�|j�x�|D]�}|�
|�}t|t�r�xj|D]2}t|d�r�|j|jkr�|�|�|j�|j�q�Wq�t|d�r�|j|jkr�|�|�|j�|j�q�W|S)Nr�)r?r�r�r�rFr�rir_r�r�r"rr�r rDr^r�r8)rQr#r�r�rir$r%rr7r7r8r&Ls,







z_HistoryShowX1._columns_queryN)r}r~rrTr r&r7r7r7r8r7%s r7c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�_HistoryShowX60icOsDtj|f|�dtji|��|��\|_|_|�d�p<|��|_	dS)Nr�r�)
r7rTr#r��get_history_x60_from_tor�r�r�r�r�)rQr9r:r7r7r8rTnsz_HistoryShowX60.__init__cCs|j|jfdkrdSt�|�S)N)NNr)r�r�r7r�)rQr7r7r8r�usz_HistoryShowX60.get_time_countcCs�|j|j|jkrdS|jjj�|j|j|j�}tt�	|jjj�t�
|jjj�g��t||�
���}t��}|j�t|jddid���dd��|j�|���d}|j�dt��|�|\}}|d	k	r�||jd
|fS|Sd	S)zG
        calculate present in aggregate table from and to time
        )NNr�T)r�r�r�rzquery time: %sNr�)r�r��AGGREGATE_PERIODr�r�r�r�rrrrr0rr�rr�rr:r�r�r4r2r)rQZ
between_queryrrr�Z
create_minZ
create_maxr7r7r8r=zs"$z'_HistoryShowX60.get_history_x60_from_tocCsB|tkr2t|}t|jj|�}t|||jjj�St�||�SdS)z!
        :type item: str
        N)	r�rr[r�r�rrr7r )rQr�rrr7r7r8r �s
z#_HistoryShowX60._aggregate_fun_caseN)r}r~rr>rTr�r=r r7r7r7r8r<js
r<c@s2eZdZdZdd�Zdd�Zdd�Zdd	d
�ZdS)r+z=
    Class for retrieve statistics data using two tables
    cOsntj|f|�|�td|_|�t|jd��t||�|_t	||�|_
|jjdk	oV|j|_
|j
rj|��|_dS)NrW)r�)r*rTr%�_alias�updater>r�r<�x60r7�x1r�r��_need_union�_select_union_queryr�)rQr9r:r7r7r8rT�s
zHistoryShowUnion.__init__c	Cs�|jrz|tkrzt|}ttt�|�}ttt�|�}t|jj|�}t|jj|�}t|jj|d�}|�	|||�}|St
�||�SdS)z!
        :type item: str
        r;N)rCr�rr�rirr[r�r�rr*r )	rQr�rrrZcolumn_limitZcolumn_faultZ
column_maxrr7r7r8r �sz$HistoryShowUnion._aggregate_fun_casec	Cspt���^tjdtjd�|j���t|jj	j
j�|j
j|j
j���}|�|j
���}t||j�}WdQRX|S)z"
        union two tables
        �ignore)�categoryN)�warnings�catch_warnings�simplefilter�sa_excZ	SAWarningrBr,r0rr�r�r�r�rAr�r�Z	union_allrr?)rQZunion_queryr7r7r8rD�s
z$HistoryShowUnion._select_union_queryNcCs"|jrt|�Stj|||d�SdS)N)r)r*)rCrr*r,)rQr)r*r7r7r8r,�szHistoryShowUnion._select_query)NN)r}r~r�__doc__rTr rDr,r7r7r7r8r+�s
r+cCs(t�}|dkr`dddddddd	d
ddd
ddddddddddg}|dksN|dkr^|�dddg�n�|dkr�dddddddd
dd
ddddddddg}|dks�|dkr�|�ddd g�nr|dk�r$dd!ddddd"ddddd#d	d
dd
d$ddddd%ddddd&dddg}|dk�s|dk�r$|�ddd'dd g�|S)(z�
    preparation list columns depending of the lve version
    :type mode: Union[None, str]
    :type lve_version: Union[None, int]
    Zv1r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�Nr.r�r�r�Zv2r�r�r�r�r�r�r�r�r�r�)r?r")r/�moder�r7r7r8r��s$
r�)NN)\Z
__future__rrZ
past.builtinsr�builtinsrrr0r|r�rxrrG�distutils.utilrZ
sqlalchemyrr	r
rJrZsqlalchemy.sqlrr
rrrrrZsqlalchemy.sql.expressionrrrrrZlvestats.core.pluginrZlvestats.lib.commons.dateutilrrrrrrZlvestats.lib.commons.sizeutilrr r!Zlvestats.ormr"r#r$r%Zlvestats.lib.commons.funcr&r'Zlvestats.lib.configr(r)�__all__r-r9r=rCrF�objectr,r�r;Zusage_to_limit_dictrr�r�rr�r�r�r?�keys�keyr�r�r�r�r�r�r*r7r<r+r�r7r7r7r8�<module>s�$ }

6E13

Zerion Mini Shell 1.0