summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools/RPM.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/RPM.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/RPM.py')
-rw-r--r--src/lib/Bcfg2/Client/Tools/RPM.py67
1 files changed, 31 insertions, 36 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/RPM.py b/src/lib/Bcfg2/Client/Tools/RPM.py
index 0964fdb80..e9dff3db5 100644
--- a/src/lib/Bcfg2/Client/Tools/RPM.py
+++ b/src/lib/Bcfg2/Client/Tools/RPM.py
@@ -78,13 +78,12 @@ class RPM(Bcfg2.Client.Tools.PkgTool):
# Many, if not most package verifies can be caused by out of
# date prelinking.
if os.path.isfile('/usr/sbin/prelink') and not self.setup['dryrun']:
- cmdrc, output = self.cmd.run('/usr/sbin/prelink -a -mR')
- if cmdrc == 0:
+ rv = self.cmd.run('/usr/sbin/prelink -a -mR')
+ if rv.success:
self.logger.debug('Pre-emptive prelink succeeded')
else:
# FIXME : this is dumb - what if the output is huge?
- self.logger.error('Pre-emptive prelink failed: %s' % output)
-
+ self.logger.error('Pre-emptive prelink failed: %s' % rv.error)
def RefreshPackages(self):
"""
@@ -591,29 +590,26 @@ class RPM(Bcfg2.Client.Tools.PkgTool):
# Fix installOnlyPackages
if len(install_only_pkgs) > 0:
self.logger.info("Attempting to install 'install only packages'")
- install_args = " ".join([os.path.join(self.instance_status[inst].get('pkg').get('uri'), \
- inst.get('simplefile')) \
- for inst in install_only_pkgs])
- self.logger.debug("rpm --install --quiet --oldpackage %s" % install_args)
- cmdrc, output = self.cmd.run("rpm --install --quiet --oldpackage --replacepkgs %s" % \
- install_args)
- if cmdrc == 0:
+ install_args = \
+ " ".join(os.path.join(self.instance_status[inst].get('pkg').get('uri'),
+ inst.get('simplefile'))
+ for inst in install_only_pkgs)
+ if self.cmd.run("rpm --install --quiet --oldpackage --replacepkgs "
+ "%s" % install_args):
# The rpm command succeeded. All packages installed.
self.logger.info("Single Pass for InstallOnlyPkgs Succeded")
self.RefreshPackages()
-
else:
# The rpm command failed. No packages installed.
# Try installing instances individually.
self.logger.error("Single Pass for InstallOnlyPackages Failed")
installed_instances = []
for inst in install_only_pkgs:
- install_args = os.path.join(self.instance_status[inst].get('pkg').get('uri'), \
- inst.get('simplefile'))
- self.logger.debug("rpm --install --quiet --oldpackage %s" % install_args)
- cmdrc, output = self.cmd.run("rpm --install --quiet --oldpackage --replacepkgs %s" % \
- install_args)
- if cmdrc == 0:
+ install_args = \
+ os.path.join(self.instance_status[inst].get('pkg').get('uri'),
+ inst.get('simplefile'))
+ if self.cmd.run("rpm --install --quiet --oldpackage "
+ "--replacepkgs %s" % install_args):
installed_instances.append(inst)
else:
self.logger.debug("InstallOnlyPackage %s %s would not install." % \
@@ -630,15 +626,15 @@ class RPM(Bcfg2.Client.Tools.PkgTool):
self.logger.info("Installing GPG keys.")
key_arg = os.path.join(self.instance_status[inst].get('pkg').get('uri'), \
inst.get('simplefile'))
- cmdrc, output = self.cmd.run("rpm --import %s" % key_arg)
- if cmdrc != 0:
- self.logger.debug("Unable to install %s-%s" % \
- (self.instance_status[inst].get('pkg').get('name'), \
- self.str_evra(inst)))
+ if not self.cmd.run("rpm --import %s" % key_arg):
+ self.logger.debug("Unable to install %s-%s" %
+ (self.instance_status[inst].get('pkg').get('name'),
+ self.str_evra(inst)))
else:
- self.logger.debug("Installed %s-%s-%s" % \
- (self.instance_status[inst].get('pkg').get('name'), \
- inst.get('version'), inst.get('release')))
+ self.logger.debug("Installed %s-%s-%s" %
+ (self.instance_status[inst].get('pkg').get('name'),
+ inst.get('version'),
+ inst.get('release')))
self.RefreshPackages()
self.gpg_keyids = self.getinstalledgpg()
pkg = self.instance_status[gpg_keys[0]].get('pkg')
@@ -650,13 +646,12 @@ class RPM(Bcfg2.Client.Tools.PkgTool):
upgrade_args = " ".join([os.path.join(self.instance_status[inst].get('pkg').get('uri'), \
inst.get('simplefile')) \
for inst in upgrade_pkgs])
- cmdrc, output = self.cmd.run("rpm --upgrade --quiet --oldpackage --replacepkgs %s" % \
- upgrade_args)
- if cmdrc == 0:
+ if self.cmd.run("rpm --upgrade --quiet --oldpackage --replacepkgs "
+ "%s" % upgrade_args):
# The rpm command succeeded. All packages upgraded.
self.logger.info("Single Pass for Upgraded Packages Succeded")
- upgrade_pkg_set = set([self.instance_status[inst].get('pkg') \
- for inst in upgrade_pkgs])
+ upgrade_pkg_set = set([self.instance_status[inst].get('pkg')
+ for inst in upgrade_pkgs])
self.RefreshPackages()
else:
# The rpm command failed. No packages upgraded.
@@ -668,13 +663,13 @@ class RPM(Bcfg2.Client.Tools.PkgTool):
inst.get('simplefile'))
#self.logger.debug("rpm --upgrade --quiet --oldpackage --replacepkgs %s" % \
# upgrade_args)
- cmdrc, output = self.cmd.run("rpm --upgrade --quiet --oldpackage --replacepkgs %s" % upgrade_args)
- if cmdrc == 0:
+ if self.cmd.run("rpm --upgrade --quiet --oldpackage "
+ "--replacepkgs %s" % upgrade_args):
upgraded_instances.append(inst)
else:
- self.logger.debug("Package %s %s would not upgrade." % \
- (self.instance_status[inst].get('pkg').get('name'), \
- self.str_evra(inst)))
+ self.logger.debug("Package %s %s would not upgrade." %
+ (self.instance_status[inst].get('pkg').get('name'),
+ self.str_evra(inst)))
upgrade_pkg_set = set([self.instance_status[inst].get('pkg') \
for inst in upgrade_pkgs])