ó
æ”\c           @   s}   d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l j Z e j j	 ƒ  Z
 d g Z d e f d „  ƒ  YZ d S(   iÿÿÿÿNt   Managerc           B   s   e  Z d  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z e d „ Z RS(   s?   
	Manager creates plugin instances and keeps a track of them.
	c         C   sM   t  t |  ƒ j ƒ  | |  _ | |  _ | |  _ | |  _ g  |  _ g  |  _ d  S(   N(	   t   superR    t   __init__t   _plugins_repositoryt   _monitors_repositoryt   _def_instance_priorityt   _hardware_inventoryt
   _instancest   _plugins(   t   selft   plugins_repositoryt   monitors_repositoryt   def_instance_priorityt   hardware_inventory(    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyR      s    					c         C   s   |  j  S(   N(   R   (   R	   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyt   plugins   s    c         C   s   |  j  S(   N(   R   (   R	   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyt	   instances   s    c         C   s   |  j  S(   N(   R   (   R	   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyR
   #   s    c         C   sy  g  } x} t  | j ƒ  ƒ D]i \ } } | j sE t j d | ƒ q n  | j j d |  j ƒ t | j d ƒ | j d <| j	 | ƒ q W| j
 d d „  ƒ t j ƒ  } x+ | D]# } | j j d ƒ d  | | j <q¬ Wx´ t  | j ƒ  ƒ D]  \ } } y0 |  j j | ƒ } | | | <|  j j	 | ƒ Wqæ t j j j k
 rRt j d | ƒ qæ qæ t k
 r…}	 t j d | ƒ t j |	 ƒ qæ qæ Xqæ Wg  }
 x‡ | D] } | | j } | d  k r¼q—n  t j d | j | j f ƒ | j | j | j | j | j | j  | j ƒ } |
 j	 | ƒ q—Wx; |
 D]3 } | j! j" ƒ  | j! j# | ƒ | j! j$ | ƒ q!W|  j% j& ƒ  |  j' j( |
 ƒ d  S(   Ns   skipping disabled instance '%s't   priorityt   keyc         S   s   |  j  d S(   NR   (   t   options(   t   x(    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyt   <lambda>1   s    s2   skipping plugin '%s', not supported on your systems   failed to initialize plugin %ss   creating '%s' (%s)()   t   listt   itemst   enabledt   logt   debugR   t
   setdefaultR   t   intt   appendt   sortt   collectionst   OrderedDictt   popt   Nonet   typeR   t   createR   t   tunedR   t
   exceptionst   NotSupportedPluginExceptiont   infot	   Exceptiont   errort	   exceptiont   namet   create_instancet   devicest   devices_udev_regext
   script_pret   script_postt   plugint   init_devicest   assign_free_devicest   initialize_instanceR   t   start_processing_eventsR   t   extend(   R	   t   instances_configt   instance_info_listt   instance_namet   instance_infot   plugins_by_namet   plugin_namet   noneR1   t   eR   t   new_instancet   instance(    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyR#   '   sP    	
c         O   sb   y | | | Ž  SWnJ t  k
 r] } t j ƒ  } t j d | t | ƒ f ƒ t j | ƒ | SXd  S(   Ns"   BUG: Unhandled exception in %s: %s(   R(   t	   tracebackt
   format_excR   R)   t   str(   R	   t   callert   exc_rett   ft   argst   kwargsR>   t   trace(    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyt	   _try_callV   s    	c         C   s”   xA |  j  D]6 } t j d | j ƒ |  j d d  | j j | ƒ q
 Wx; |  j D]0 } t j d | j ƒ |  j d d  | j	 ƒ qN W|  j 2|  j  2d  S(   Ns   destroying instance %st   destroy_alls   cleaning plugin '%s'(
   R   R   R   R+   RJ   R!   R1   t   destroy_instanceR   t   cleanup(   R	   R@   R1   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyRK   `   s    	c         C   sB   x; |  j  j D]- } t j d | ƒ |  j d d  | j ƒ q Wd  S(   Ns   updating monitor %st   update_monitors(   R   t   monitorsR   R   RJ   R!   t   update(   R	   t   monitor(    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyRN   m   s    c         C   s.   x' |  j  D] } |  j d d  | j ƒ q
 Wd  S(   Nt   start_tuning(   R   RJ   R!   t   apply_tuning(   R	   R@   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyRR   r   s    c         C   sN   t  } xA |  j D]6 } |  j d t | j | ƒ } | t k r t } q q W| S(   Nt   verify_tuning(   t   TrueR   RJ   t   FalseRT   (   R	   t   ignore_missingt   retR@   t   res(    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyRT   w   s    c         C   s.   x' |  j  D] } |  j d d  | j ƒ q
 Wd  S(   Nt   update_tuning(   R   RJ   R!   RZ   (   R	   R@   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyRZ   €   s    c         C   sD   |  j  j ƒ  x0 t |  j ƒ D] } |  j d d  | j | ƒ q Wd  S(   Nt   stop_tuning(   R   t   stop_processing_eventst   reversedR   RJ   R!   t   unapply_tuning(   R	   t   full_rollbackR@   (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyR[      s    (   t   __name__t
   __module__t   __doc__R   t   propertyR   R   R
   R#   RJ   RK   RN   RR   RT   RZ   RV   R[   (    (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyR       s   	
	/	
						(   R   RA   t   tuned.exceptionsR$   t
   tuned.logst   tuned.plugins.exceptionst   tuned.constst   constst   logst   getR   t   __all__t   objectR    (    (    (    s7   /usr/lib/python2.7/site-packages/tuned/units/manager.pyt   <module>   s   	