summaryrefslogtreecommitdiffstats
path: root/src/software/openlmi/software/yumdb/process.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/software/openlmi/software/yumdb/process.py')
-rw-r--r--src/software/openlmi/software/yumdb/process.py47
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,