o
    va                     @   s<   d Z ddlmZ ddlmZ ddlmZ G dd deZdS )zMonitor plugin.    )	iteritems)AmpsList)GlancesPluginc                       sR   e Zd ZdZd fdd	Zdd Zejejdd Z	dddZ
dddZ  ZS )PluginzGlances AMPs plugin.Nc                    s<   t t| j||g d || _|| _d| _t| j| j| _dS )zInit the plugin.)argsconfigZstats_init_valueTN)superr   __init__r   r   Zdisplay_curseglancesAmpsListglances_amps)selfr   r   	__class__ >/usr/lib/python3/dist-packages/glances/plugins/glances_amps.pyr	      s   zPlugin.__init__c                 C   s   dS )zReturn the key of the list.namer   )r   r   r   r   get_key,   s   zPlugin.get_keyc                 C   s~   |   }| jdkr8t| j D ]&\}}||  |j| |	 |
 | | | | dud	 qn	 || _| jS )zUpdate the AMP list.ZlocalN)	keyr   resultrefreshZtimercountcountmincountmaxregex)Zget_init_valueZinput_methodr   r   updateappendr   NAMEr   r   Ztime_until_refreshr   Z	count_minZ	count_maxr   stats)r   r   kvr   r   r   r   0   s"   



zPlugin.updater    Fc                 C   sl   |du rdS |du r|}|du r|}|dkr,t |t |  kr't |kr*dS  dS dS t |dkr4dS dS )z7Return the alert status relative to the process number.NZOKr   ZWARNINGZCRITICAL)int)r   Z	nbprocessr   r   headerlogr   r   r   	get_alertL   s   zPlugin.get_alertc           
      C   s  g }| j r|js|  r|S | j D ]d}|d du rqd|d }| |d |d |d }d|d r8|d nd	}|d d
D ]2}d|}	|| |	| d|}	|| |	 d	 }}|| j|dd ||   qBqz|	  W |S  t
y   Y |S w )z2Return the dict to display in the curse interface.r   Nz{}r   r   r   r   r   r    
z{:<16} z{:<4} T)Z
splittable)r   Zdisable_processZis_disabledformatr$   splitr   Zcurse_add_lineZcurse_new_linepop
IndexError)
r   r   Z	max_widthretmZfirst_columnZfirst_column_styleZsecond_columnlmsgr   r   r   	msg_curse_   s2   



zPlugin.msg_curse)NN)r   NNr    F)__name__
__module____qualname____doc__r	   r   r   Z_check_decoratorZ_log_result_decoratorr   r$   r.   __classcell__r   r   r   r   r      s    
r   N)	r2   Zglances.compatr   Zglances.amps_listr   r
   Zglances.plugins.glances_pluginr   r   r   r   r   r   <module>   s
   