summaryrefslogtreecommitdiffstats
path: root/src/software/lmi/software/yumdb/process.py
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2013-12-05 10:36:01 +0100
committerMichal Minar <miminar@redhat.com>2013-12-12 15:04:10 +0100
commit0ff1628666bc2ad52da91297c55a59d10b077e4e (patch)
tree50f4ef98cdfd5a234662678b0526abd89e29cc9e /src/software/lmi/software/yumdb/process.py
parent61f41e54ba8e153b8de97335e60624f890052633 (diff)
downloadopenlmi-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.py10
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)