\c@sddlmZddlZddlZddlZddlTddlZddl Tddl m Z ej j ZdejfdYZdS(i(tbaseiN(t*(tcommandst SysfsPlugincBsbeZdZdZdZdZdZdZedZ dZ dZ d Z RS( sR Plugin for applying custom sysfs options, using specific plugins is preferred. cOs2tt|j||t|_t|_dS(N(tsuperRt__init__tTruet_has_dynamic_optionsRt_cmd(tselftargstkwargs((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyRs cCsjt|_t|_tgt|jjD]&}tj j |d|df^q+|_ i|_ dS(Nii( tFalset_has_dynamic_tuningRt_has_static_tuningtdicttlisttoptionstitemstostpathtnormpatht_sysfst_sysfs_original(R tinstancet key_value((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyt_instance_inits  KcCsdS(N((R R((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyt_instance_cleanupscCsxt|jjD]\}}|jj|}x`tj|D]O}|j|r|j||j |<|j ||qDt j d|qDWqWdS(Ns)rejecting write to '%s' (not inside /sys)( RRRt _variablestexpandtglobtiglobt _check_sysfst _read_sysfsRt _write_sysfstlogterror(R Rtkeytvaluetvtf((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyt_instance_apply_static"s"c Cst}xt|jjD]\}}|jj|}x_tj|D]N}|j|rJ|j |} |j ||| |t krt }qqJqJWqW|S(N( RRRRRRRRR R!t _verify_valueR ( R Rtignore_missingtdevicestretR%R&R'R(tcurr_val((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyt_instance_verify_static,s"cCs:x3t|jjD]\}}|j||qWdS(N(RRRR"(R Rt full_rollbackR%R&((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyt_instance_unapply_static7s"cCstjd|S(Ns^/sys/.*(tretmatch(R t sysfs_file((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyR ;scCsE|jj|j}t|dkr=|jj|tSdSdS(Ni(Rt read_filetstriptlentget_active_optionR tNone(R R4tdata((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyR!>scCs|jj||S(N(Rt write_to_file(R R4R&((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyR"Es( t__name__t __module__t__doc__RRRR)R/R R1R R!R"(((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyR s      (tRRR2tos.pathRt decoratorst tuned.logsttunedt subprocessttuned.utils.commandsRtlogstgetR#tPluginR(((s>/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysfs.pyts