diff options
Diffstat (limited to 'src/yum/providers/util/common.py')
-rw-r--r-- | src/yum/providers/util/common.py | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/src/yum/providers/util/common.py b/src/yum/providers/util/common.py index 0cd5116..ba0d16d 100644 --- a/src/yum/providers/util/common.py +++ b/src/yum/providers/util/common.py @@ -38,7 +38,7 @@ import singletonmixin re_evra = re.compile(r'^(?P<epoch>\d+):(?P<ver>[^-]+)' r'-(?P<rel>.+)\.(?P<arch>[^.]+)$') -re_nevra = re.compile(r'^(?P<name>.+)-(?P<evra>(?P<epoch>\d+):(?P<ver>[^-]+)' +re_nevra = re.compile(r'^(?P<name>.+)-(?P<evra>((?P<epoch>\d+):)?(?P<ver>[^-]+)' r'-(?P<rel>.+)\.(?P<arch>[^.]+))$') rpmdb_path = '/var/lib/rpm/Packages' @@ -601,18 +601,14 @@ class YumPackage: if not m: raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, "Wrong SotwareElementID. Expected valid nevra" - " (name-epoch:version-release.arch).") + " (name-[epoch:]version-release.arch).") if op['Version'] != m.group('ver'): raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, "Version does not match version part in SoftwareElementID.") - kwargs = dict((k, m.group(k)) for k in - ('name', 'epoch', 'ver', 'rel', 'arch')) + evra = "{}:{}-{}.{}".format(*( + (m.group(k) if k != "epoch" or m.group(k) else "0") + for k in ("epoch", 'ver', 'rel', 'arch'))) with YumDB.getInstance(env) as yb: - if ( package_list == 'installed' - and not yb.rpmdb.installed(**kwargs)): - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "Package not installed") - pl = yb.doPackageLists(package_list, showdups=package_list != 'installed') if package_list != 'all': @@ -622,10 +618,10 @@ class YumPackage: pl = itertools.chain(pl.available, pl.installed) exact,_,_ = yum.packages.parsePackages(pl, [op['Name']]) for pkg in yum.misc.unique(exact): - if pkg.evra == m.group('evra'): break + if pkg.evra == evra: break else: raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "No matching package found") + "No matching package found.") return pkg @staticmethod @@ -928,29 +924,26 @@ class YumFileCheck: raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, "Version does not match version part in SoftwareElementID.") - kwargs = dict((k, m.group(k)) for k in - ('name', 'epoch', 'ver', 'rel', 'arch')) + evra = "{}:{}-{}.{}".format(*( + (m.group(k) if k != "epoch" or m.group(k) else "0") + for k in ("epoch", 'ver', 'rel', 'arch'))) with YumDB.getInstance(env) as yb: - if not yb.rpmdb.installed(**kwargs): - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "Package not installed") - pl = yb.doPackageLists('installed') exact, matched, unmatched = yum.packages.parsePackages( - pl.installed, [kwargs['name']]) + pl.installed, [m.group('name')]) exact = yum.misc.unique(exact) for pkg in exact: - if pkg.evra == m.group('evra'): break + if pkg.evra == evra: break else: raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "No matching package installed") + "No matching package installed.") - fi = pkg.hdr.fiFromHeader() - vpkg = yum.packages._RPMVerifyPackage(pkg, fi, - YumFileCheck.pkg_checksum_type(pkg), [], True) - if not op['Name'] in vpkg: - raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, - "File not found in RPM package") + fi = pkg.hdr.fiFromHeader() + vpkg = yum.packages._RPMVerifyPackage(pkg, fi, + YumFileCheck.pkg_checksum_type(pkg), [], True) + if not op['Name'] in vpkg: + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, + "File not found in RPM package.") return vpkg """ |