X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/060d38d627bd1e51dd2b3c6e7de9af6aa7d7b6f3..9fdfd5c5b229ea42193710f891e953b452bd90e7:/services/nodemanager/arvnodeman/status.py diff --git a/services/nodemanager/arvnodeman/status.py b/services/nodemanager/arvnodeman/status.py index 85719d3069..cfd611285c 100644 --- a/services/nodemanager/arvnodeman/status.py +++ b/services/nodemanager/arvnodeman/status.py @@ -41,12 +41,34 @@ class Handler(http.server.BaseHTTPRequestHandler, object): self.send_header('Content-type', 'application/json') self.end_headers() self.wfile.write(tracker.get_json()) + elif self.path == '/_health/ping': + code, msg = self.check_auth() + + if code != 200: + self.send_response(code) + self.wfile.write(msg) + else: + self.send_response(200) + self.send_header('Content-type', 'application/json') + self.end_headers() + self.wfile.write(json.dumps({"health":"OK"})) else: self.send_response(404) def log_message(self, fmt, *args, **kwargs): _logger.info(fmt, *args, **kwargs) + def check_auth(self): + mgmt_token = self.server._config.get('Manage', 'ManagementToken') + auth_header = self.headers.get('Authorization', None) + + if mgmt_token == '': + return 404, "disabled" + elif auth_header == None: + return 401, "authorization required" + elif auth_header != 'Bearer '+mgmt_token: + return 403, "authorization error" + return 200, "" class Tracker(object): def __init__(self):