5 import tornado
.httpserver
13 BASEDIR
= os
.path
.join(os
.path
.dirname(__file__
), "..", "data")
16 tornado
.options
.define("debug", default
=False, help="Run in debug mode", type=bool)
17 tornado
.options
.parse_command_line()
19 class Application(tornado
.web
.Application
):
24 debug
= tornado
.options
.options
.debug
,
29 tornado
.locale
.load_gettext_translations(
30 os
.path
.join(BASEDIR
, "translations"), "pakfire")
32 tornado
.web
.Application
.__init
__(self
, **settings
)
34 self
.add_handlers(r
"pakfirehub.ipfire.org", [
35 # Redirect strayed users.
36 #(r"/", handlers.RedirectHandler),
39 (r
"/noop", handlers
.NoopHandler
),
40 (r
"/error/test", handlers
.ErrorTestHandler
),
41 (r
"/error/test/(\d+)", handlers
.ErrorTestHandler
),
44 (r
"/statistics/builds/types", handlers
.StatsBuildsTypesHandler
),
45 (r
"/statistics/jobs/durations", handlers
.StatsJobsDurationsHandler
),
46 (r
"/statistics/jobs/queue", handlers
.StatsJobsQueueHandler
),
47 (r
"/statistics/jobs/states", handlers
.StatsJobsStatesHandler
),
50 (r
"/builds/create", handlers
.BuildsCreateHandler
),
51 (r
"/builds/(.*)", handlers
.BuildsGetHandler
),
54 (r
"/builders/info", handlers
.BuildersInfoHandler
),
55 (r
"/builders/jobs/queue", handlers
.BuildersJobsQueueHandler
),
56 (r
"/builders/jobs/(.*)/addfile/(.*)", handlers
.BuildersJobsAddFileHandler
),
57 (r
"/builders/jobs/(.*)/buildroot", handlers
.BuildersJobsBuildrootHandler
),
58 (r
"/builders/jobs/(.*)/state/(.*)", handlers
.BuildersJobsStateHandler
),
59 (r
"/builders/keepalive", handlers
.BuildersKeepaliveHandler
),
62 (r
"/jobs/active", handlers
.JobsGetActiveHandler
),
63 (r
"/jobs/latest", handlers
.JobsGetLatestHandler
),
64 (r
"/jobs/queue", handlers
.JobsGetQueueHandler
),
65 (r
"/jobs/(.*)", handlers
.JobsGetHandler
),
68 (r
"/packages/(.*)", handlers
.PackagesGetHandler
),
71 (r
"/uploads/create", handlers
.UploadsCreateHandler
),
72 (r
"/uploads/(.*)/sendchunk", handlers
.UploadsSendChunkHandler
),
73 (r
"/uploads/(.*)/finished", handlers
.UploadsFinishedHandler
),
74 (r
"/uploads/(.*)/destroy", handlers
.UploadsDestroyHandler
),
77 logging
.info("Successfully initialied application")
81 if self
.__pakfire
is None:
82 config_file
= os
.path
.join(BASEDIR
, "..", "pbs.conf")
84 self
.__pakfire
= backend
.Pakfire(config_file
=config_file
)
89 logging
.info("Shutting down application")
93 return tornado
.ioloop
.IOLoop
.instance()
95 def shutdown(self
, *args
):
96 logging
.debug("Caught shutdown signal")
99 def run(self
, port
=81):
100 logging
.debug("Going to background")
102 http_server
= tornado
.httpserver
.HTTPServer(self
, xheaders
=True)
104 # If we are not running in debug mode, we can actually run multiple
105 # frontends to get best performance out of our service.
106 if not self
.settings
["debug"]:
107 http_server
.bind(port
)
108 http_server
.start(num_processes
=4)
110 http_server
.listen(port
)
112 # All requests should be done after 30 seconds or they will be killed.
113 self
.ioloop
.set_blocking_log_threshold(30)
118 logging
.debug("Caught reload signal")