o
    _                     @   sj   d dl Zd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ dgZej ZG dd dZdS )    N)	ConfigObjConfigObjError)	Validator)TunedException)commandsGlobalConfigc                   @   sr   e Zd Zdej dej dej dej gZej	fddZ
ej	fddZdd
dZdddZdd ZdddZd	S )r   z$dynamic_tuning = boolean(default=%s)z$sleep_interval = integer(default=%s)z%update_interval = integer(default=%s)z'recommend_command = boolean(default=%s)c                 C   s   i | _ | j|d t | _d S )N)	file_name)_cfgload_configr   _cmd)selfconfig_file r   ;/usr/lib/python3/dist-packages/tuned/utils/global_config.py__init__   s   zGlobalConfig.__init__c              
   C   s   t d|  zt|| jddddd| _W n# ty' } ztd| d}~w ty8 } ztd| d}~ww t }| jj	|ddsJtd	| dS )
z&
		Loads global configuration file.
		z2reading and parsing global configuration file '%s'TF)
configspecraise_errors
file_errorlist_valuesinterpolationz/Global tuned configuration file '%s' not found.Nz3Error parsing global tuned configuration file '%s'.)copyz2Global tuned configuration file '%s' is not valid.)
logdebugr   global_config_specr	   IOErrorr   r   r   validate)r   r   evdtr   r   r   r
      s    
zGlobalConfig.load_configNc                 C   s   | j ||S N)r	   getr   keydefaultr   r   r   r   (      zGlobalConfig.getc                 C   s    | j | ||dkrdS dS )N1TF)r   get_boolr   r    r   r   r   r%   +   s   zGlobalConfig.get_boolc                 C   s   || j |< d S r   )r	   )r   r!   valuer   r   r   set0   r#   zGlobalConfig.setc                 C   sD   |  |}|d u r|S | j|}|d u r td||f  |S |S )Nz%Error parsing value '%s', using '%s'.)r   r   get_sizer   error)r   r!   r"   valretr   r   r   r(   3   s   
zGlobalConfig.get_sizer   )__name__
__module____qualname__constsCFG_DEF_DYNAMIC_TUNINGCFG_DEF_SLEEP_INTERVALCFG_DEF_UPDATE_INTERVALCFG_DEF_RECOMMEND_COMMANDr   GLOBAL_CONFIG_FILEr   r
   r   r%   r'   r(   r   r   r   r   r      s    

)
tuned.logstuned	configobjr   r   r   r   tuned.exceptionsr   tuned.constsr/   tuned.utils.commandsr   __all__logsr   r   r   r   r   r   r   <module>   s    
