summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2007-02-01 19:44:45 +0000
committerNarayan Desai <desai@mcs.anl.gov>2007-02-01 19:44:45 +0000
commit76d825e024588dc0aef9bde910b17d2175f266f2 (patch)
tree2afd0775fbeb3d9d684ef31aa847bdbc490a5247 /src
parentae992d98aa69fa9fd6feb47ebc0da41800b36df3 (diff)
downloadbcfg2-76d825e024588dc0aef9bde910b17d2175f266f2.tar.gz
bcfg2-76d825e024588dc0aef9bde910b17d2175f266f2.tar.bz2
bcfg2-76d825e024588dc0aef9bde910b17d2175f266f2.zip
Implement complete Yum solution
* Add Yum into default loaded drivers * Add support for Yum to not use -y * Fix driver conflict setup git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@2754 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src')
-rw-r--r--src/lib/Client/Frame.py9
-rw-r--r--src/lib/Client/Tools/Yum.py19
-rw-r--r--src/lib/Client/Tools/__init__.py2
3 files changed, 23 insertions, 7 deletions
diff --git a/src/lib/Client/Frame.py b/src/lib/Client/Frame.py
index ac99c28ba..879ab0be2 100644
--- a/src/lib/Client/Frame.py
+++ b/src/lib/Client/Frame.py
@@ -58,10 +58,6 @@ class Frame:
except ImportError:
continue
- for tool in tools:
- for conflict in getattr(tool, 'conflicts', []):
- del tmods[conflict]
-
for (tool, mod) in tmods.iteritems():
try:
self.tools.append(getattr(mod, tool)(self.logger, setup, config, self.states))
@@ -70,6 +66,11 @@ class Frame:
except:
self.logger.error("Failed to instantiate tool %s" % (tool), exc_info=1)
+ for tool in self.tools[:]:
+ for conflict in getattr(tool, 'conflicts', []):
+ [self.tools.remove(item) for item in self.tools \
+ if item.__name__ == conflict]
+
self.logger.info("Loaded tool drivers:")
self.logger.info([tool.__name__ for tool in self.tools])
if not self.setup['dryrun']:
diff --git a/src/lib/Client/Tools/Yum.py b/src/lib/Client/Tools/Yum.py
index 8d3b0da6b..1f47c827a 100644
--- a/src/lib/Client/Tools/Yum.py
+++ b/src/lib/Client/Tools/Yum.py
@@ -2,14 +2,29 @@
'''This provides bcfg2 support for yum'''
__revision__ = '$Revision$'
-import Bcfg2.Client.Tools.RPM
+import Bcfg2.Client.Tools.RPM, ConfigParser, sys
conflicts = ['RPM']
+YAD = True
+CP = ConfigParser.ConfigParser()
+try:
+ if '-C' in sys.argv:
+ CP.read([sys.argv[sys.argv.index('-C') + 1]])
+ else:
+ CP.read(['/etc/bcfg2.conf'])
+ if CP.get('Yum', 'autodep') == 'false':
+ YAD = False
+except ConfigParser.NoOptionError:
+ pass
+
class Yum(Bcfg2.Client.Tools.RPM.RPM):
'''Support for Yum packages'''
pkgtype = 'yum'
- pkgtool = ("/usr/bin/yum -d0 -y install %s", ("%s-%s", ["name", "version"]))
+ if YAD:
+ pkgtool = ("/usr/bin/yum -d0 -y install %s", ("%s-%s", ["name", "version"]))
+ else:
+ pkgtool = ("/usr/bin/yum -d0 install %s", ("%s-%s", ["name", "version"]))
__name__ = 'Yum'
__execs__ = ['/usr/bin/yum', '/var/lib/rpm']
__handles__ = [('Package', 'yum')]
diff --git a/src/lib/Client/Tools/__init__.py b/src/lib/Client/Tools/__init__.py
index 24a629f99..90d3cedbc 100644
--- a/src/lib/Client/Tools/__init__.py
+++ b/src/lib/Client/Tools/__init__.py
@@ -2,7 +2,7 @@
__revision__ = '$Revision$'
__all__ = ["Action", "APT", "Blast", "Chkconfig", "DebInit", "Encap", "launchd",
- "Portage", "POSIX", "RPM", "RcUpdate", "SMF", "SYSV"]
+ "Portage", "POSIX", "RPM", "RcUpdate", "SMF", "SYSV", "Yum"]
import os, popen2, stat, sys, Bcfg2.Client.XML