[/\c@sddlmZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZmZmZejjjZejjjZejjjZejjjZedZedZdefd YZd ZdS( i(t OrderedDictN(tEnableMultipleStreamsException(tlogger(t_tP_tucds6 Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalledsA Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive]t ModuleBasecBseZdZdZdZedZdZdZdZ dZ dZ ed Z d Z d Zed Zd ZdZedZdZedZdZdZdZdZdZdZRS(cCs ||_dS(N(tbase(tselfR((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyt__init__&sc Cs|j|\}}}}xQ|jD]C\}\}}|jr(tjtdj|j|jq(q(W|s|s|rtj j d|d|d|ndS(Ns%Ignoring unnecessary profile: '{}/{}'tno_match_group_specsterror_group_specstmodule_debsolv_errors( t!_resolve_specs_enable_update_sacktitemstprofileRtinfoRtformattnametdnft exceptionst MarkingErrors( Rt module_specstno_match_specst error_specst solver_errorst module_dictstspectnsvcapt module_dict((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pytenable)s cCsF|j|t\}}|s$|rBtjjd|d|ndS(NR R (t_modules_reset_or_disabletSTATE_DISABLEDRRR(RRRR((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pytdisable5s c CsF|j|\}}}}i}t}x8|jD]*\} \} } x| jD]\} } x| jD]\}}g|D]'}|jjj|jr|^q}|s|j| qong}|j|}| j r7|j |j | j |st j tdj| |j| qoqn|jjj| |}|swt j tdj| |nx[t|D]M}|j |}|st j tdj|| |n|j |qWx]|D]U}|jjj||jx0|jD]"}|j|tj| q WqWx!|D]}|j|jq<WqoWqVWq7W|jjjjd|j}g|jjjD]}|jr|j^q}|jjjjd|jd|j }|j!|}x|jD]\}}|j"d|}|s|jjjjd|}|sx*|D]"} t j tdj| qUWt j tdj||j |qqn|jj#j$j|t%j&j'|jj}|jd ||jj#jd |d | qW|s|s|rBt%j(j)d |d |d|ndS(Ns&Unable to match profile in argument {}s$No default profiles for module {}:{}s'Profile {} not matched for module {}:{}t nevra_stricttreponameRsUnable to resolve argument {}sNo match for package {}tpkgtselecttoptionalR R R (*R tsetRRt_moduleContainertisModuleActivetgetIdtappendt _get_latestRtextendt getProfilesRterrorRRtgetDefaultProfilestinstalltgetNamet getContentt setdefaulttaddtupdatet getArtifactstsacktquerytfiltermtapplytrepost iter_enabledtmodule_hotfixestidtkeystuniontfiltert_goalt group_membersRtselectortSelectorRR( RRtstrictRRRRt install_dicttinstall_set_artefactsRRt moduledictRt streamdicttstreamt module_listtxtinstall_module_listtprofilest latest_moduletprofiles_stringsRtmodule_profilestpkg_nametmoduletinstall_base_querytit hot_fix_reposthotfix_packagest set_specsR9tsltr((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyR1;sz  '        $ #1!    !cCs@|j|t\}}|r<tjjd|d|ndS(NR R (Rt STATE_UNKNOWNRRR(RRRR((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pytresetscCsg}xs|D]k}|j|\}}|sA|j|q ng|D]'}|jjj|jrH|^qH}|stjtdj |q n|j |t }t } x-|j D]\} } x| j D]\} } | j|j| ||j| }t |jjj|j}|s?qn|jr|j|j}|sfqnxw|D].}|j|krm| j|jqmqmWqx;|D]3}x*|j|D]}| j|jqWqWqWqW| s tjtdj |n|jjjjjd| }|r tjj|jj}|j d||jjjd|q q W|S(NsUnable to resolve argument {}s&Unable to match profile in argument {}RR$R%(t _get_modulesR+RR(R)R*RR/RRt_create_module_dict_and_enabletFalseR'RR6t)_get_package_name_set_and_remove_profilesR,tgetInstalledProfilesR2RR.R3R8R9t availableR:RRERFRCtupgrade(RRRRRMRRNtupdate_module_listRtupgrade_package_setRRKRLtmodule_list_from_dictRQtinstalled_profiles_stringst profiles_setRtprofile_stringR9R[((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyRdsP   '      #$cCsbg}t}x|D]}|j|\}}|sJ|j|qn|j|t}g}xS|jD]E\} } x6| jD](\} } |j|j| |tqWqoW|st j t dj |n|j |qW|r^|jjj} |j| }|r^|jjjjjd|}|r[|jj|q[q^n|S(Ns&Unable to match profile in argument {}R(R'R^R+R_R`RR-RatTrueRR/RRR6RR(tgetInstalledPkgNamest differenceR8R9t installedR:t_remove_if_unneeded(RRRtremove_package_setRRMRRtremove_packages_namesRRKRLRgtkeep_pkg_namesR9((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pytremoves0    $c Cstj|}x|jD]}|jr4|jnd}|jrL|jnd}d}|jrj|jnd}|jr|jnd}|jr|jdkrt|j}n|j j j |||||} | r| |fSqWdS(Nti(((N( thawkeytSubjecttnsvcap_possibilitiesRRLtcontexttarchtversiontstrRR(R9tNone( Rt module_spectsubjRRRLRzRxRytmodules((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyR^s!cCsSd}|rO|d}x6|dD]'}|j|jkr!|}q!q!Wn|S(Nii(R|t getVersion(RRMtlatestRU((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyR,s c Csi}x?|D]7}|j|jij|jgj|q Wx]|jD]O\}}|jjj|}t|dkrn|t kr|t kr|t krt |n|t kr|jjj |}n|jjj|}| s||krt |nxt|jD]>} | |kr`|r)|jjj|| q)q)n|| =q)WqU|rUx-|jD]} |jjj|| qWqUqUW|S(Ni(R4R2t getStreamR+RRR(tgetModuleStatetlent STATE_DEFAULTt STATE_ENABLEDR RtgetEnabledStreamtgetDefaultStreamtsortedR@R( RRMRt moduleDictRUt moduleNamet streamDictt moduleStateRLtkey((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyR_s4 /   cCsg}g}i}x|D]}|j|\}}|sM|j|qny&|j|t}||f||R?R8tfilter_modulesR(tconft installrootR|t debug_solverRtvaluestenableDependencyTreetlibdnfRUtVectorModulePackagePtr(RRRt error_specRRRMRRteRWRXRRRR((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyR s<   $1   ,c Csg}x |D]}|j|\}}|s]tjtdj||j|q n|jrtjtdj|j|jnt }x!|D]}|j |j qWxR|D]J} |t kr|j jj| n|tkr|j jj| qqWq Wg|j jjD]} | jr'| j^q'} |j jj|j j| |j jj|j jjdtd|j jj} || fS(NsUnable to resolve argument {}s%Ignoring unnecessary profile: '{}/{}'t update_onlyt debugsolver(R^RR/RRR+RRRR'R5R2R\RR(R]R R!R<R=R>R?R8RRRtmodule_platform_idRkR( RRtto_stateRRRMRt module_namesRURRWRXR((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyR(s0        1 c Cs0t}|j|}t|jjj|j}|sFtS|jr|j|j}|sntSx|D]S}|j|kru|r|jjj||jn|j |j ququWn]xZ|D]R} |r|jjj|| nx*|j| D]}|j |j q WqW|S(N( R'R,RR(RbR2RR.t uninstallR6R3( RRMRRstpackage_name_setRQRhRiRRj((s:/usr/lib/python2.7/site-packages/dnf/module/module_base.pyRaCs*    c Cs*t}x |D]}|j|\}}|sStjtdj|qn|jrtjtdj|j|jnx|D]}t}|j |ds$       4