ó +cc@sÄddlmZddlZddlZddlmZddlZddljZddlm Z ddl m Z dgZ ej jƒZdefd„ƒYZdejjjfd „ƒYZdS( iÿÿÿÿ(texportsN(tTunedException(tcommands(tProfileRecommendert Controllert TimerStorecBs,eZd„Zd„Zd„Zd„ZRS(cCstƒ|_tjƒ|_dS(N(tdictt_timerst threadingtLockt _timers_lock(tself((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt__init__s cCs!|j||j|tS|jj ƒsTtSn|jj ƒS(NR8( tFalseRR#R$R%R&Rt is_runningtTruet is_enabledR"(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyR"ms cCsH|dkrtS|jjƒs(t}n|jjƒ}|jjƒ|S(NR8(RARRBRCR(RR(R R?R)((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyR(xs   cCs{|dkrtS|jjƒr8|jƒ}|s8tSny|jjƒWn%tk rp}tjd|ƒtSX|jƒS(NR8sFailed to reload Tuned: %s( RARRBR(treload_profile_configRR terrorR"(R R?tstop_okte((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytreloadƒs  cCs |jjƒ}d}t}t}z«y3|rC|jjdtƒn|jj||ƒWnqtjjk rÊ}t}t |ƒ}|r¶|jj j |kr¶t j d|ƒt}qËt j d|ƒnXWd|r|rït jd|ƒn|st jdƒn|jjƒnX||fS(NtOKtprofile_switchs@Failed to reapply profile '%s'. Did it change on disk and break?sFailed to apply profile '%s's>Applying previously applied (possibly out-dated) profile '%s'.s$Applying previously applied profile.(RRBRCRAR(t set_profileR2t exceptionsRtstrtprofiletnameR RFtwarnR!R"(R R.tmanualt was_runningtmsgtsuccesstreapplyRH((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt_switch_profile’s.  s(bs)cCs&|dkrtdfS|j|tƒS(NR8t Unauthorized(RARWRC(R R.R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytswitch_profile­s  cCs2|dkrtdfS|jƒ}|j|tƒS(NR8RX(RAtrecommend_profileRW(R R?R.((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt auto_profile³s   cCs7|dkrdS|jjdk r/|jjjSdSdS(NR8(RROR;RP(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytactive_profileºs   s(ss)cCs°|dkrdS|jj}|dkrŽy4|jjƒ\}}|dkr[|dk }nWqŽtk rŠ}d}t|ƒ}||fSXn|rtjntj }|dfS(NR8tunknownRX(sunknowns Unauthorized( RRRR;Rtget_active_profileRRNR$tACTIVE_PROFILE_MANUALtACTIVE_PROFILE_AUTO(R R?RRRORHtmodeRF((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt profile_modeÃs     cCs^|dkrtS|jjƒr/|jjƒn|jjƒrZ|jjdtdtƒntS(NR8tsave_instantly(RARRBR(RDRLR;RC(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytdisableÕs cCs|dkrtS|jjƒS(NR8(RARRB(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyRBßs tascCs#|dkrgS|jjjjƒS(NR8(Rtprofile_loadertprofile_locatortget_known_names(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytprofilesås sa(ss)cCs#|dkrgS|jjjjƒS(NR8(RRfRgtget_known_names_summary(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt profiles2ës s(bsss)cCsw|dkrttdddƒS|dks7|dkrF|jƒ}nt|jjjj|tj tj gdgƒƒS(NR8( ttupleRAR;R\RRfRgtget_profile_attrsR$tPROFILE_ATTR_SUMMARYtPROFILE_ATTR_DESCRIPTION(R R.R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt profile_infoñs  cCs9|dkrdStƒjd|jjtjtjƒ ƒS(NR8t hardcoded(Rt recommendRR#R$tCFG_RECOMMEND_COMMANDtCFG_DEF_RECOMMEND_COMMAND(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyRZùs cCs#|dkrtS|jjdtƒS(NR8tignore_missing(RARtverify_profile(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyRvÿs cCs#|dkrtS|jjdtƒS(NR8Ru(RARRvRC(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytverify_profile_ignore_missings s a{sa{ss}}cCs¡|dkrtSi}x„|jjƒD]s}|jjdƒdjddƒd}|jƒ}i||s