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