ó
æ”\c           @   s}   d  d l  Z  d  d l Z  d  d l Z d  d l m Z d  d l m Z m Z d d l m	 Z	 d g Z
 d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   DBusGMainLoop(   t   GLibt   GObjecti   (   t   TunedAdminDBusExceptiont   DBusControllerc           B   s  e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sp   | |  _  | |  _ | |  _ d  |  _ d  |  _ | |  _ d  |  _ d  |  _ d  |  _	 t
 |  _ t |  _ d  |  _ d  S(   N(   t	   _bus_namet   _interface_namet   _object_namet   Nonet   _proxyt
   _interfacet   _debugt
   _main_loopt   _actiont   _on_exit_actiont   Truet   _rett   Falset   _exitt
   _exception(   t   selft   bus_namet   interface_namet   object_namet   debug(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   __init__   s    											c         C   s¡   yw |  j  d  k rv t d t ƒ t j ƒ  |  _ t j ƒ  } | j	 |  j
 |  j ƒ |  _  t j |  j  d |  j ƒ|  _ n  Wn# t j j k
 rœ t d ƒ ‚ n Xd  S(   Nt   set_as_defaultt   dbus_interfaces>   Cannot talk to Tuned daemon via DBus. Is Tuned daemon running?(   R	   R   R    R   R   t   MainLoopR   t   dbust	   SystemBust
   get_objectR   R   t	   InterfaceR   R
   t
   exceptionst   DBusExceptionR   (   R   t   bus(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   _init_proxy   s    %c         C   s¬   |  j  d  k	 rY y |  j  |  j |  j Ž  |  _ WqY t k
 rU } | |  _ t |  _ qY Xn  |  j r› |  j	 d  k	 rŠ |  j	 |  j
 |  j Ž  n  |  j j ƒ  t St j d ƒ t S(   Ni   (   R   R   t   _action_argst   _action_kwargst   _action_exit_codeR   R   R   R   R   t   _on_exit_action_argst   _on_exit_action_kwargsR   t   quitR   t   timet   sleep(   R   t   e(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   _idle$   s    		c         O   s   | |  _  | |  _ | |  _ d  S(   N(   R   R(   R)   (   R   t   actiont   argst   kwargs(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   set_on_exit_action7   s    		c         O   s   | |  _  | |  _ | |  _ d  S(   N(   R   R%   R&   (   R   R/   R0   R1   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt
   set_action<   s    		c         C   sH   d  |  _ t j |  j ƒ |  j j ƒ  |  j d  k	 rA |  j ‚ n  |  j S(   N(   R   R   R   t   idle_addR.   R   t   runR   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyR5   A   s    	c         O   s‚   |  j  ƒ  y& |  j j | ƒ } | d d | Œ SWnK t j j k
 r} } d } |  j rn | d t | ƒ 7} n  t | ƒ ‚ n Xd  S(   Nt   timeouti(   s    DBus call to Tuned daemon faileds    (%s)(	   R$   R
   t   get_dbus_methodR   R!   R"   R   t   strR   (   R   t   method_nameR0   R1   t   methodt   dbus_exceptiont   err_str(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   _callJ   s    
	c         C   s!   |  j  ƒ  |  j j | | ƒ d  S(   N(   R$   R	   t   connect_to_signal(   R   t   signalt   cb(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   set_signal_handlerV   s    
c         C   s   |  j  d ƒ S(   Nt
   is_running(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRB   Z   s    c         C   s   |  j  d ƒ S(   Nt   start(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRC   ]   s    c         C   s   |  j  d ƒ S(   Nt   stop(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRD   `   s    c         C   s   |  j  d ƒ S(   Nt   profiles(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRE   c   s    c         C   s   |  j  d ƒ S(   Nt	   profiles2(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRF   f   s    c         C   s   |  j  d | ƒ S(   Nt   profile_info(   R=   (   R   t   profile_name(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRG   i   s    c         C   s   |  j  d | | ƒ S(   Nt   log_capture_start(   R=   (   R   t	   log_levelR6   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRI   l   s    c         C   s   |  j  d | ƒ S(   Nt   log_capture_finish(   R=   (   R   t   token(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRK   o   s    c         C   s   |  j  d ƒ S(   Nt   active_profile(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRM   r   s    c         C   s   |  j  d ƒ S(   Nt   profile_mode(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRN   u   s    c         C   s&   | d k r t  d f S|  j d | ƒ S(   Nt    s   No profile specifiedt   switch_profile(   R   R=   (   R   t   new_profile(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRP   x   s    
c         C   s   |  j  d ƒ S(   Nt   auto_profile(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRR   }   s    c         C   s   |  j  d ƒ S(   Nt   recommend_profile(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRS   €   s    c         C   s   |  j  d ƒ S(   Nt   verify_profile(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRT   ƒ   s    c         C   s   |  j  d ƒ S(   Nt   verify_profile_ignore_missing(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRU   †   s    c         C   s   |  j  d ƒ S(   Nt   disable(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   off‰   s    c         C   s   |  j  d ƒ S(   sz   Return dict with plugin names and their hints

		Return:
		dictionary -- {plugin_name: {parameter_name: default_value}}
		t   get_all_plugins(   R=   (   R   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   get_pluginsŒ   s    c         C   s   |  j  d | ƒ S(   s"   Return docstring of plugin's classt   get_plugin_documentation(   R=   (   R   t   plugin_name(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyRZ   ”   s    c         C   s   |  j  d | ƒ S(   sŸ   Return dictionary with parameters of plugin and their hints

		Parameters:
		plugin_name -- name of plugin

		Return:
		dictionary -- {parameter_name: hint}
		t   get_plugin_hints(   R=   (   R   R[   (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyR\   ˜   s    	c         C   s#   |  j  d  ƒ | |  _ t |  _ | S(   N(   R3   R   R   R   R   (   R   t   ret(    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   exit£   s    		(   t   __name__t
   __module__R   R   R$   R.   R2   R3   R5   R=   RA   RB   RC   RD   RE   RF   RG   RI   RK   RM   RN   RP   RR   RS   RT   RU   RW   RY   RZ   R\   R^   (    (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyR   
   s8   																											(   R   t   dbus.exceptionsR+   t   dbus.mainloop.glibR    t   gi.repositoryR   R   R!   R   t   __all__t   objectR   (    (    (    s?   /usr/lib/python2.7/site-packages/tuned/admin/dbus_controller.pyt   <module>   s   	