diff options
author | Michal Minar <miminar@redhat.com> | 2013-12-05 10:36:01 +0100 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2013-12-12 15:04:10 +0100 |
commit | 0ff1628666bc2ad52da91297c55a59d10b077e4e (patch) | |
tree | 50f4ef98cdfd5a234662678b0526abd89e29cc9e /src/software/lmi/software/yumdb/process.py | |
parent | 61f41e54ba8e153b8de97335e60624f890052633 (diff) | |
download | openlmi-providers-0ff1628666bc2ad52da91297c55a59d10b077e4e.tar.gz openlmi-providers-0ff1628666bc2ad52da91297c55a59d10b077e4e.tar.xz openlmi-providers-0ff1628666bc2ad52da91297c55a59d10b077e4e.zip |
software: correctly recognize installed from available
When available packages were searched, they were all treated as not
installed. Yum uses two different classes to represent installed and
available packages and the same package may instantiated from both of
them.
Resolves: #1039025
Diffstat (limited to 'src/software/lmi/software/yumdb/process.py')
-rw-r--r-- | src/software/lmi/software/yumdb/process.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/software/lmi/software/yumdb/process.py b/src/software/lmi/software/yumdb/process.py index 9711511..9069f72 100644 --- a/src/software/lmi/software/yumdb/process.py +++ b/src/software/lmi/software/yumdb/process.py @@ -25,7 +25,6 @@ Module holding the code of separate process accessing the YUM API. import errno from functools import wraps -from itertools import chain import logging from multiprocessing import Process import os @@ -46,6 +45,7 @@ from lmi.software.yumdb import packageinfo from lmi.software.yumdb import packagecheck from lmi.software.yumdb import repository from lmi.software.yumdb.jobmanager import JobManager +from lmi.software.yumdb.util import is_pkg_installed from lmi.software.yumdb.util import setup_logging # Global variable which gets its value after the start of YumWorker process. @@ -330,7 +330,7 @@ class YumWorker(Process): self._pkg_cache.clear() res = [] for orig in packages: - pkg = packageinfo.make_package_from_db(orig) + pkg = packageinfo.make_package_from_db(orig, self._yum_base.rpmdb) if cache_packages is True: self._pkg_cache[pkg.objid] = orig res.append(pkg) @@ -635,7 +635,7 @@ class YumWorker(Process): pkg_desired = pkgs[-1] else: pkg_desired = self._lookup_package(pkg) - if isinstance(pkg_desired, yum.rpmsack.RPMInstalledPackage): + if is_pkg_installed(pkg_desired, self._yum_base.rpmdb): if force is False: raise errors.PackageAlreadyInstalled(pkg) action = "reinstall" @@ -715,7 +715,7 @@ class YumWorker(Process): pkg = pkgs[-1] else: pkg = self._lookup_package(pkg) - if not isinstance(pkg, yum.rpmsack.RPMInstalledPackage): + if not is_pkg_installed(pkg, self._yum_base.rpmdb): raise errors.PackageNotInstalled(pkg) kwargs = { "name" : pkg.name, "arch" : pkg.arch } if any(v is not None for v in (to_epoch, to_version, to_release)): @@ -753,7 +753,7 @@ class YumWorker(Process): pkg = self._transform_packages((rpm, ), cache_packages=False)[0] else: rpm = self._lookup_package(pkg) - if not isinstance(rpm, yum.rpmsack.RPMInstalledPackage): + if not is_pkg_installed(rpm, self._yum_base.rpmdb): raise errors.PackageNotInstalled(rpm) vpkg = yum.packages._RPMVerifyPackage(rpm, rpm.hdr.fiFromHeader(), packagecheck.pkg_checksum_type(rpm), [], True) |