ó æ ”\c@s“ddlZddlZddlmZddlTddlZddlTddl m Z ddl j Z ej jƒZdejfd„ƒYZdS(iÿÿÿÿNi(tbase(t*(tcommandst ModulesPlugincBsbeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z e d„Z d „Z RS( s6 Plugin for applying custom kernel modules options. cOs2tt|ƒj||Žt|_tƒ|_dS(N(tsuperRt__init__tTruet_has_dynamic_optionsRt_cmd(tselftargstkwargs((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyRs cCs"t|_t|_|j|_dS(N(tFalset_has_dynamic_tuningRt_has_static_tuningtoptionst_modules(R tinstance((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt_instance_inits  cCsdS(N((R R((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt_instance_cleanupscCsÉxÂ|D]º}|jjdd|gƒ\}}|dkrKtjdƒdS|dkrwtjd||jƒfƒn|jjd|gƒ\}}|dkrtjd||jƒfƒqqWdS(Ntmodprobes-risN'modprobe' command not found, cannot reload kernel modules, reboot is requireds$cannot remove kernel module '%s': %ss:cannot insert/reinsert module '%s', reboot is required: %s(Rtexecutetlogtwarntdebugtstrip(R tmodulestmoduletretcodetout((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt_reload_moduless !     c CsÞ|jƒd}d}t}g}xOt|jjƒƒD]8\}}|jj|ƒ}|jj|ƒ} |sÑ|jjd|gƒ\}} |dkr®t }t j dƒqÑ|dkrÑt j d|ƒqÑn|sã|dkr8t | ƒdkr-| dd!dkr-tjd d| ƒ} |j|ƒnt | ƒdkr\|d |d | d 7}qpt jd |ƒq8q8W|jjtj|ƒt |ƒ} | dkrÚ|j|ƒt |jƒ| krÚt jtjƒqÚndS(Ntitmodinfos8'modinfo' command not found, not checking kernel moduless)kernel module '%s' not found, skipping itiis+rs^\s*\+r\s*,?\s*soptions t s sKmodule '%s' doesn't have any option specified, not writing it to modprobe.d(t_clear_modprobe_fileR tlistRtitemst _variablestexpandRRRRRterrortlentretsubtappendRt write_to_filetconstst MODULES_FILERtinfotSTR_HINT_REBOOT( R RtsRt skip_checkt reload_listtoptiontvalueRtvRtl((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt_instance_apply_static*s8 "  %   cCst|ƒjddƒS(Nt/R(tstrtreplace(R tpath((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt _unquote_pathIsc CsŠt}t}tjdƒ}xht|jjƒƒD]Q\}}|jj|ƒ}|jj|ƒ} tjdd| ƒ} d|} t j j | ƒs³t }t jtjd|ƒq1t jtjd|ƒ|j| ƒ} x¥| D]} | jdƒ} t| ƒdkr"t jd || fƒqá|j| d | d |jj| d |j| d ƒd ddtƒ|ƒt krát }qáqáWq1W|S(Ns\s+s^\s*\+r\s*,?\s*Rs/sys/module/%ssmodule '%s' is not loadedsmodule '%s' is loadedt=is.unrecognized module option for module '%s': %siis /parameters/terr_rettno_error(RR)tcompileR#RR$R%R&R*tosR<texistsR RR'R-tSTR_VERIFY_PROFILE_FAILR/tSTR_VERIFY_PROFILE_OKtsplitR(Rt _verify_valueRt read_fileR=tNone(R Rtignore_missingtdevicestrettrR4R5RR6tmpathR7titemtarg((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt_instance_verify_staticLs,"  0cCs|r|jƒndS(N(R"(R Rt full_rollback((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt_instance_unapply_staticgscCsã|jjtjdtƒ}|jdƒ}d}}t|ƒ}tjdƒ}xB||kr“|j ||ƒdkr†|}|}n|d7}qRWdj |d|!ƒ}t|ƒdkrÉ|d7}n|jj tj|ƒdS(NR@s is^\s*#i( RRHR-R.RRFR(R)RAtsearchRItjoinR,(R R1R7titjtllRM((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyR"ks    ( t__name__t __module__t__doc__RRRRR8R=RQR RSR"(((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyR s       (R)tos.pathRBRRt decoratorst tuned.logsttunedt subprocessttuned.utils.commandsRt tuned.constsR-tlogstgetRtPluginR(((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyts