Daemonize zuul.
Change-Id: If3d30ec8f03ca35d8c8dd2c1347441aab535f8a1
diff --git a/zuul-server b/zuul-server
index 8d99e10..e78fa7b 100755
--- a/zuul-server
+++ b/zuul-server
@@ -15,6 +15,8 @@
import argparse
import ConfigParser
+import daemon
+import daemon.pidlockfile
import logging.config
import os
import signal
@@ -33,6 +35,8 @@
parser = argparse.ArgumentParser(description='Project gating system.')
parser.add_argument('-c', dest='config',
help='specify the config file')
+ parser.add_argument('-d', dest='nodaemon', action='store_true',
+ help='do not run as a daemon')
self.args = parser.parse_args()
def read_config(self):
@@ -80,13 +84,21 @@
while True:
signal.pause()
- def start(self):
- self.parse_arguments()
- self.read_config()
- self.setup_logging()
- self.main()
-
if __name__ == '__main__':
server = Server()
- server.start()
+ server.parse_arguments()
+ server.read_config()
+ server.setup_logging()
+
+ if server.config.has_option('zuul', 'pidfile'):
+ pid_fn = os.path.expanduser(server.config.get('zuul', 'pidfile'))
+ else:
+ pid_fn = '/var/run/zuul/zuul.pid'
+ pid = daemon.pidlockfile.TimeoutPIDLockFile(pid_fn, 10)
+
+ if server.args.nodaemon:
+ server.main()
+ else:
+ with daemon.DaemonContext(pidfile=pid):
+ server.main()