diff options
author | Narayan Desai <desai@mcs.anl.gov> | 2007-12-31 11:21:10 +0000 |
---|---|---|
committer | Narayan Desai <desai@mcs.anl.gov> | 2007-12-31 11:21:10 +0000 |
commit | ef5051726a3aa1f0192bd8d99c5c5b1ee9f067af (patch) | |
tree | 57bf0854d95c18cced379921657f746ad5faab04 /src/lib/Server/Admin | |
parent | 104a1e27cee2d5524460d26c83d3e920cd88b2e9 (diff) | |
download | bcfg2-ef5051726a3aa1f0192bd8d99c5c5b1ee9f067af.tar.gz bcfg2-ef5051726a3aa1f0192bd8d99c5c5b1ee9f067af.tar.bz2 bcfg2-ef5051726a3aa1f0192bd8d99c5c5b1ee9f067af.zip |
Switch over to more Options usage and complete tests (everything appears to work now)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4142 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Server/Admin')
-rw-r--r-- | src/lib/Server/Admin/Init.py | 26 | ||||
-rw-r--r-- | src/lib/Server/Admin/__init__.py | 25 |
2 files changed, 34 insertions, 17 deletions
diff --git a/src/lib/Server/Admin/Init.py b/src/lib/Server/Admin/Init.py index 0a76f44a7..d057fc1ff 100644 --- a/src/lib/Server/Admin/Init.py +++ b/src/lib/Server/Admin/Init.py @@ -1,7 +1,6 @@ import os, socket import Bcfg2.Server.Admin - -from Bcfg2.Settings import settings +import Bcfg2.Options config = ''' [server] @@ -69,11 +68,19 @@ os_list = [('Redhat/Fedora/RHEL/RHAS/Centos', 'redhat'), class Init(Bcfg2.Server.Admin.Mode): __shorthelp__ = 'bcfg2-admin init' __longhelp__ = __shorthelp__ + '\n\tCompare two client specifications or directories of specifications' + options = {'repo': Bcfg2.Options.SERVER_REPOSITORY, + 'struct': Bcfg2.Options.SERVER_STRUCTURES, + 'gens': Bcfg2.Options.SERVER_GENERATORS, + 'proto': Bcfg2.Options.SERVER_PROTOCOL, + 'sendmail': Bcfg2.Options.SENDMAIL_PATH} + def __call__(self, args): Bcfg2.Server.Admin.Mode.__call__(self, args) - repopath = raw_input( "location of bcfg2 repository [%s]: " % settings.SERVER_REPOSITORY ) + opts = Bcfg2.Options.OptionParser(options) + opts.parse([]) + repopath = raw_input("location of bcfg2 repository [%s]: " % opts['repo']) if repopath == '': - repopath = settings.SERVER_REPOSITORY + repopath = opts['repo'] password = '' while ( password == '' ): password = raw_input( @@ -88,18 +95,15 @@ class Init(Bcfg2.Server.Admin.Mode): prompt += "%d: \n" % (os_list.index(entry) + 1, entry[0]) prompt += ': ' os_sel = os_list[int(raw_input(prompt))-1][1] - self.initializeRepo(repopath, server, password, os_sel) + self.initializeRepo(repopath, server, password, os_sel, opts) print "Repository created successfuly in %s" % (repopath) - def initializeRepo(self, repo, server_uri, password, os_selection): + def initializeRepo(self, repo, server_uri, password, os_selection, opts): '''Setup a new repo''' keypath = os.path.dirname(os.path.abspath(settings.CONFIG_FILE)) confdata = config % ( - repo, - settings.SERVER_STRUCTURES, - settings.SERVER_GENERATORS, - settings.SENDMAIL_PATH, - settings.COMMUNICATION_PROTOCOL, + repo, opts['struct'], opts['gens'], + opts['sendmail'], opts['proto'] password, keypath, server_uri ) diff --git a/src/lib/Server/Admin/__init__.py b/src/lib/Server/Admin/__init__.py index dcab5876f..57b9d2a86 100644 --- a/src/lib/Server/Admin/__init__.py +++ b/src/lib/Server/Admin/__init__.py @@ -4,27 +4,40 @@ __all__ = ['Mode', 'Client', 'Compare', 'Fingerprint', 'Init', 'Minestruct', 'Pull', 'Tidy', 'Viz'] import ConfigParser, lxml.etree, logging -from Bcfg2.Settings import settings class Mode(object): '''Help message has not yet been added for mode''' __shorthelp__ = 'Shorthelp not defined yet' __longhelp__ = 'Longhelp not defined yet' __args__ = [] - - def __init__(self): + def __init__(self, configfile): + self.configfile = configfile + self.__cfp = False self.log = logging.getLogger('Bcfg2.Server.Admin.Mode') - self.repo_path = settings.SERVER_REPOSITORY + + def getCFP(self): + if not self.__cfp: + self.__cfp = ConfigParser.ConfigParser() + self.__cfp.read(self.configfile) + return self.__cfp + + cfp = property(getCFP) def __call__(self, args): - return + if args[0] == 'help': + print self.__longhelp__ + raise SystemExit(0) def errExit(self, emsg): print emsg raise SystemExit(1) + def get_repo_path(self): + '''return repository path''' + return self.cfp.get('server', 'repository') + def load_stats(self, client): - stats = lxml.etree.parse("%s/etc/statistics.xml" % (self.repo_path)) + stats = lxml.etree.parse("%s/etc/statistics.xml" % (self.get_repo_path())) hostent = stats.xpath('//Node[@name="%s"]' % client) if not hostent: self.errExit("Could not find stats for client %s" % (client)) |