+cc@sddlZddlmZddlTddlZddlTddlmZddl j Z ddl Z ddl Z ej jZddgZdd gZd ejfd YZd Zd ZdZdZdZedZdS(iNi(tbase(t*(tcommandstbase_reachable_timet retrans_times /run/sysctl.ds /etc/sysctl.dt SysctlPlugincBsGeZdZdZdZdZdZdZedZ RS(s. Plugin for applying custom sysctl 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_sysctl.pyRs cCst|_t|_|j|j}|jj|i|_t |jdkrt j d|j |i|_|jj |n|j|_dS(Nis0recovering old sysctl settings from previous run(tFalset_has_dynamic_tuningRt_has_static_tuningt _storage_keytnamet_storagetgett_sysctl_originaltlentlogtinfot_instance_unapply_statictunsettoptionst_sysctl(R tinstancet storage_key((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyt_instance_inits     cCs&|j|j}|jj|dS(N(RRRR(R RR((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyt_instance_cleanup+scCs xt|jjD]\}}t|}|dkrNtjd|q|jj|j j |}|j ||}|dk r||j |t|jD]*}||}d||f}t|qWtddS(Ns.confs%s/%ss/etc/sysctl.conf(tSYSCTL_CONFIG_DIRStostlistdirtendswithtsortedtkeyst_apply_sysctl_config_file(tfilestdtflisttfnametpath((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyR1Vs     c Cstjd|y]t|d7}x-t|dD]\}}t|||q6WWdQXtjd|WnKttfk r}|jtjkrtj d|t |fqnXdS(Ns%Applying sysctl settings from file %stris.Finished applying sysctl settings from file %ss.Error reading sysctl settings from file %s: %s( Rtdebugtopent enumeratet_apply_sysctl_config_linetOSErrortIOErrorterrnotENOENTR%tstr(RMtftlinenotlinete((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyRHis   cCs|j}t|dks>|ddks>|ddkrBdS|jdd}t|dkrtjd||fdS|\}}|j}t|dkrtjd||fdS|j}t||dtdS( Nit#t;t=iis Syntax error in file %s, line %dR9(tstripRtsplitRR%R*R(RMRYRZttmpR2R3((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyRRvs  2     cCsd|jddS(Ns /proc/sys/%st.t/(treplace(R2((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyt_get_sysctl_pathscCst|}yt|dW}d}x;t|D]-\}}|dkr4tjd|dSq4W|j}WdQXtjd||f|SWn]tt fk r}|j t j krtjd|ntjd|t |fdSXdS(NRNtisGFailed to read sysctl parameter '%s', multi-line values are unsupporteds&Value of sysctl parameter '%s' is '%s'sBFailed to read sysctl parameter '%s', the parameter does not exists(Failed to read sysctl parameter '%s': %s( ReRPRQRR%R$R_RORSRTRURVRW(R2RMRXRZtiR3R[((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyR#s(       cCst|}tjj|tkr9tjd|tSyDtjd||ft |d}|j |WdQXt SWn{t t fk r}|jtjkr|rtjntj}|d||fn tjd||t|ftSXdS(Ns+Refusing to set deprecated sysctl option %ss%Setting sysctl parameter '%s' to '%s'twsIFailed to set sysctl parameter '%s' to '%s', the parameter does not exists/Failed to set sysctl parameter '%s' to '%s': %s(ReRCRMtbasenametDEPRECATED_SYSCTL_OPTIONSRR%RRORPtwriteRRSRTRURVRW(R2R3R9RMRXR[tlog_func((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyR*s&    (treRfRt decoratorst tuned.logsttunedt subprocessttuned.utils.commandsRt tuned.constsR.RURCtlogsRRRjRBtPluginRR1RHRRReR#RR*(((s?/usr/lib/python2.7/site-packages/tuned/plugins/plugin_sysctl.pyts&        E