\c@sddlZddlZddlmZddlTddlZddlTddl m Z ddl j Z ej jZdejfdYZdS(iNi(tbase(t*(tcommandst ModulesPlugincBsbeZdZdZdZdZdZdZdZdZ e dZ 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_cleanupscCsx|D]}|jjdd|g\}}|dkrKtjddS|dkrwtjd||jfn|jjd|g\}}|dkrtjd||jfqqWdS(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|jd}d}t}g}xOt|jjD]8\}}|jj|}|jj|} |s|jjd|g\}} |dkrt }t j dq|dkrt j d|qn|s|dkr8t | dkr-| dd!dkr-tjd d| } |j|nt | dkr\|d |d | d 7}qpt jd |q8q8W|jjtj|t |} | dkr|j|t |j| krt jtjqndS(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|jddS(Nt/R(tstrtreplace(R tpath((s@/usr/lib/python2.7/site-packages/tuned/plugins/plugin_modules.pyt _unquote_pathIsc Cst}t}tjd}xht|jjD]Q\}}|jj|}|jj|} tjdd| } d|} t j j | st }t jtjd|q1t jtjd||j| } x| D]} | jd} t| dkr"t jd || fq|j| d | d |jj| d |j| d d ddt|t krt }qqWq1W|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|jndS(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