summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools/Portage.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-12 16:02:24 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-14 15:12:49 -0500
commit3a0618331e009439ce6b9c664915669884cd4aed (patch)
tree48849e204370f1eab8861ae9fa518404592efcc7 /src/lib/Bcfg2/Client/Tools/Portage.py
parentdc22e36574d4d4cdbde282906ef3e1d3c7fe7c94 (diff)
downloadbcfg2-3a0618331e009439ce6b9c664915669884cd4aed.tar.gz
bcfg2-3a0618331e009439ce6b9c664915669884cd4aed.tar.bz2
bcfg2-3a0618331e009439ce6b9c664915669884cd4aed.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.py16
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