ó
æ”\c           @   s•   d  d l  Z  d d l m Z d d l Td  d l Z d  d l j Z d  d l m	 Z	 d  d l
 Z
 d  d l Z e j j ƒ  Z d e j f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t   hotplug(   t   *(   t   commandst   SCSIHostPluginc           B   sÂ   e  Z d  Z d „  Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z e d
 „  ƒ Z d „  Z d „  Z d „  Z e d d e ƒd „  ƒ Z e d ƒ e d „ ƒ Z RS(   s,   
	Plugin for tuning options of SCSI hosts.
	c         O   s)   t  t |  ƒ j | | Ž  t ƒ  |  _ d  S(   N(   t   superR   t   __init__R   t   _cmd(   t   selft   argst   kwargs(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR      s    c         C   sz   t  t |  ƒ j ƒ  t |  _ t ƒ  |  _ x? |  j j d ƒ D]+ } |  j	 | ƒ r; |  j j
 | j ƒ q; q; Wt ƒ  |  _ d  S(   Nt   scsi(   R   R   t   _init_devicest   Truet   _devices_supportedt   sett   _free_devicest   _hardware_inventoryt   get_devicest   _device_is_supportedt   addt   sys_namet   _assigned_devices(   R   t   device(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR      s    	c         C   s&   g  | D] } |  j  j d | ƒ ^ q S(   NR
   (   R   t
   get_device(   R   t   devicest   x(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _get_device_objects    s    c         C   s   | j  d k S(   Nt	   scsi_host(   t   device_type(   t   clsR   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR   #   s    c         C   s   |  j  j |  d |  j ƒ d  S(   NR
   (   R   t	   subscribet   _hardware_events_callback(   R   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _hardware_events_init'   s    c         C   s   |  j  j |  ƒ d  S(   N(   R   t   unsubscribe(   R   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _hardware_events_cleanup*   s    c         C   s/   |  j  | ƒ r+ t t |  ƒ j | | ƒ n  d  S(   N(   R   R   R   R   (   R   t   eventR   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR   -   s    c         C   s   t  t |  ƒ j | | ƒ d  S(   N(   R   R   t   _added_device_apply_tuning(   R   t   instancet   device_name(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR$   1   s    c         C   s   t  t |  ƒ j | | ƒ d  S(   N(   R   R   t   _removed_device_unapply_tuning(   R   R%   R&   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR'   4   s    c         C   s   i d  d 6S(   Nt   alpm(   t   None(   R   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _get_config_options7   s    c         C   s   t  | _ t | _ d  S(   N(   R   t   _has_static_tuningt   Falset   _has_dynamic_tuning(   R   R%   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _instance_init=   s    	c         C   s   d  S(   N(    (   R   R%   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _instance_cleanupA   s    c         C   s   t  j j d t | ƒ d ƒ S(   Ns   /sys/class/scsi_host/t   link_power_management_policy(   t   ost   patht   joint   str(   R   R   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   _get_alpm_policy_fileD   s    R(   t
   per_devicec         C   su   | d  k r d  S|  j | ƒ } | sq t j j | ƒ rM |  j j | | ƒ qq t j d | t	 | ƒ f ƒ d  Sn  | S(   NsB   ALPM control file ('%s') not found, skipping ALPM setting for '%s'(
   R)   R5   R1   R2   t   existsR   t   write_to_filet   logt   infoR4   (   R   t   policyR   t   simt   policy_file(    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt	   _set_alpmG   s    c         C   sA   |  j  | ƒ } |  j j | d t ƒj ƒ  } | d k r= | Sd  S(   Nt   no_errort    (   R5   R   t	   read_fileR   t   stripR)   (   R   R   t   ignore_missingR=   R;   (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt	   _get_alpmT   s    (   t   __name__t
   __module__t   __doc__R   R   R   t   classmethodR   R    R"   R   R$   R'   R*   R.   R/   R5   t   command_setR   R>   t   command_getR,   RD   (    (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyR      s"   		
										(   t   errnoR@   R    t
   decoratorst
   tuned.logst   tunedt   tuned.constst   constst   tuned.utils.commandsR   R1   t   ret   logst   getR9   t   PluginR   (    (    (    sB   /usr/lib/python2.7/site-packages/tuned/plugins/plugin_scsi_host.pyt   <module>   s   
