Try and try again
This commit is contained in:
parent
07a2e2238e
commit
c002125e12
|
@ -173,22 +173,72 @@ hub:
|
||||||
|
|
||||||
|
|
||||||
class RefreshHandler(HubAuthenticated, RequestHandler):
|
class RefreshHandler(HubAuthenticated, RequestHandler):
|
||||||
# @authenticated
|
def api_request(self, method, url, **kwargs):
|
||||||
|
"""Make an API request"""
|
||||||
|
url = url_path_join(self.hub_auth.api_url, url)
|
||||||
|
allow_404 = kwargs.pop('allow_404', False)
|
||||||
|
headers = kwargs.setdefault('headers', {})
|
||||||
|
headers.setdefault('Authorization',
|
||||||
|
'token %s' % self.hub_auth.api_token)
|
||||||
|
try:
|
||||||
|
r = requests.request(method, url, **kwargs)
|
||||||
|
except requests.ConnectionError as e:
|
||||||
|
app_log.error("Error connecting to %s: %s", url, e)
|
||||||
|
msg = "Failed to connect to Hub API at %r." % url
|
||||||
|
msg += " Is the Hub accessible at this URL (from host: %s)?" % socket.gethostname(
|
||||||
|
)
|
||||||
|
if '127.0.0.1' in url:
|
||||||
|
msg += " Make sure to set c.JupyterHub.hub_ip to an IP accessible to" + \
|
||||||
|
" single-user servers if the servers are not on the same host as the Hub."
|
||||||
|
raise HTTPError(500, msg)
|
||||||
|
|
||||||
|
data = None
|
||||||
|
if r.status_code == 404 and allow_404:
|
||||||
|
pass
|
||||||
|
elif r.status_code == 403:
|
||||||
|
app_log.error(
|
||||||
|
"I don't have permission to check authorization with JupyterHub, my auth token may have expired: [%i] %s",
|
||||||
|
r.status_code, r.reason)
|
||||||
|
app_log.error(r.text)
|
||||||
|
raise HTTPError(
|
||||||
|
500,
|
||||||
|
"Permission failure checking authorization, I may need a new token"
|
||||||
|
)
|
||||||
|
elif r.status_code >= 500:
|
||||||
|
app_log.error("Upstream failure verifying auth token: [%i] %s",
|
||||||
|
r.status_code, r.reason)
|
||||||
|
app_log.error(r.text)
|
||||||
|
raise HTTPError(
|
||||||
|
502, "Failed to check authorization (upstream problem)")
|
||||||
|
elif r.status_code >= 400:
|
||||||
|
app_log.warning("Failed to check authorization: [%i] %s",
|
||||||
|
r.status_code, r.reason)
|
||||||
|
app_log.warning(r.text)
|
||||||
|
raise HTTPError(500, "Failed to check authorization")
|
||||||
|
else:
|
||||||
|
data = r.json()
|
||||||
|
|
||||||
|
return data
|
||||||
|
@authenticated
|
||||||
def get(self):
|
def get(self):
|
||||||
user_model = self.get_current_user()
|
user_model = self.get_current_user()
|
||||||
user_model = {'helloooooo': 'hej'}
|
user_model = {'helloooooo': 'hej'}
|
||||||
self.set_header('content-type', 'application/json')
|
self.set_header('content-type', 'application/json')
|
||||||
self.write(json.dumps(user_model, indent=1, sort_keys=True))
|
self.write(json.dumps(user_model, indent=1, sort_keys=True))
|
||||||
|
|
||||||
|
class PingHandler(RequestHandler):
|
||||||
|
|
||||||
|
def get(self):
|
||||||
|
self.set_header('content-type', 'application/json')
|
||||||
|
self.write(json.dumps({'ping': 1}))
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
prefix = '/services/refresh-token/'
|
tornado.options.parse_command_line()
|
||||||
app = Application(
|
app = Application([
|
||||||
[
|
(os.environ['JUPYTERHUB_SERVICE_PREFIX'] + 'tokens', RefreshHandler),
|
||||||
(prefix, RefreshHandler),
|
(os.environ['JUPYTERHUB_SERVICE_PREFIX'] + '/?', PingHandler),
|
||||||
(r'.*', RefreshHandler),
|
])
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
http_server = HTTPServer(app)
|
http_server = HTTPServer(app)
|
||||||
url = urlparse(os.environ['JUPYTERHUB_SERVICE_URL'])
|
url = urlparse(os.environ['JUPYTERHUB_SERVICE_URL'])
|
||||||
|
@ -196,6 +246,7 @@ hub:
|
||||||
http_server.listen(url.port)
|
http_server.listen(url.port)
|
||||||
|
|
||||||
IOLoop.current().start()
|
IOLoop.current().start()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
networkPolicy:
|
networkPolicy:
|
||||||
|
|
Loading…
Reference in a new issue