]>
Commit | Line | Data |
---|---|---|
9137135a MT |
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 | ||
57859ebc | 10 | from .. import Backend |
2c909128 MT |
11 | |
12 | from . import handlers | |
9137135a | 13 | |
c2902b29 MT |
14 | # Read command line |
15 | tornado.options.define("debug", default=False, help="Run in debug mode", type=bool) | |
9137135a MT |
16 | tornado.options.parse_command_line() |
17 | ||
f6e6ff79 | 18 | class 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") |