ó
½-'Nc           @   s   d  d l  m Z d  d l m Z m Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z d e f d „  ƒ  YZ d „  Z d	 S(
   iÿÿÿÿ(   t
   namedClass(   t   LandscapeServicet   run_landscape_service(   t   ManagerConfiguration(   t   BrokerClientProtocolFactoryt   RemoteBrokerConnector(   t   Managert   ManagerServicec           B   s;   e  Z d  Z e j Z d „  Z d „  Z d „  Z d „  Z	 RS(   sm   
    The core Twisted Service which creates and runs all necessary managing
    components when started.
    c         C   sV   t  t |  ƒ j | ƒ |  j ƒ  |  _ t |  j |  j ƒ |  _ t	 d |  j ƒ |  _
 d  S(   Nt   object(   t   superR   t   __init__t   get_pluginst   pluginsR   t   reactort   configt   managerR   t   factory(   t   selfR   (    (    s=   /usr/lib/python2.7/dist-packages/landscape/manager/service.pyR
      s    c         C   s6   g  |  j  j D]% } t d | j ƒ  | f ƒ ƒ  ^ q S(   sA   Return instances of all the plugins enabled in the configuration.s   landscape.manager.%s.%s(   R   t   plugin_factoriesR    t   lower(   R   t   plugin_name(    (    s=   /usr/lib/python2.7/dist-packages/landscape/manager/service.pyR      s    c            sV   t  t ˆ  ƒ j ƒ  ‡  f d †  } t ˆ  j ˆ  j ƒ ˆ  _ ˆ  j j ƒ  } | j | ƒ S(   s  Start the manager service.

        This method does 3 things, in this order:

          - Start listening for connections on the manager socket.
          - Connect to the broker.
          - Add all configured plugins, that will in turn register themselves.
        c            sL   |  ˆ  _  |  ˆ  j _  x! ˆ  j D] } ˆ  j j | ƒ q Wˆ  j  j ˆ  j ƒ S(   N(   t   brokerR   R   t   addt   register_clientt   service_name(   R   t   plugin(   R   (    s=   /usr/lib/python2.7/dist-packages/landscape/manager/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/manager/service.pyR      s
    	c         C   s$   |  j  j ƒ  t t |  ƒ j ƒ  d S(   s:   Stop the manager and close the connection with the broker.N(   R   t
   disconnectR	   R   t   stopService(   R   (    (    s=   /usr/lib/python2.7/dist-packages/landscape/manager/service.pyR!   4   s    (
   t   __name__t
   __module__t   __doc__R   t   nameR   R
   R   R   R!   (    (    (    s=   /usr/lib/python2.7/dist-packages/landscape/manager/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/manager/service.pyt   run:   s    N(   t   twisted.python.reflectR    t   landscape.serviceR   R   t   landscape.manager.configR   t   landscape.broker.ampR   R   t   landscape.manager.managerR   R   R'   (    (    (    s=   /usr/lib/python2.7/dist-packages/landscape/manager/service.pyt   <module>   s   0