|
|
|
@ -20,8 +20,9 @@ startup_timestamp = datetime.now()
|
|
|
|
|
|
|
|
|
|
class HealthHandler(tornado.web.RequestHandler, metaclass=ABCMeta): |
|
|
|
|
# noinspection PyAttributeOutsideInit |
|
|
|
|
def initialize(self): |
|
|
|
|
def initialize(self, sources=None): |
|
|
|
|
self.git_version = self._load_git_version() |
|
|
|
|
self.sources = sources |
|
|
|
|
|
|
|
|
|
@staticmethod |
|
|
|
|
def _load_git_version(): |
|
|
|
@ -53,6 +54,12 @@ class HealthHandler(tornado.web.RequestHandler, metaclass=ABCMeta):
|
|
|
|
|
health['timestamp'] = isodate.datetime_isoformat(datetime.now()) |
|
|
|
|
health['uptime'] = isodate.duration_isoformat(datetime.now() - startup_timestamp) |
|
|
|
|
|
|
|
|
|
if self.sources: |
|
|
|
|
for s in self.sources: |
|
|
|
|
h = s() |
|
|
|
|
if h is not None: |
|
|
|
|
health = {**health, **h} |
|
|
|
|
|
|
|
|
|
self.set_header("Content-Type", "application/json") |
|
|
|
|
self.write(json.dumps(health, indent=4)) |
|
|
|
|
self.set_status(200) |
|
|
|
@ -70,10 +77,11 @@ class Oas3Handler(tornado.web.RequestHandler, metaclass=ABCMeta):
|
|
|
|
|
self.finish() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def make_app(_auth_provider=None): |
|
|
|
|
def make_app(_auth_provider=None, gitmgr=None): |
|
|
|
|
version_path = r"/v[0-9]" |
|
|
|
|
return tornado.web.Application([ |
|
|
|
|
(version_path + r"/health", HealthHandler), |
|
|
|
|
(version_path + r"/health", HealthHandler, |
|
|
|
|
{"sources": [lambda: {"git-head": gitmgr.head_sha}] if gitmgr else None}), |
|
|
|
|
(version_path + r"/oas3", Oas3Handler), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
@ -89,7 +97,7 @@ def main():
|
|
|
|
|
gitmgr.setup() |
|
|
|
|
gitmgr.printout() |
|
|
|
|
|
|
|
|
|
util.run_tornado_server(make_app(auth_provider), |
|
|
|
|
util.run_tornado_server(make_app(auth_provider, gitmgr), |
|
|
|
|
server_port=port) |
|
|
|
|
|
|
|
|
|
# Teardown |
|
|
|
|