diff options
| author | Michael DeHaan <mdehaan@redhat.com> | 2008-11-13 09:47:06 -0500 |
|---|---|---|
| committer | Michael DeHaan <mdehaan@redhat.com> | 2008-11-13 09:47:06 -0500 |
| commit | 7a41ded1dbbbc32252dbed230e2902fbbf561a27 (patch) | |
| tree | 07d3e064df6ee9c1ba05d8947a06964001d29dbc /scripts | |
| parent | f9235c8c25e1e42a9e7aa8460e11c51847a3d52d (diff) | |
| download | cobbler-7a41ded1dbbbc32252dbed230e2902fbbf561a27.tar.gz cobbler-7a41ded1dbbbc32252dbed230e2902fbbf561a27.tar.xz cobbler-7a41ded1dbbbc32252dbed230e2902fbbf561a27.zip | |
Charles Duffy's patch to add a --no-daemonize option to cobbler, as well as some flags to alter the log level (which cobbler really doesn't use much yet) and the log file path.
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/cobblerd | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/scripts/cobblerd b/scripts/cobblerd index 3a476468..37fa44ad 100755 --- a/scripts/cobblerd +++ b/scripts/cobblerd @@ -21,6 +21,8 @@ import cobbler.cobblerd as app import logging import cobbler.utils as utils +import optparse + #logger = logging.getLogger("cobbler.cobblerd") #logger.setLevel(logging.DEBUG) #ch = logging.FileHandler("/var/log/cobbler/cobblerd.log") @@ -29,13 +31,7 @@ import cobbler.utils as utils #ch.setFormatter(formatter) #logger.addHandler(ch) -api = bootapi.BootAPI() -logger = api.logger_remote - -if __name__ == "__main__": - - ############################################# - +def daemonize_self(logger): # daemonizing code: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66012 logger.info("cobblerd started") try: @@ -69,10 +65,38 @@ if __name__ == "__main__": os.dup2(dev_null.fileno(), sys.stdout.fileno()) os.dup2(dev_null.fileno(), sys.stderr.fileno()) - ################# +def main(): + op = optparse.OptionParser() + op.set_defaults(daemonize=True, log_level=None) + op.add_option('-B', '--daemonize', dest='daemonize', action='store_true', + help='run in background (default)') + op.add_option('-F', '--no-daemonize', dest='daemonize', action='store_false', + help='run in foreground (do not daemonize)') + op.add_option('-f', '--log-file', dest='log_file', metavar='NAME', + help='file to log to') + op.add_option('-l', '--log-level', dest='log_level', metavar='LEVEL', + help='log level (ie. INFO, WARNING, ERROR, CRITICAL)') + + options, args = op.parse_args() + + log_settings = {} + if options.log_file: + log_settings['log_file'] = options.log_file + if options.log_level: + log_level = logging.getLevelName(options.log_level) + if not isinstance(log_level, int): + op.error('Unrecognized log level %r given') + log_settings['log_level'] = log_level + api = bootapi.BootAPI(log_settings=log_settings) + logger = api.logger + + if options.daemonize: + daemonize_self(logger) try: app.core(logger=logger) except: utils.log_exc(logger) +if __name__ == "__main__": + main() |
