????

Your IP : 3.15.190.254


Current Path : /lib/python3.6/site-packages/glances/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/glances/__pycache__/events.cpython-36.pyc

3

Eo�cP�@sNdZddlZddlmZddlmZddlmZmZGdd�de�Z	e	�Z
dS)zAManage Glances events (previously Glances logs in Glances < 3.1).�N)�datetime)�range)�glances_processes�
sort_statsc@sleZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
ddd�Zdd�Zdd�Z
ddd�ZdS)�
GlancesEventsa�This class manages events inside the Glances software.

    Events is a list of event (stored in the self.events_list var)
    event_state = "OK|CAREFUL|WARNING|CRITICAL"
    event_type = "CPU*|LOAD|MEM|MON"
    event_value = value

    Item (or event) is defined by:
      ["begin",
       "end",
       "WARNING|CRITICAL",
       "CPU|LOAD|MEM",
       MAX, AVG, MIN, SUM, COUNT,
       [top3 process list],
       "Processes description",
       "top sort key"]
    cCsd|_g|_dS)zInit the events class.�
N)�
events_max�events_list)�self�r�/usr/lib/python3.6/events.py�__init__'szGlancesEvents.__init__cCs|jS)zReturn the raw events list.)r	)r
rrr�get/szGlancesEvents.getcCs
|jj�S)z-Return the number of events in the logs list.)r	�__len__)r
rrr�len3szGlancesEvents.lencCsBx<t|j��D],}|j|ddkr|j|d|kr|SqWdS)z�Return the event position, if it exists.

        An event exist if:
        * end is < 0
        * event_type is matching
        Return -1 if the item is not found.
        �r����)rrr	)r
�
event_type�irrrZ
__event_exist7s$zGlancesEvents.__event_existcCs(|jd�rd}n|jd�r d}nd}|S)zReturn the process sort keyZMEMZmemory_percentZ
CPU_IOWAITZio_countersZcpu_percent)�
startswith)r
r�retrrr�get_event_sort_keyDs

z GlancesEvents.get_event_sort_keycCstjrtj|j|��dS)z5Define the process auto sort key from the alert type.N)r�	auto_sort�set_sort_keyr)r
rrrr�set_process_sortRszGlancesEvents.set_process_sortcCstjrtjd�dS)z Reset the process auto sort key.�autoN)rrr)r
rrr�reset_process_sortWsz GlancesEvents.reset_process_sortN��cCsR|p
tj�}|j|�}|dkr4|j||||||�n|j|||||||�|j�S)z�Add a new item to the logs list.

        If 'event' is a 'new one', add it at the beginning of the list.
        If 'event' is not a 'new one', update the list .
        If event < peak_time then the alert is not set.
        r)rZgetlist�_GlancesEvents__event_exist�
_create_event�
_update_eventr)r
�event_stater�event_value�	proc_list�	proc_desc�	peak_time�event_indexrrr�add\s
zGlancesEvents.addcCsx|dks|dkrp|j|�tjtj�j��d||||||dg|tjg}|jj	d|�|j
�|jkrl|jj�dSdSdS)	z}Add a new item in the log list.

        Item is added only if the criticality (event_state) is WARNING or CRITICAL.
        ZWARNING�CRITICALrrTFNr)
r�time�mktimer�now�	timetuplerZsort_keyr	�insertrr�pop)r
r#rr$r%r&r'�itemrrrr!ps&

zGlancesEvents._create_eventc
Csb|dks|dkrd|j�tjtj�j��}||j|d|krP||j|d<n|jj|j|�n�|j|�|dkr�||j|d<t	|j|d|�|j|d<t
|j|d|�|j|d<|j|d	|7<|j|d
d7<|j|d	|j|d
|j|d<|dk�rP|j|�}	t||	�dd�|j|d
<|	|j|d<||j|d<dS)zUpdate an event in the listZOKZCAREFULrrr*�r����r�	�rT)
rr+r,rr-r.r	�remover�min�maxrr)
r
r(r#rr$r%r&r'Zend_timeZevents_sort_keyrrrr"�s(
&

zGlancesEvents._update_eventFcCsZg}xF|j�dkrJ|jj�}|ddks<|r|djd�r|jd|�qW||_|j�S)z�Clean the logs list by deleting finished items.

        By default, only delete WARNING message.
        If critical = True, also delete CRITICAL message.
        rrr2r*)rr	r0rr/)r
ZcriticalZclean_events_listr1rrr�clean�s
 zGlancesEvents.clean)Nrr)F)�__name__�
__module__�__qualname__�__doc__r
rrr rrrr)r!r"r<rrrrrs

&*r)r@r+rZglances.compatrZglances.processesrr�objectrZglances_eventsrrrr�<module>
s?