ó ±2öYc@sddlZddlZddlZddlTddlZddlTddlm Z ddl j Z ej j ƒZdejfd„ƒYZdS(iÿÿÿÿN(t*(tcommandst ModulesPlugincBsbeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z e d„Z d „Z RS( s6 Plugin for applying custom kernel modules options. cOs5t|j|ƒj||Žt|_tƒ|_dS(N(tsupert __class__t__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}xI|jjƒD]8\}}|jj|ƒ}|jj|ƒ} |sË|jjd|gƒ\}} |dkr¨t}t j dƒqË|dkrËt j d|ƒqËn|sÝ|dkr2t | ƒdkr'| dd!dkr't jd d| ƒ} |j|ƒnt | ƒdkrV|d |d | d 7}qjt jd |ƒq2q2W|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 Rtitemst _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ƒ}xb|jjƒD]Q\}}|jj|ƒ}|jj|ƒ}tjdd|ƒ}d|} tj j | ƒs­t }t j tjd|ƒq+t jtjd|ƒ|j|ƒ} x¥| D]} | jdƒ} t| ƒdkrt jd || fƒqÛ|j| d | d |jj| d |j| d ƒd ddtƒ|ƒt krÛt }qÛqÛWq+W|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(tcompileRR#R$R%R)tosR;texistsR RR&R,tSTR_VERIFY_PROFILE_FAILR.tSTR_VERIFY_PROFILE_OKtsplitR'Rt _verify_valueRt read_fileR<tNone( R Rtignore_missingtrettrR3R4RR5tmpathR6titemtarg((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( RRGR,R-RRER'R(R@tsearchRHtjoinR+(R R0R6titjtllRK((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyR"ks    ( t__name__t __module__t__doc__RRRRR7R<ROR RQR"(((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyR s       (R(tos.pathRAtbaset decoratorst tuned.logsttunedt subprocessttuned.utils.commandsRt tuned.constsR,tlogstgetRtPluginR(((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyts