+cc@sddlmZddlZddlZddlmZddlZddljZddlm Z ddl m Z dgZ ej jZdefdYZdejjjfd YZdS( i(texportsN(tTunedException(tcommands(tProfileRecommendert Controllert TimerStorecBs,eZdZdZdZdZRS(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|jjs(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|jjr8|j}|s8tSny|jjWn%tk rp}tjd|tSX|jS(NR8sFailed to reload Tuned: %s( RARRBR(treload_profile_configRR terrorR"(R R?tstop_okte((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytreloads  cCs |jj}d}t}t}zy3|rC|jjdtn|jj||Wnqtjjk r}t}t |}|r|jj j |krt j d|t}qt j d|nXWd|r|rt jd|n|st jdn|jjnX||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_profiles.  s(bs)cCs&|dkrtdfS|j|tS(NR8t Unauthorized(RARWRC(R R.R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytswitch_profiles  cCs2|dkrtdfS|j}|j|tS(NR8RX(RAtrecommend_profileRW(R R?R.((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt auto_profiles   cCs7|dkrdS|jjdk r/|jjjSdSdS(NR8(RROR;RP(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytactive_profiles   s(ss)cCs|dkrdS|jj}|dkry4|jj\}}|dkr[|dk }nWqtk 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_modes     cCs^|dkrtS|jjr/|jjn|jjrZ|jjdtdtntS(NR8tsave_instantly(RARRBR(RDRLR;RC(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytdisables cCs|dkrtS|jjS(NR8(RARRB(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyRBs tascCs#|dkrgS|jjjjS(NR8(Rtprofile_loadertprofile_locatortget_known_names(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pytprofiless sa(ss)cCs#|dkrgS|jjjjS(NR8(RRfRgtget_known_names_summary(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyt profiles2s s(bsss)cCsw|dkrttdddS|dks7|dkrF|j}nt|jjjj|tj tj gdgS(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_infos  cCs9|dkrdStjd|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.pyRZs cCs#|dkrtS|jjdtS(NR8tignore_missing(RARtverify_profile(R R?((s;/usr/lib/python2.7/site-packages/tuned/daemon/controller.pyRvs cCs#|dkrtS|jjdtS(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|jjD]s}|jjddjddd}|j}i||s