diff options
author | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-02-12 16:02:24 -0500 |
---|---|---|
committer | Chris St. Pierre <chris.a.st.pierre@gmail.com> | 2013-02-14 14:57:04 -0500 |
commit | 43984bc5ebc59bd8c5890ed6ba3de162e6698dcc (patch) | |
tree | d9e972b160d5d5033537495e9f507cfe043483c3 /src/lib/Bcfg2/Client/Tools/Portage.py | |
parent | d526c8745b61c1977b775cfe750a86c51dd6a9f3 (diff) | |
download | bcfg2-43984bc5ebc59bd8c5890ed6ba3de162e6698dcc.tar.gz bcfg2-43984bc5ebc59bd8c5890ed6ba3de162e6698dcc.tar.bz2 bcfg2-43984bc5ebc59bd8c5890ed6ba3de162e6698dcc.zip |
better Executor class for client tools
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/Portage.py')
-rw-r--r-- | src/lib/Bcfg2/Client/Tools/Portage.py | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/Portage.py b/src/lib/Bcfg2/Client/Tools/Portage.py index 9381f44e9..6cbcff2e0 100644 --- a/src/lib/Bcfg2/Client/Tools/Portage.py +++ b/src/lib/Bcfg2/Client/Tools/Portage.py @@ -3,6 +3,7 @@ import re import Bcfg2.Client.Tools + class Portage(Bcfg2.Client.Tools.PkgTool): """The Gentoo toolset implements package and service operations and inherits the rest from Toolset.Toolset.""" @@ -35,9 +36,8 @@ class Portage(Bcfg2.Client.Tools.PkgTool): if not self._initialised: return self.logger.info('Getting list of installed packages') - cache = self.cmd.run("equery -q list '*'")[1] self.installed = {} - for pkg in cache: + for pkg in self.cmd.run("equery -q list '*'").stdout.splitlines(): if self._pkg_pattern.match(pkg): name = self._pkg_pattern.match(pkg).group(1) version = self._pkg_pattern.match(pkg).group(2) @@ -73,12 +73,12 @@ class Portage(Bcfg2.Client.Tools.PkgTool): self.logger.debug('Running equery check on %s' % entry.get('name')) - output = self.cmd.run("/usr/bin/equery -N check '=%s-%s' " - "2>&1 | grep '!!!' | awk '{print $2}'" - % ((entry.get('name'), version)))[1] - if [filename for filename in output \ - if filename not in modlist]: - return False + for line in self.cmd.run(["/usr/bin/equery", "-N", "check", + '=%s-%s' % + (entry.get('name'), + version)]).stdout.splitlines(): + if '!!!' in line and line.split()[1] not in modlist: + return False # By now the package must be in one of the following states: # - Not require checking |