ó æ ”\c@s¦ddlZddlZddlmZmZddljZddlZ ddl Z ddl Zddl Z ddl mZejjƒZdefd„ƒYZdS(iÿÿÿÿN(t ConfigObjtConfigObjError(tInvalidProfileExceptiontLoadercBs€eZdZdddddgZd„Zd„Zed„ƒZed „ƒZ d „Z d „Z d „Z d „Z d„ZRS(s Profiles loader. t_profile_locatort_profile_mergert_profile_factoryt_global_configt _variablescCs1||_||_||_||_||_dS(N(RRRRR(tselftprofile_locatortprofile_factorytprofile_mergert global_configt variables((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pyt__init__s     cCstjjj||ƒS(N(ttunedtprofilestprofiletProfile(R t profile_nametconfig((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pyt_create_profilescCstjd|ƒS(Ns^[a-zA-Z0-9_.-]+$(tretmatch(tclsR((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pyt safe_namescCs|jS(N(R(R ((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pyR "scCsGt|ƒtk r!|jƒ}ntt|j|ƒƒ}t|ƒdkrZtdƒ‚nt|ƒdkr‰tjddj |ƒƒntjd|dƒg}g}|j |||ƒt|ƒdkrä|j j |ƒ}n |d}dj |ƒ|_ d|jkr6|jj|jdjƒ|jd=n|j|ƒ|S( Nis.No profile or invalid profiles were specified.isloading profiles: %ss, sloading profile: %st R(ttypetlisttsplittfilterRtlenRtlogtinfotjoint _load_profileRtmergetnametunitsRt add_from_cfgtoptionst_expand_vars_in_devices(R t profile_namesRtprocessed_filest final_profile((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pytload&s(   cCs>x7|jD],}|jj|j|jƒ|j|_q WdS(N(R'Rtexpandtdevices(R Rtunit((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pyR*Csc CsåxÞ|D]Ö}|jj||ƒ}|dkrYtd|tt|jjƒƒfƒ‚n|j|ƒ|j|ƒ}|j j ||ƒ}d|j krÐ|j j |j jdƒƒ}|j|g||ƒn|j|ƒqWdS(Ns!Cannot find profile '%s' in '%s'.tinclude(Rt get_configtNoneRRtreversedt_load_directoriestappendt_load_config_dataRtcreateR)RR/tpopR$( R R+RR,R&tfilenameRRt include_name((s9/usr/lib/python2.7/site-packages/tuned/profiles/loader.pyR$Gs  + cCstjd||ƒS(Ns(?s