%PDF- %PDF-
Mini Shell

Mini Shell

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

B

��1b�=�@s�ddlmZddlmZddlmZddlZddlZddlZddlm	Z	ddl
mZddlZ
ddlmZmZddlmZdd	lmZdd
lmZddlmZddlmZd
ZdZdZdd�Ze
jj j!j"ddd��Z#dd�Z$Gdd�de%�Z&dS)�)�print_function)�absolute_import)�mapN)�or_)�sessionmaker)�dbengine�uidconverter)�dateutil)�prepare_data_json)�lve_read_snapshot_parser)�Snapshot)�incidentz?Snapshots collected starting from %s to %s for lve id %d @ %s:
zDone..
Z	localhostcCsv|jr|j\}}n\|jr(|j}|d}nFy(t�d�|j��}t�d�|j��}Wntk
rltd�dSX||fS)Ng�!��?� z:please use [YY]YY-MM-DD[ HH:MM] format for --from and --to)NN)	ZperiodZ	timestampr	Z
parse_date�joinZffrom�to�
ValueError�print)�opts�start�end�r�J/opt/alt/python37/lib/python3.7/site-packages/lvestats/snapshots/reader.py�_calculate_periods
rc
Cs"t�}|�|�}|js0|js0|��td�dSyt�|�}Wn,tjk
rj}zt|�dSd}~XYnX|�	dt
�}|jr�t�|j|||�}|dkr�td|j|f�dSn|j}t
|�\}}	|dkr�|	dkr�dSt|||	|||j|j�}
|j�r|
��n|j�r|
�|j�n|
��dS)Nz/One of -u --user or -i --id should be specified��	server_idzUser %s@%s not found)r�
parse_args�id�user�
print_helprrZmake_db_engineZMakeDbException�get�DEFAULT_SERVER_IDrZusername_to_uidr�LVEReadSnaphot�outputZjson�list�statsZunit�run)�configZargv_�parserr�engine�er�uidrrZlve_read_snapshotrrr�snapshot_reader_main/sD

r+cCs t|tj�rt�t�|��S|S)z�
    Convert local datetime to unix timestamp, or just passes
    unix timestamp as output if specified.

    :param o:
    :return:
    )�
isinstance�datetimer	Zgm_datetime_to_unixtimestampZlocal_to_gm)�orrr�_try_convert_to_timestamp\sr/c@s�eZdZdd�Zdd�Zdd�Zedejfdd	��Z	ed
d��Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zedd��Zdd�Zd S)!r!cCsL||_||_||_||_t|�|_t|�|_||_dddddddd�|_d	S)
z�

        :param start: datetime.datetime | int (unix timestamp)
        :param end: datetime.datetime | int (unix timestamp)
        :param uid:
        :param server_id:
        :param output_file: filename
        :param do_json: boolean
        �CPUzVirtual memoryZEPzPhysical memoryZNPROCZIOZIOPS)Z	cpu_faultZ	mem_faultZ	mep_faultZmemphy_faultZnproc_faultZio_faultZ
iops_faultN)	r(�do_json�output_filer*r/rrr�fault_names)�selfr(rrr*rr2r1rrr�__init__js


zLVEReadSnaphot.__init__c
CsR|�t��tj|jktj|jkttj�|j|j	�tj
�|j|j	����tj���S)N)
Zqueryr
�filterr*rr�incident_start_timeZbetweenrr�incident_end_timeZorder_by�all)r4�sessionrrr�
get_incidents�s

zLVEReadSnaphot.get_incidentsc
CsJg}x@|�|�D]2}|�|jt|j|jp*d�d|j|�|�d��qW|S)Nrr)�fromr�	incidents�	snapshots�duration)r;�appendr7�max�	dump_timer8Zsnapshot_count�get_duration)r4r:�result�irrr�stats_by_incident�sz LVEReadSnaphot.stats_by_incidentrcCs,t|j|�}tt|j|jpd�|�}||S)Nr)rAr7�minrBr8)rEZfrom_Zto_rrrrC�szLVEReadSnaphot.get_durationcCs�d}d}xZ|t|�krb||}|j|kr2|d7}q
|j|kr>P|d7}|d7}|t�|||�7}q
W|dkrvdd|fS|||dfSdS)Nrr)�lenrBr7r!rC)r=�pos�from_ts�to_ts�countr?rErrr�get_incident_count�s


