ó
ÍÿŠTc           @   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   diff(   t   ProcessInformation(   t   detect_jiffies(   t   DataWatchert   ActiveProcessInfoc           B   se   e  Z d  Z d Z d d
 d
 d
 e j d „ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z RS(   s   active-process-infot   processs   /procc      
   C   sz   t  t |  ƒ j ƒ  | |  _ i  |  _ i  |  _ | p: t ƒ  |  _ | |  _ t	 |  _
 t d | d | d | d | ƒ |  _ d  S(   Nt   proc_dirt   jiffiest	   boot_timet   uptime(   t   superR   t   __init__t	   _proc_dirt   _persist_processest   _previous_processesR   t   _jiffies_per_sect   _popent   Truet
   _first_runR   t   _process_info(   t   selfR   R   R   R	   t   popen(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR      s    					c         C   s3   t  t |  ƒ j | ƒ |  j |  j |  j t ƒ d  S(   N(   R
   R   t   registert   call_on_acceptedt   message_typet   exchangeR   (   R   t   manager(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR      s    c         C   s   t  |  _ i  |  _ i  |  _ d S(   s   Reset active process data.N(   R   R   R   R   (   R   (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   _reset    s    		c         C   sG   i  } |  j  r t | d <n  | j |  j ƒ  ƒ | rC d | d <| Sd  S(   Ns   kill-all-processess   active-process-infot   type(   R   R   t   updatet   _detect_process_changest   None(   R   t   message(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   get_message&   s    	
c         C   s/   t  |  _ |  j |  _ i  |  _ |  j j ƒ  d  S(   N(   t   FalseR   R   R   t   registryt   flush(   R   (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   persist_data1   s    		c         C   sE   i  } x8 |  j  j ƒ  D]' } | d d k r | | | d <q q W| S(   Nt   statet   Xt   pid(   R   t   get_all_process_info(   R   t	   processest   process_info(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   _get_processes:   s
    c         C   s—   i  } |  j  ƒ  } t |  j | ƒ \ } } } | rL t | j ƒ  ƒ | d <n  | rk t | j ƒ  ƒ | d <n  | rŠ t | j ƒ  ƒ | d <n  | |  _ | S(   Ns   add-processess   update-processess   kill-processes(   R,   R    R   t   listt
   itervaluest   iterkeysR   (   R   t   changesR*   t   createst   updatest   deletes(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR   A   s    	N(   t   __name__t
   __module__R   t   scopeR   t
   subprocesst   PopenR   R   R   R!   R%   R,   R   (    (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR   	   s   							(
   R7   t   landscape.diffR    t   landscape.lib.processR   t   landscape.lib.jiffiesR   t   landscape.monitor.pluginR   R   (    (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   <module>   s
   