]> git.ipfire.org Git - people/jschlag/pbs.git/blame - src/hub/__init__.py
hub: Doesn't need to use translation
[people/jschlag/pbs.git] / src / hub / __init__.py
CommitLineData
9137135a
MT
1#!/usr/bin/python
2
3import logging
4import os.path
5import tornado.httpserver
6import tornado.locale
7import tornado.options
8import tornado.web
9
57859ebc 10from .. import Backend
2c909128
MT
11
12from . import handlers
9137135a 13
c2902b29
MT
14# Read command line
15tornado.options.define("debug", default=False, help="Run in debug mode", type=bool)
9137135a
MT
16tornado.options.parse_command_line()
17
f6e6ff79 18class Application(tornado.web.Application):
9137135a 19 def __init__(self):
f6e6ff79
MT
20 self.__pakfire = None
21
9137135a 22 settings = dict(
c2902b29 23 debug = tornado.options.options.debug,
f6e6ff79 24 gzip = True,
9137135a
MT
25 )
26
9137135a
MT
27 tornado.web.Application.__init__(self, **settings)
28
f6e6ff79
MT
29 self.add_handlers(r"pakfirehub.ipfire.org", [
30 # Redirect strayed users.
c2902b29 31 #(r"/", handlers.RedirectHandler),
f6e6ff79 32
c2902b29
MT
33 # Test handlers
34 (r"/noop", handlers.NoopHandler),
35 (r"/error/test", handlers.ErrorTestHandler),
36 (r"/error/test/(\d+)", handlers.ErrorTestHandler),
37
c2902b29
MT
38 # Builds
39 (r"/builds/create", handlers.BuildsCreateHandler),
40 (r"/builds/(.*)", handlers.BuildsGetHandler),
41
42 # Builders
43 (r"/builders/info", handlers.BuildersInfoHandler),
44 (r"/builders/jobs/queue", handlers.BuildersJobsQueueHandler),
45 (r"/builders/jobs/(.*)/addfile/(.*)", handlers.BuildersJobsAddFileHandler),
46 (r"/builders/jobs/(.*)/buildroot", handlers.BuildersJobsBuildrootHandler),
47 (r"/builders/jobs/(.*)/state/(.*)", handlers.BuildersJobsStateHandler),
48 (r"/builders/keepalive", handlers.BuildersKeepaliveHandler),
49
50 # Jobs
ba9f9092
MT
51 (r"/jobs/active", handlers.JobsGetActiveHandler),
52 (r"/jobs/latest", handlers.JobsGetLatestHandler),
53 (r"/jobs/queue", handlers.JobsGetQueueHandler),
c2902b29
MT
54 (r"/jobs/(.*)", handlers.JobsGetHandler),
55
56 # Packages
57 (r"/packages/(.*)", handlers.PackagesGetHandler),
58
59 # Uploads
60 (r"/uploads/create", handlers.UploadsCreateHandler),
61 (r"/uploads/(.*)/sendchunk", handlers.UploadsSendChunkHandler),
62 (r"/uploads/(.*)/finished", handlers.UploadsFinishedHandler),
63 (r"/uploads/(.*)/destroy", handlers.UploadsDestroyHandler),
f6e6ff79 64 ])
9137135a
MT
65
66 logging.info("Successfully initialied application")
67
f6e6ff79
MT
68 @property
69 def pakfire(self):
70 if self.__pakfire is None:
565ca1d1 71 self.__pakfire = Backend()
f6e6ff79
MT
72
73 return self.__pakfire
74
9137135a
MT
75 def __del__(self):
76 logging.info("Shutting down application")
77
78 @property
79 def ioloop(self):
80 return tornado.ioloop.IOLoop.instance()
81
82 def shutdown(self, *args):
83 logging.debug("Caught shutdown signal")
84 self.ioloop.stop()
85
86 def run(self, port=81):
87 logging.debug("Going to background")
88
9137135a
MT
89 http_server = tornado.httpserver.HTTPServer(self, xheaders=True)
90
91 # If we are not running in debug mode, we can actually run multiple
92 # frontends to get best performance out of our service.
93 if not self.settings["debug"]:
94 http_server.bind(port)
95 http_server.start(num_processes=4)
96 else:
97 http_server.listen(port)
98
f6e6ff79
MT
99 # All requests should be done after 30 seconds or they will be killed.
100 self.ioloop.set_blocking_log_threshold(30)
101
9137135a
MT
102 self.ioloop.start()
103
104 def reload(self):
105 logging.debug("Caught reload signal")