summaryrefslogtreecommitdiff
path: root/zuul/cmd/scheduler.py
diff options
context:
space:
mode:
authorPaul Belanger <pabelanger@redhat.com>2017-11-28 11:49:55 -0500
committerPaul Belanger <pabelanger@redhat.com>2017-12-06 17:19:40 -0500
commit40d3ce640c93c116a02c7203d521828fecf46339 (patch)
treee642248587540580ce56b1155f5e092960aea6eb /zuul/cmd/scheduler.py
parentba0f202cfaa1bc821c6ed16c7383703273e8775a (diff)
downloadzuul-40d3ce640c93c116a02c7203d521828fecf46339.tar.gz
Add command socket support to zuul-scheduler
Bring online commandsocket support for the scheduler. Change-Id: Ia1719650623e79d40f239776eb770550bb73169b Signed-off-by: Paul Belanger <pabelanger@redhat.com>
Diffstat (limited to 'zuul/cmd/scheduler.py')
-rwxr-xr-xzuul/cmd/scheduler.py39
1 files changed, 29 insertions, 10 deletions
diff --git a/zuul/cmd/scheduler.py b/zuul/cmd/scheduler.py
index 539d55b17..7722d6e9c 100755
--- a/zuul/cmd/scheduler.py
+++ b/zuul/cmd/scheduler.py
@@ -22,6 +22,7 @@ import signal
import zuul.cmd
from zuul.lib.config import get_default
from zuul.lib.statsd import get_statsd_config
+import zuul.scheduler
# No zuul imports here because they pull in paramiko which must not be
# imported until after the daemonization.
@@ -37,6 +38,18 @@ class Scheduler(zuul.cmd.ZuulDaemonApp):
super(Scheduler, self).__init__()
self.gear_server_pid = None
+ def createParser(self):
+ parser = super(Scheduler, self).createParser()
+ parser.add_argument('command',
+ choices=zuul.scheduler.COMMANDS,
+ nargs='?')
+ return parser
+
+ def parseArguments(self, args=None):
+ super(Scheduler, self).parseArguments()
+ if self.args.command:
+ self.args.nodaemon = True
+
def reconfigure_handler(self, signum, frame):
signal.signal(signal.SIGHUP, signal.SIG_IGN)
self.log.debug("Reconfiguration triggered")
@@ -48,8 +61,7 @@ class Scheduler(zuul.cmd.ZuulDaemonApp):
self.log.exception("Reconfiguration failed:")
signal.signal(signal.SIGHUP, self.reconfigure_handler)
- def exit_handler(self, signum, frame):
- signal.signal(signal.SIGUSR1, signal.SIG_IGN)
+ def exit_handler(self):
self.sched.exit()
self.sched.join()
self.stop_gear_server()
@@ -104,6 +116,10 @@ class Scheduler(zuul.cmd.ZuulDaemonApp):
def run(self):
# See comment at top of file about zuul imports
import zuul.scheduler
+ if self.args.command in zuul.scheduler.COMMANDS:
+ self.send_command(self.args.command)
+ sys.exit(0)
+ # See comment at top of file about zuul imports
import zuul.executor.client
import zuul.merger.client
import zuul.nodepool
@@ -162,14 +178,17 @@ class Scheduler(zuul.cmd.ZuulDaemonApp):
webapp.start()
signal.signal(signal.SIGHUP, self.reconfigure_handler)
- signal.signal(signal.SIGUSR1, self.exit_handler)
- signal.signal(signal.SIGTERM, self.term_handler)
- while True:
- try:
- signal.pause()
- except KeyboardInterrupt:
- print("Ctrl + C: asking scheduler to exit nicely...\n")
- self.exit_handler(signal.SIGINT, None)
+
+ if self.args.nodaemon:
+ while True:
+ try:
+ signal.pause()
+ except KeyboardInterrupt:
+ print("Ctrl + C: asking scheduler to exit nicely...\n")
+ self.exit_handler()
+ sys.exit(0)
+ else:
+ self.sched.join()
def main():