ó
½-'Nc           @   s‘   d  Z  d d l Z d d l m Z d d l m Z m Z d d l m Z d d l	 m
 Z
 d d l m Z m Z d e f d	 „  ƒ  YZ d
 „  Z d S(   s    Deployment code for the monitor.iÿÿÿÿN(   t
   namedClass(   t   LandscapeServicet   run_landscape_service(   t   MonitorConfiguration(   t   Monitor(   t   BrokerClientProtocolFactoryt   RemoteBrokerConnectort   MonitorServicec           B   s;   e  Z d  Z e j Z d „  Z d „  Z d „  Z d „  Z	 RS(   so   
    The core Twisted Service which creates and runs all necessary monitoring
    components when started.
    c         C   s‡   t  j j | j d |  j ƒ |  _ t t |  ƒ j | ƒ |  j	 ƒ  |  _
 t |  j |  j |  j d |  j ƒ|  _ t d |  j ƒ |  _ d  S(   Ns
   %s.bpicklet   persist_filenamet   object(   t   ost   patht   joint	   data_patht   service_nameR   t   superR   t   __init__t   get_pluginst   pluginsR   t   reactort   configt   persistt   monitorR   t   factory(   t   selfR   (    (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyR      s    	c         C   s6   g  |  j  j D]% } t d | j ƒ  | f ƒ ƒ  ^ q S(   Ns   landscape.monitor.%s.%s(   R   t   plugin_factoriesR    t   lower(   R   t   plugin_name(    (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyR      s    c            sV   t  t ˆ  ƒ j ƒ  ‡  f d †  } t ˆ  j ˆ  j ƒ ˆ  _ ˆ  j j ƒ  } | j | ƒ S(   s   Start the monitor.c            sL   |  ˆ  _  |  ˆ  j _  x! ˆ  j D] } ˆ  j j | ƒ q Wˆ  j  j ˆ  j ƒ S(   N(   t   brokerR   R   t   addt   register_clientR   (   R   t   plugin(   R   (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyt   start_plugins(   s
    	(	   R   R   t   startServiceR   R   R   t	   connectort   connectt   addCallback(   R   R    t	   connected(    (   R   s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyR!   $   s
    c         C   s1   |  j  j ƒ  |  j j ƒ  t t |  ƒ j ƒ  d S(   s‚   Stop the monitor.

        The monitor is flushed to ensure that things like persist databases
        get saved to disk.
        N(   R   t   flushR"   t
   disconnectR   R   t   stopService(   R   (    (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyR(   3   s    (
   t   __name__t
   __module__t   __doc__R   t   nameR   R   R   R!   R(   (    (    (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyR      s   					c         C   s   t  t t |  ƒ d  S(   N(   R   R   R   (   t   args(    (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyt   run>   s    (   R+   R
   t   twisted.python.reflectR    t   landscape.serviceR   R   t   landscape.monitor.configR   t   landscape.monitor.monitorR   t   landscape.broker.ampR   R   R   R.   (    (    (    s=   /usr/lib/python2.7/dist-packages/landscape/monitor/service.pyt   <module>   s   0