a ”ˆ«hç ã@sfddlZddlZddlmZmZddlmZddlm Z ddl m Z dgZ ej  ¡ZGdd„dƒZdS)éN)Ú ConfigParserÚError)ÚTunedException)ÚcommandsÚ GlobalConfigc@speZdZejfdd„Zedd„ƒZejfdd„Zddd „Z dd d „Z dd d„Z gfdd„Z dd„Z ddd„ZdS)rcCsi|_|j|dtƒ|_dS)N)Ú file_name)Ú_cfgÚ load_configrÚ_cmd)ÚselfZ config_file©r ú=/usr/lib/python3.9/site-packages/tuned/utils/global_config.pyÚ__init__s zGlobalConfig.__init__cCs>dd„ttƒDƒ}tdd„|Dƒƒ}tdd„|Dƒƒ}||fS)ai Easy validation mimicking configobj Returns two dicts, first with default values (default None) global_default[consts.CFG_SOMETHING] = consts.CFG_DEF_SOMETHING or None second with configobj function for value type (default "get" for string, others eg getboolean, getint) global_function[consts.CFG_SOMETHING] = consts.CFG_FUNC_SOMETHING or get } cSs.g|]&}| d¡r| d¡s| d¡s|‘qS)ZCFG_Ú CFG_FUNC_ÚCFG_DEF_)Ú startswith©Ú.0Úoptr r r Ú s   ýz7GlobalConfig.get_global_config_spec..css0|](}tt|ƒttd|dd…dƒfVqdS)réN©ÚgetattrÚconstsrr r r Ú !óz6GlobalConfig.get_global_config_spec..css0|](}tt|ƒttd|dd…dƒfVqdS)rrNÚgetrrr r r r"r)ÚdirrÚdict)ÚoptionsZglobal_defaultZglobal_functionr r r Úget_global_config_specs z#GlobalConfig.get_global_config_specc Csnt d|¡zøtdddd}t|_t|ƒ.}| dtjd|  ¡|¡Wdƒn1s`0Y|  ¡\|_ }|  tj¡D]~}||j vrØz$t |||ƒ}|tj|ƒ|j |<WntyÔtd |ƒ‚Yn0q„t d ||f¡|jtj|d d |j |<q„Wnbty8}ztd |ƒ‚WYd}~n:d}~0tyh}ztd|ƒ‚WYd}~n d}~00dS)z& Loads global configuration file. z2reading and parsing global configuration file '%s'ú=ú#F)Z delimitersZinline_comment_prefixesÚstrictú[z] Nz2Global TuneD configuration file '%s' is not valid.z/Unknown option '%s' in global config file '%s'.T)Úrawz/Global TuneD configuration file '%s' not found.z3Error parsing global TuneD configuration file '%s'.)ÚlogÚdebugrÚstrZ optionxformÚopenZ read_stringrZMAGIC_HEADER_NAMEÚreadr rrrrrÚinforÚIOError)r rZ config_parserÚfZ_global_config_funcÚoptionÚfuncÚer r r r %s, <  ÿ zGlobalConfig.load_configNcCs|j ||¡S©N)rr©r ÚkeyÚdefaultr r r r@szGlobalConfig.getcCs |j | ||¡¡dkrdSdS)NÚ1TF)r Úget_boolrr2r r r r6CszGlobalConfig.get_boolrcCsZ|j ||¡}|rVt|tƒr |Sz t|dƒWStyTt dt|ƒ|f¡Yn0|S)Nrz'Error parsing integer '%s', using '%d'.)rrÚ isinstanceÚintÚ ValueErrorr&Úerrorr()r r3r4Úir r r Úget_intHs   zGlobalConfig.get_intcCsB|j ||¡}t|tƒr|S| ¡dkr,gSdd„t d|¡DƒS)NÚcSsg|] }| ¡‘qSr )Ústrip)rÚxr r r rZrz)GlobalConfig.get_list..z,|;)rrr7Úlistr>ÚreÚsplit)r r3r4Úvaluer r r Úget_listTs   zGlobalConfig.get_listcCs||j|<dSr1)r)r r3rCr r r Úset\szGlobalConfig.setcCsH| |¡}|dur|S|j |¡}|dur@t d||f¡|S|SdS)Nz%Error parsing value '%s', using '%s'.)rr Úget_sizer&r:)r r3r4ÚvalÚretr r r rF_s  zGlobalConfig.get_size)N)N)r)N)Ú__name__Ú __module__Ú __qualname__rZGLOBAL_CONFIG_FILErÚ staticmethodr r rr6r<rDrErFr r r r r s    )rAZ tuned.logsZtunedZtuned.utils.config_parserrrZtuned.exceptionsrZ tuned.constsrZtuned.utils.commandsrÚ__all__Zlogsrr&rr r r r Ús