summaryrefslogtreecommitdiffstats
path: root/src/lib/Client/Tools/YUMng.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2009-08-14 18:31:26 +0000
committerNarayan Desai <desai@mcs.anl.gov>2009-08-14 18:31:26 +0000
commitd29d60c08a75a36125bd87decd42bce895d014c1 (patch)
tree6a6c5cd9e4e312f0a8328603e3d4fa99f21a7446 /src/lib/Client/Tools/YUMng.py
parent12a2606ccc55dfee87cd2d324face72d9ee26080 (diff)
downloadbcfg2-d29d60c08a75a36125bd87decd42bce895d014c1.tar.gz
bcfg2-d29d60c08a75a36125bd87decd42bce895d014c1.tar.bz2
bcfg2-d29d60c08a75a36125bd87decd42bce895d014c1.zip
YUMng: Unify yum pkg specifier creation code (and fix issue reported by drtns on irc)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@5406 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Client/Tools/YUMng.py')
-rw-r--r--src/lib/Client/Tools/YUMng.py64
1 files changed, 19 insertions, 45 deletions
diff --git a/src/lib/Client/Tools/YUMng.py b/src/lib/Client/Tools/YUMng.py
index a126efdc6..e81b4ee7d 100644
--- a/src/lib/Client/Tools/YUMng.py
+++ b/src/lib/Client/Tools/YUMng.py
@@ -30,6 +30,21 @@ except:
if not hasattr(Bcfg2.Client.Tools.RPMng, 'RPMng'):
raise ImportError
+def build_yname(pkgname, inst):
+ '''build yum appropriate package name'''
+ ypname = pkgname
+ if inst.get('version') != 'any':
+ ypname += '-'
+ if inst.get('epoch', False):
+ ypname += "%s:" % inst.get('epoch')
+ if inst.get('version', False) and inst.get('version') != 'any':
+ ypname += "%s" % (inst.get('version'))
+ if inst.get('release', False) and inst.get('release') != 'any':
+ ypname += "-%s" % (inst.get('release'))
+ if inst.get('arch', False) and inst.get('arch') != 'any':
+ ypname += ".%s" % (inst.get('arch'))
+ return ypname
+
class YUMng(Bcfg2.Client.Tools.RPMng.RPMng):
'''Support for Yum packages'''
pkgtype = 'yum'
@@ -205,18 +220,7 @@ class YUMng(Bcfg2.Client.Tools.RPMng.RPMng):
install_args = []
for inst in install_pkgs:
pkg_arg = self.instance_status[inst].get('pkg').get('name')
- if inst.get('epoch', False):
- pkg_arg = pkg_arg + '-' + inst.get('epoch') + ':' + inst.get('version') + \
- '-' + inst.get('release') + '.' + inst.get('arch')
- else:
- if inst.get('version', False) and \
- inst.get('version') != 'any':
- pkg_arg = pkg_arg + '-' + inst.get('version')
- if inst.get('release', False):
- pkg_arg = pkg_arg + '-' + inst.get('release')
- if inst.get('arch', False) and inst.get('arch') != 'any':
- pkg_arg = pkg_arg + '.' + inst.get('arch')
- install_args.append(pkg_arg)
+ install_args.append(build_yname(pkg_arg, inst))
cmdrc, output = self.cmd.run(pkgtool % " ".join(install_args))
if cmdrc == 0:
@@ -229,17 +233,7 @@ class YUMng(Bcfg2.Client.Tools.RPMng.RPMng):
self.logger.error("Single Pass Install of Packages Failed")
installed_instances = []
for inst in install_pkgs:
- pkg_arg = self.instance_status[inst].get('pkg').get('name')
- if inst.get('epoch', False):
- pkg_arg = pkg_arg + '-' + inst.get('epoch') + ':' + inst.get('version') + \
- '-' + inst.get('release') + '.' + inst.get('arch')
- else:
- if inst.get('version', False):
- pkg_arg = pkg_arg + '-' + inst.get('version')
- if inst.get('release', False):
- pkg_arg = pkg_arg + '-' + inst.get('release')
- if inst.get('arch', False):
- pkg_arg = pkg_arg + '.' + inst.get('arch')
+ pkg_arg = build_yname(self.instance_status[inst].get('pkg').get('name'), inst)
cmdrc, output = self.cmd.run(pkgtool % pkg_arg)
if cmdrc == 0:
@@ -261,17 +255,7 @@ class YUMng(Bcfg2.Client.Tools.RPMng.RPMng):
upgrade_args = []
for inst in upgrade_pkgs:
- pkg_arg = self.instance_status[inst].get('pkg').get('name')
- if inst.get('epoch', False):
- pkg_arg = pkg_arg + '-' + inst.get('epoch') + ':' + inst.get('version') + \
- '-' + inst.get('release') + '.' + inst.get('arch')
- else:
- if inst.get('version', False):
- pkg_arg = pkg_arg + '-' + inst.get('version')
- if inst.get('release', False):
- pkg_arg = pkg_arg + '-' + inst.get('release')
- if inst.get('arch', False):
- pkg_arg = pkg_arg + '.' + inst.get('arch')
+ pkg_arg = build_yname(self.instance_status[inst].get('pkg').get('name'), inst)
upgrade_args.append(pkg_arg)
cmdrc, output = self.cmd.run(pkgtool % " ".join(upgrade_args))
@@ -285,17 +269,7 @@ class YUMng(Bcfg2.Client.Tools.RPMng.RPMng):
self.logger.error("Single Pass Install of Packages Failed")
installed_instances = []
for inst in upgrade_pkgs:
- pkg_arg = self.instance_status[inst].get('pkg').get('name')
- if inst.get('epoch', False):
- pkg_arg = pkg_arg + '-' + inst.get('epoch') + ':' + inst.get('version') + \
- '-' + inst.get('release') + '.' + inst.get('arch')
- else:
- if inst.get('version', False):
- pkg_arg = pkg_arg + '-' + inst.get('version')
- if inst.get('release', False):
- pkg_arg = pkg_arg + '-' + inst.get('release')
- if inst.get('arch', False):
- pkg_arg = pkg_arg + '.' + inst.get('arch')
+ pkg_arg = build_yname(self.instance_status[inst].get('pkg').get('name'), inst)
cmdrc, output = self.cmd.run(pkgtool % pkg_arg)
if cmdrc == 0:
installed_instances.append(inst)