z!LVEReadSnaphot.get_incident_countcCs�|�|�}tt|jd����}g}|j}d}x�||jkr�t|||j�}|�||||�\}	}
}|	dkrl|}q.t�	|||�}t
|�dkr�|�d�|�|||	t
|�|
d��|}q.W|S)N)r*r)r<rr=r>r?)r;r�dictr*Z_get_file_listrrrGrMZsnapshot_filterrHr@)r4r:�	time_unitr=Zsnapshot_filesrDrJrIrKZincident_countr?r>rrr�stats_by_time_unit�s*


z!LVEReadSnaphot.stats_by_time_unitcCs<|j|j|d�}|��}|�t|��|�d�|��dS)N)r<rr$�
)rr�open�writer
�flush)r4r$�data�outrrr�print_stats_json�s
zLVEReadSnaphot.print_stats_jsoncCs�|��}|�dt�|j�t�|j�f�x||D]t}|�d�|�dt�|d��|�dt�|d��|�d|d�|�d	|d
�|�d|d�q0W|��dS)
NzStats from %s to %s
z---
z
	from: %s
r<z	to: %s
rz	incidents: %d
r=z	snapshots: %d
r>z	duration: %d sec.
r?)rRrSr	�	ts_to_isorrrT)r4r$rV�statrrr�print_stats�s

zLVEReadSnaphot.print_statsc
Cs�y.t�|�}|j|j|kr(|j||_d}Wn:tk
rh}zd}|dk}|sXt|��Wdd}~XYnXt|jd��}zD|r�|�|�}n|�||�}|�	�|j
r�|�|�n
|�|�Wd|�
�XdS)NF�auto)Zbind)r	Z
parse_period2rrrrr(rFrPZexpunge_allr1rWrZ�close)r4Zstats_unit_strrOZgroup_by_incident�exr:r$rrrr$�s(
zLVEReadSnaphot.statscCs*tt|jd��}|�|�|j|j��dS)N)r*)rrNr*�reportZ
get_snapshotsrr)r4r>rrrr%szLVEReadSnaphot.runcCs�tt|jd��}|�|j|j�}|��}|jr>|�t	|��nX|�dt
�|j�t
�|j�|jf�x&|D]}|�t
�|��|�d�qjW|�t�|�
�dS)N)r*z6Snapshots timestamp list; from %s to %s for lve id %s
rQ)rrNr*Zget_ts_listrrrRr1rSr
r	rX�
REPORT_FOOTERrT)r4r>Zsnapshots_listrV�tsrrrr#s


zLVEReadSnaphot.listcCs�|��}|jr6|�td|i��|�d�|��dS|�tt�|j�t�|j	�|j
|jf�x|D]}|�||�qfW|�t
�|��dS)Nr>rQ)rRr1rSr
rT�
REPORT_HEADERr	rXrrr*r�format_snapshotr_)r4r>rV�
snapshot_datarrrr^s


