summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2008-11-13 09:47:06 -0500
committerMichael DeHaan <mdehaan@redhat.com>2008-11-13 09:47:06 -0500
commit7a41ded1dbbbc32252dbed230e2902fbbf561a27 (patch)
tree07d3e064df6ee9c1ba05d8947a06964001d29dbc /scripts
parentf9235c8c25e1e42a9e7aa8460e11c51847a3d52d (diff)
downloadcobbler-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-xscripts/cobblerd40
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()