ó
½-'Nc           @   sf   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ	 d S(   iÿÿÿÿN(   t   CoverageMonitor(   t   MemoryStats(   t   Accumulator(   t   MonitorPlugint
   MemoryInfoc           B   se   e  Z d  Z d Z d Z d d d e j d „ Z d „  Z d „  Z	 e
 d „ Z e
 d	 „ Z d
 „  Z RS(   s<   Plugin captures information about free memory and free swap.s   memory-infoi   i<   s   /proc/meminfoc         C   s1   | |  _  | |  _ | |  _ g  |  _ | |  _ d  S(   N(   t	   _intervalt   _monitor_intervalt   _source_filenamet   _memory_infot   _create_time(   t   selft   intervalt   monitor_intervalt   source_filenamet   create_time(    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyt   __init__   s
    				c         C   sÉ   t  t |  ƒ j | ƒ t |  j |  j j ƒ |  _ |  j j j	 |  j
 |  j ƒ t |  j
 d d d |  j ƒ|  _ |  j j j	 |  j |  j j ƒ |  j j j d |  j j d d ƒ|  j d |  j t ƒ d  S(   Ngš™™™™™é?s   memory/swap snapshotR   t   stopt   priorityiÐ  s   memory-info(   t   superR   t   registerR   t   _persistt   registryt	   step_sizet   _accumulatet   reactort
   call_everyR   t   runR    R	   t   _monitorR   t   logt   call_ont   call_on_acceptedt   send_messaget   True(   R
   R   (    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyR      s    "c         C   s$   |  j  } g  |  _  i d d 6| d 6S(   Ns   memory-infot   type(   R   (   R
   t   memory_info(    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyt   create_message%   s    		c         C   s<   |  j  ƒ  } t | d ƒ r8 |  j j j | d | ƒn  d  S(   Ns   memory-infot   urgent(   R#   t   lenR   t   brokerR   (   R
   R$   t   message(    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyR   *   s    c         C   s    |  j  j j d |  j | ƒ d  S(   Ns   memory-info(   R   R&   t   call_if_acceptedR   (   R
   R$   (    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyt   exchange/   s    c         C   s´   |  j  j ƒ  t |  j ƒ  ƒ } t |  j ƒ } |  j | | j d ƒ } |  j | | j d ƒ } | r° | r° | d } t | d ƒ } t | d ƒ } |  j	 j
 | | | f ƒ n  d  S(   Ns   accumulate-memorys   accumulate-swapi    i   (   R   t   pingt   intR	   R   R   R   t   free_memoryt	   free_swapR   t   append(   R
   t   new_timestampt   memstatst   memory_step_datat   swap_step_datat	   timestampR,   R-   (    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyR   3   s    
Ni  (   t   __name__t
   __module__t   __doc__t   persist_namet   Nonet   run_intervalt   timeR   R   R#   t   FalseR   R)   R   (    (    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyR   
   s   		(
   R:   t   landscape.lib.monitorR    t   landscape.lib.sysstatsR   t   landscape.accumulateR   t   landscape.monitor.pluginR   R   (    (    (    s@   /usr/lib/python2.7/dist-packages/landscape/monitor/memoryinfo.pyt   <module>   s
   