From 50017e71e2811f8c8b699a4da0bad22ee37a3c5a Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Thu, 19 Mar 2009 16:31:17 +0000 Subject: YUMng: Switch to yum lib calls instead of parsing command output (thanks to Seth for pointers) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5130 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Client/Tools/YUMng.py | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/lib/Client/Tools/YUMng.py b/src/lib/Client/Tools/YUMng.py index 3baacb32a..0ebf35313 100644 --- a/src/lib/Client/Tools/YUMng.py +++ b/src/lib/Client/Tools/YUMng.py @@ -5,6 +5,8 @@ import Bcfg2.Client.XML import Bcfg2.Client.Tools.RPMng import ConfigParser, sys, os.path, copy +import yum + try: set except NameError: @@ -55,26 +57,16 @@ class YUMng(Bcfg2.Client.Tools.RPMng.RPMng): Bcfg2.Client.Tools.RPMng.RPMng.__init__(self, logger, setup, config) self.yum_avail = dict() self.yum_installed = dict() - for line in self.cmd.run('yum list updates --noplugins')[1][1:]: - try: - pinfo, vers, _ = line.split() - pkg, arch = pinfo.split('.') - if pkg in self.yum_avail: - self.yum_avail[pkg].update([(arch, vers)]) - else: - self.yum_avail[pkg] = dict([(arch, vers)]) - except: - continue - for line in self.cmd.run('yum list installed --noplugins')[1][1:]: - try: - pinfo, vers, _ = line.split() - pkg, arch = pinfo.split('.') - if pkg in self.yum_installed: - self.yum_installed[pkg].update([(arch, vers)]) + self.yb = yum.YumBase() + yup = self.yb.doPackageLists(pkgnarrow='updates') + for dest, source in [(self.yum_avail, yup.updates), + (self.yum_installed, self.yb.rpmdb)]: + for pkg in source: + data = [(pkg.arch, '-'.join((pkg.version, pkg.release)))] + if pkg.name in dest: + dest[pkg.name].update(data) else: - self.yum_installed[pkg] = dict([(arch, vers)]) - except: - continue + dest[pkg.name] = dict(data) def VerifyPackage(self, entry, modlist): pinned_version = None -- cgit v1.2.3-1-g7c22