zLVEReadSnaphot.reportcCs.|jr(yt|jd�Stk
r&YnXtjS)N�w)r2rR�IOError�sys�stdout)r4rrrrR&szLVEReadSnaphot.opencCs|t�}�xJ|��D�]<\}}d|krd|d}t�}||d<|d|d<||d<|d|d<|||<q|d}|ddkr�t|d�dd��|d<|ddkr�t|d�|d<||k�rH|ddkr�||ddkr�||d|d7<n|d||d<|ddk�rP||ddk�r6||d|d7<n|d||d<q|||<qWt�}x|D]}|�||��q`W|S)a�
        Aggregates process data by PID by summing CPU % and MEM for same PIDs
        :param process_data: input data. Dictionary:
         { u'151048': {u'MEM': u'1', u'CMD': u'bash', u'PID': u'151048', u'CPU': u'0%'},
           u'151047': {u'MEM': u'1', u'CMD': u'su cltest1', u'PID': u'151047', u'CPU': u'0%'},
           u'153642': {u'MEM': u'1', u'CMD': u'./threads', u'PID': u'153640', u'CPU': u'0%'},
           u'153641': {u'MEM': u'1', u'CMD': u'./threads', u'PID': u'153640', u'CPU': u'0%'},
           u'153640': {u'MEM': u'1', u'CMD': u'./threads', u'PID': u'153640', u'CPU': u'5%'}
         }
        :return: Output data - List of dictionaries:
         [
           {u'MEM': u'1', u'CMD': u'bash', u'PID': u'151048', u'CPU': u'0%'},
           {u'MEM': u'1', u'CMD': u'su cltest1', u'PID': u'151047', u'CPU': u'0%'},
           {u'MEM': u'3', u'CMD': u'./threads', u'PID': u'153640', u'CPU': u'5%'},
         ]
        �PID�CMD�MEMr0zN/A�%�)rN�items�int�replacer#r@)Zprocess_dataZthread_dictZp_idZ	proc_data�pidZprocess_data_newZout_datarrr�_process_data_aggregate/s<

z&LVEReadSnaphot._process_data_aggregatec
s|�dt�|d�|df�|�d�x4|d��D]$\}}|�d|j�||�|f�q8W|dr�|�d�t�d	d
dg�}tt	|j
|d��|�|���|�d�t�}x8t|d
�
��D]$�xt����D]}|�|�q�Wq�Wtdg�}dg}	d|k�r|	�d�|�d�d|k�r:|	�d�|�d�d	|k�rX|	�d	�|�d	�t�|	�}
d	|	k�rvd|
jd	<|�|d
�}x&|D]�|
�
�fdd�|D���q�W|�t|
��|�d�|d�r|�d�t�dddddd
g�}tt	|j
|d��|�t|��|�d�dS)Nz>>> %s, UID %d
rBr*z	
Faults:
Zsnap_faultsz
	* %s: %d
Zsnap_sqlz
SQL Queries:
riZTimez	SQL-queryz
Processes:
Z	snap_procrhrjzMemory (Mb)r0zCPU (%)�lcsg|]}��|d��qS)zN/A)r)�.0�k)rUrr�
<listcomp>�sz2LVEReadSnaphot.format_snapshot.<locals>.<listcomp>z

Z	snap_httpzHttp requests:
ZPidZDomainz	Http typeZPathzHttp version)rSr	rXrmr3r�prettytableZPrettyTabler#rZadd_rowZ
get_string�set�values�keys�addr@Zalignrq�str)
r4rVrcrt�vZ	sql_tableZfields�keyZ	data_keysZ
table_columns�tableZsnap_proc_aggrZ
http_tabler)rUrrbmsN 
 


















zLVEReadSnaphot.format_snapshotN)�__name__�
__module__�__qualname__r5r;rF�staticmethodrf�maxsizerCrMrPrWrZr$r%r#r^rRrqrbrrrrr!is 	>r!)N)'Z
__future__rr�builtinsrr-rfrvZ
sqlalchemyrZsqlalchemy.ormrZlvestats.lib.commons.decorators�lvestatsZlvestats.librrZlvestats.lib.commonsr	Zlvestats.lib.jsonhandlerr
Z/lvestats.lib.parsers.lve_read_snapshot_argparserZlvestats.lib.snapshotrZlvestats.orm.incidentr
rar_r r�libZcommonsZ
decoratorsZ
no_sigpiper+r/�objectr!rrrr�<module>s,
,

Zerion Mini Shell 1.0