diff options
Diffstat (limited to 'src/software/openlmi/software/yumdb/process.py')
-rw-r--r-- | src/software/openlmi/software/yumdb/process.py | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/src/software/openlmi/software/yumdb/process.py b/src/software/openlmi/software/yumdb/process.py index 8ae6e46..2eb207f 100644 --- a/src/software/openlmi/software/yumdb/process.py +++ b/src/software/openlmi/software/yumdb/process.py @@ -442,15 +442,16 @@ class YumWorker(Process): raise TypeError("job must be instance of YumJob") try: handler = { - jobs.YumGetPackageList : self._handle_get_package_list, - jobs.YumFilterPackages : self._handle_filter_packages, - jobs.YumInstallPackage : self._handle_install_package, - jobs.YumRemovePackage : self._handle_remove_package, - jobs.YumUpdateToPackage: self._handle_update_to_package, - jobs.YumUpdatePackage : self._handle_update_package, - jobs.YumBeginSession : self._handle_begin_session, - jobs.YumEndSession : self._handle_end_session, - jobs.YumCheckPackage : self._handle_check_package, + jobs.YumGetPackageList : self._handle_get_package_list, + jobs.YumFilterPackages : self._handle_filter_packages, + jobs.YumInstallPackage : self._handle_install_package, + jobs.YumRemovePackage : self._handle_remove_package, + jobs.YumUpdateToPackage : self._handle_update_to_package, + jobs.YumUpdatePackage : self._handle_update_package, + jobs.YumBeginSession : self._handle_begin_session, + jobs.YumEndSession : self._handle_end_session, + jobs.YumCheckPackage : self._handle_check_package, + jobs.YumCheckPackageFile : self._handle_check_package_file, jobs.YumInstallPackageFromURI : \ self._handle_install_package_from_uri, jobs.YumGetRepositoryList : \ @@ -715,9 +716,9 @@ class YumWorker(Process): return installed[0] @_needs_database - def _handle_check_package(self, pkg): + def _handle_check_package(self, pkg, file_name=None): """ - @return PackageFile instance for requested package + @return PackageCheck instance for requested package """ if isinstance(pkg, basestring): pkgs = self._handle_filter_packages('installed', @@ -726,14 +727,24 @@ class YumWorker(Process): if len(pkgs) < 1: raise errors.PackageNotFound('No available package matches' ' nevra "%s".' % pkg) - pkg = pkgs[-1] + rpm = pkgs[-1] + pkg = self._transform_packages((rpm, ), cache_packages=False)[0] else: - pkg = self._lookup_package(pkg) - if not isinstance(pkg, yum.rpmsack.RPMInstalledPackage): - raise errors.PackageNotInstalled(pkg) - vpkg = yum.packages._RPMVerifyPackage(pkg, pkg.hdr.fiFromHeader(), - packagecheck.pkg_checksum_type(pkg), [], True) - return packagecheck.make_package_check_from_db(vpkg) + rpm = self._lookup_package(pkg) + if not isinstance(rpm, yum.rpmsack.RPMInstalledPackage): + raise errors.PackageNotInstalled(rpm) + vpkg = yum.packages._RPMVerifyPackage(rpm, rpm.hdr.fiFromHeader(), + packagecheck.pkg_checksum_type(rpm), [], True) + return (pkg, packagecheck.make_package_check_from_db(vpkg, + file_name=file_name)) + + @_needs_database + def _handle_check_package_file(self, pkg, file_name): + """ + @return PackageCheck instance for requested package containing + just one PackageFile instance for given ``file_name``. + """ + return self._handle_check_package(pkg, file_name) @_needs_database def _handle_install_package_from_uri(self, uri, |