diff options
author | Michal Minar <miminar@redhat.com> | 2012-10-07 21:19:16 +0200 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2012-10-07 21:43:19 +0200 |
commit | 167c13bdf07c2a86ff7043b4b874073556858e69 (patch) | |
tree | d1044f5e4e121c660549c8652ec7c3b5808ba2a1 /src/yum/providers/util/common.py | |
parent | 1ae172139edb7648b3729b6459b9f9a6c02212b4 (diff) | |
download | openlmi-providers-167c13bdf07c2a86ff7043b4b874073556858e69.tar.gz openlmi-providers-167c13bdf07c2a86ff7043b4b874073556858e69.tar.xz openlmi-providers-167c13bdf07c2a86ff7043b4b874073556858e69.zip |
accept SoftwareElementID without epoch part0.0.8
in such case epoch is assumed to be 0
bumped Yum version
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 """ |