diff options
author | Simo Sorce <simo@redhat.com> | 2014-03-18 17:13:28 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-03-20 11:34:08 -0400 |
commit | 8aaf2951470b04e2605cb6b2d9350881abf5ce7e (patch) | |
tree | 4555770244f21af5184e5665ddaaf3f0cdf47b43 /ipsilon | |
parent | 1d7df9dbac43b63424ee07ebfb86c6a106dcb43c (diff) | |
download | ipsilon-8aaf2951470b04e2605cb6b2d9350881abf5ce7e.tar.gz ipsilon-8aaf2951470b04e2605cb6b2d9350881abf5ce7e.tar.xz ipsilon-8aaf2951470b04e2605cb6b2d9350881abf5ce7e.zip |
Add logging and install/uninstall targets
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'ipsilon')
-rwxr-xr-x | ipsilon/install/server.py | 93 |
1 files changed, 90 insertions, 3 deletions
diff --git a/ipsilon/install/server.py b/ipsilon/install/server.py index 0018e10..1acb8d7 100755 --- a/ipsilon/install/server.py +++ b/ipsilon/install/server.py @@ -20,7 +20,63 @@ from ipsilon.login.common import LoginMgrsInstall from ipsilon.providers.common import ProvidersInstall import argparse +import logging +import os +import shutil import sys +import time + + +class ConfigurationError(Exception): + + def __init__(self, message): + super(ConfigurationError, self).__init__(message) + self.message = message + + def __str__(self): + return repr(self.message) + + +LOGFILE = '/var/log/ipsilon-install.log' +logger = logging.getLogger() + + +def openlogs(): + global logger # pylint: disable=W0603 + if os.path.isfile(LOGFILE): + try: + created = '%s' % time.ctime(os.path.getctime(LOGFILE)) + shutil.move(LOGFILE, '%s.%s' % (LOGFILE, created)) + except IOError: + pass + logger = logging.getLogger() + try: + lh = logging.FileHandler(LOGFILE) + except IOError, e: + print >> sys.stderr, 'Unable to open %s (%s)' % (LOGFILE, str(e)) + lh = logging.StreamHandler(sys.stderr) + formatter = logging.Formatter('[%(asctime)s] %(message)s') + lh.setFormatter(formatter) + logger.addHandler(lh) + + +def install(plugins, args): + logger.info('Installation initiated') + + logger.info('Configuring login managers') + for plugin_name in args['lm_order']: + plugin = plugins['Login Managers'][plugin_name] + plugin.configure(args) + + logger.info('Configuring Authentication Providers') + for plugin_name in plugins['Auth Providers']: + plugin = plugins['Auth Providers'][plugin_name] + plugin.configure(args) + + +def uninstall(plugins, args): + logger.info('Uninstallation initiated') + raise Exception('Not Implemented') def find_plugins(): @@ -39,6 +95,8 @@ def parse_args(plugins): help='Comma separated list of login managers') parser.add_argument('--ipa', choices=['yes', 'no'], default='yes', help='Detect and use an IPA server for authentication') + parser.add_argument('--uninstall', action='store_true', + help="Uninstall the server and all data") lms = [] @@ -71,6 +129,35 @@ def parse_args(plugins): return args if __name__ == '__main__': - found_plugins = find_plugins() - opts = parse_args(found_plugins) - print opts + opts = [] + out = 0 + openlogs() + try: + fplugins = find_plugins() + opts = parse_args(fplugins) + + logger.setLevel(logging.DEBUG) + + logger.info('Intallation arguments:') + for k in sorted(opts.iterkeys()): + logger.info('%s: %s', k, opts[k]) + + if 'uninstall' in opts and opts['uninstall'] is True: + uninstall(fplugins, opts) + + install(fplugins, opts) + except Exception, e: # pylint: disable=broad-except + logger.exception(e) + if 'uninstall' in opts and opts['uninstall'] is True: + print 'Uninstallation aborted.' + else: + print 'Installation aborted.' + print 'See log file %s for details' % LOGFILE + out = 1 + finally: + if out == 0: + if 'uninstall' in opts and opts['uninstall'] is True: + print 'Uninstallation complete.' + else: + print 'Installation complete.' + sys.exit(out) |