3 %Tf.@sddlZddlZddlZddlZddlmZddlmZddlmZddlm Z ej Z dZ ddd d d d d gZ d!ddZd"ddZd#dd Zd$dd Zd%dd Zd&dd ZddZd'dd Zd(ddZggdddfddZddZdd ZdS))N) up2dateLog)config)rpmUtils)rhnPackageInfoz/var/lib/up2date/dbtimestampupdateremove refresh_list fullUpdatecheckNeedUpdaterunTransactionverifycsj|rddifSt|ts"ddifStjd|tddd}|jjjfd d |D}t||d|d S) z0We have been told that we should remove packagesrzno-ops for caching z$Invalid arguments passed to functionzCalled remove_packagesTF)load_system_repoload_available_reposcsg|]}t|qS)_package_tup2obj).0tup) installedr/usr/lib/python3.6/packages.py :szremove..)r allow_erasing cache_only) isinstancelistlog log_debug _dnf_basesackqueryr_dnf_transaction) package_listrbase to_remover)rrr-s     cCst|tsddifStjd|tddd}|jjj}|jjj}d}g}g}x"|D]}t |dkrx|j d|\} } } } } | dkr| dkr| dkr| dkr|j | d rtjd | q\| dkrd } |j | | d j }t ||}|sd t|}tjd||j |q\x`|D]N}|j|}|d krHtjdt|Pn|d krtjdt|PqW|j |q\W|s|rdddj|dddf}n d dif}|jj|j|St|||dS)z:We have been told that we should retrieve/install packagesr z$Invalid arguments passed to functionz Called updateT)rrN)namezPackage %s is already installedr)r&archz,Package %s is not available for installationzE: zPackage %s already installedz6More recent version of package %s is already installed z-Failed: Packages failed to install properly:  1package_install_failure)versionr&z$Requested packages already installed)installr)rrrrrrrr availablelenappendfilterZlatestr_package_tup2strZlog_meZevr_cmpjoin_plugins_unloadcloser )r!rr"rr.errZerrmsgs to_installpackager&r,releaseepochr'pkgsZ requested_pkgpkgZpkg_cmpretrrrr?s`                   c Cs|rddifStddd}|jjj}|jjj}g}g}xd|dddD]P}|\}} t||} | dkr~| r~|j| qP| dkrP| rPt||} |j| qPW| r| rdd ifSt|||d|d S) z Run a transaction on a group of packages. This was historicaly meant as generic call, but is only called for rollback. rzno-ops for cachingT)rrpackagesNeiz6Requested package actions have already been performed.)r-rrr)rrrrr.rr0r ) Ztransaction_datarr"rr.r8r#Zpackage_objectr9actionr=newrrrr s&        cCstddd}t|d|dS)z$ Update all packages on the system. T)rr) full_updater)rr )forcerr"rrrr s c Cs|rddifSi}d}tj}|dr.|d}d|}ytj|d}Wndd|fSytjtd}Wnd}YnX||dkrdd |fS|dkryttd }|jWndd |fStd d S)z Check if the locally installed package list changed, if needed the list is updated on the server In case of error avoid pushing data to stay safe rzno-ops for cachingz /var/lib/rpmdbpathz %s/Packageszunable to stat the rpm database zNrpm database not modified since last update (or package list recently updated)zw+z!unable to open the timestamp file)rhnsd)rZinitUp2dateConfigosstatLAST_UPDATE_FILEopenr6r) rJrdatarFZcfgZRPM_PACKAGE_FILEZdbtimeZlastfilerrrr s4       c CsR|rddifStjdd}y tjWntdddifStddifS) z3 push again the list of rpm packages to the server rzno-ops for cachingzCalled refresh_rpmlistNz8ERROR: refreshing remote package list for System ProfilezError refreshing package listzrpmlist refreshed)rrrZupdatePackageProfileprinttouch_time_stamp)rJrr>rrrrs    cCs^yttd}|jWnddifStj}ytjt||fWnddtifSdS)Nzw+rz!unable to open the timestamp filez6unable to set the time stamp on the time stamp file %s)rNrMr6timerKutime)Zfile_dtrrrrSs   rScCsvtjd|rddifSi}d|d<d|d<tj|\}}||d<t|rld|d<d|d<||d <d d |fSdd |fS) NzCalled packages.verifyrzno-ops for cachingzpackages.verifyr&r,Z verify_infoz packages.verify.missing_packagesmissing_packages+z-packages requested to be verified are missingzpackages verified)rrrZverifyPackagesr/)r?rrOr>rWrrrr s   TcCs6tj}|jjs|j|r$|j|jddd|S)NT)rr)dnfZBaser4ZpluginsZ init_pluginsZread_all_reposZ fill_sack)rrr"rrrr srFc Cszy|r|jn8x|D]}|r|j|qWx|D]}|r6|j|q6W|j|tjdt|jsvtj j d|jj rtjddd|jj D|j |jj |jj rtjddd|jj D|s|jWntj jk r }z&i}d|d <d |d <d d t||fSd}~Xntj jk rf}z&i}d|d <d|d <ddt||fSd}~Xntj jk r}z&i}d|d <d|d <ddt||fSd}~Xn@tj j k r}zd} dt|} i}| | |fSd}~XnXWd|jj|jXddifS)zE command is an function excpecting dnf.Base() as an argument zDependencies Resolvedzempty transactionzDownloading and installing: cSsg|] }t|qSr)str)rprrrr-sz$_dnf_transaction..z Removing: cSsg|] }t|qSr)rZ)rr[rrrr1sr*r,r+r&r(z/Failed: Packages failed to install properly: %sNrZrpmremoveerrorsz%sZ failed_depsz9Failed: packages requested raised dependency problems: %sz)Error while executing packages action: %szUpdate Succeeded)r^)Z upgrade_allZpackage_installZpackage_removeZresolverrr/Z transactionrY exceptionsErrorZ install_setZdownload_packagesZ remove_setZdo_transactionZ MarkingErrorrZZ DepsolveErrorr4r5r6) r"r-rrDrrr=r@rOZstatusmessagerrrr s^          r c Cs|dd\}}}}t|dkr(|dnd}d|i}|dk rPt|dkrP||d<|dk rlt|dkrl||d<|dk rt|dkrt||d<|dk rt|dkr||d<|jf|j}|r|dSdS)Nr&rr,r:r;r')r/intr1Zrun) qrr&r,r:r;r'rr<rrrrUs rcCsD|dd\}}}}}|sd}d||||f}|r>|d|7}|fS)z6 Create a package name from an rhn package tuple. N0z %s-%s:%s-%sz.%sr)Z package_tupnvrr@aZpkginforrrr2gs r2)N)N)N)rN)NN)NN)N)TT)rKrTZdnf.exceptionsrYZdnf.cliZup2date_clientrrrrZinitLogrrMZ __rhnexport__rrr r r rrSr rr rr2rrrrs:      E  )   =