diff options
author | Andrew Brestick <brestick@mcs.anl.gov> | 2008-07-31 20:50:44 +0000 |
---|---|---|
committer | Andrew Brestick <brestick@mcs.anl.gov> | 2008-07-31 20:50:44 +0000 |
commit | e9e94e78bb52ca2ec36e3f3402dbde3f8289cdf3 (patch) | |
tree | 5f8c573da32e0f3dba86555a3534909abd2bb2d2 /src/lib/Server/Admin/__init__.py | |
parent | 7c6c1636a0841ea9c5b28a4223c0cd3677eede53 (diff) | |
download | bcfg2-e9e94e78bb52ca2ec36e3f3402dbde3f8289cdf3.tar.gz bcfg2-e9e94e78bb52ca2ec36e3f3402dbde3f8289cdf3.tar.bz2 bcfg2-e9e94e78bb52ca2ec36e3f3402dbde3f8289cdf3.zip |
added support for alternate metadata plugins in bcfg2-admin
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4845 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Admin/__init__.py')
-rw-r--r-- | src/lib/Server/Admin/__init__.py | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/lib/Server/Admin/__init__.py b/src/lib/Server/Admin/__init__.py index cff9eec6a..a650f64e6 100644 --- a/src/lib/Server/Admin/__init__.py +++ b/src/lib/Server/Admin/__init__.py @@ -3,8 +3,8 @@ __revision__ = '$Revision$' __all__ = ['Mode', 'Client', 'Compare', 'Fingerprint', 'Init', 'Minestruct', 'Pull', 'Query', 'Tidy', 'Viz'] -import ConfigParser, lxml.etree, logging - +import ConfigParser, lxml.etree, logging, sys +import Bcfg2.Server.Core class ModeOperationError(Exception): pass @@ -46,3 +46,30 @@ class Mode(object): self.errExit("Could not find stats for client %s" % (client)) return hostent[0] +class MetadataCore(Mode): + '''Base class for admin-modes that handle metadata''' + def __init__(self, configfile): + Mode.__init__(self, configfile) + options = {'plugins': Bcfg2.Options.SERVER_PLUGINS, + 'structures': Bcfg2.Options.SERVER_STRUCTURES, + 'generators': Bcfg2.Options.SERVER_GENERATORS} + setup = Bcfg2.Options.OptionParser(options) + setup.parse(sys.argv[1:]) + plugins = [plugin for plugin in setup['plugins'] + if plugin in ('BB', 'Metadata')] + structures = [structure for structure in setup['structures'] + if structure in ('BB', 'Metadata')] + generators = [generator for generator in setup['generators'] + if generator in ('BB', 'Metadata')] + try: + self.bcore = Bcfg2.Server.Core.Core(self.get_repo_path(), plugins, + structures, generators, 'foo', False, 'UTF-8') + except Bcfg2.Server.Core.CoreInitError, msg: + self.errExit("Core load failed because %s" % msg) + [self.bcore.fam.Service() for _ in range(5)] + while self.bcore.fam.Service(): + pass + self.metadata = self.bcore.metadata + + def __call__(self, args): + Bcfg2.Server.Admin.Mode.__call__(self, args) |