mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-15 14:03:02 +00:00
Address review in named_servers
from willingc - consistency of repr/str when logging usernames - cleanup some attribute declarations - add comments about db session weirdness
This commit is contained in:
@@ -226,7 +226,7 @@ class UserNamedServerAPIHandler(APIHandler):
|
|||||||
raise web.HTTPError(400, "Named servers are not enabled.")
|
raise web.HTTPError(400, "Named servers are not enabled.")
|
||||||
user = self.find_user(name)
|
user = self.find_user(name)
|
||||||
if user is None:
|
if user is None:
|
||||||
raise web.HTTPError(404, "No such user %r" % name)
|
raise web.HTTPError(404, "No such user '%s'" % name)
|
||||||
|
|
||||||
options = self.get_json_body()
|
options = self.get_json_body()
|
||||||
yield self.spawn_single_user(user, server_name, options=options)
|
yield self.spawn_single_user(user, server_name, options=options)
|
||||||
@@ -241,19 +241,19 @@ class UserNamedServerAPIHandler(APIHandler):
|
|||||||
raise web.HTTPError(400, "Named servers are not enabled.")
|
raise web.HTTPError(400, "Named servers are not enabled.")
|
||||||
user = self.find_user(name)
|
user = self.find_user(name)
|
||||||
if user is None:
|
if user is None:
|
||||||
raise web.HTTPError(404, "No such user %r" % name)
|
raise web.HTTPError(404, "No such user '%s'" % name)
|
||||||
if server_name not in user.spawners:
|
if server_name not in user.spawners:
|
||||||
raise web.HTTPError(404, "%s has no server named %r" % (name, server_name))
|
raise web.HTTPError(404, "%s has no server named '%s'" % (name, server_name))
|
||||||
spawner = user.spawners[server_name]
|
spawner = user.spawners[server_name]
|
||||||
if spawner._stop_pending:
|
if spawner._stop_pending:
|
||||||
self.set_status(202)
|
self.set_status(202)
|
||||||
return
|
return
|
||||||
if not user.running(server_name):
|
if not user.running(server_name):
|
||||||
raise web.HTTPError(400, "%s's server %r is not running" % (name, server_name))
|
raise web.HTTPError(400, "%s's server %s is not running" % (name, server_name))
|
||||||
# include notify, so that a server that died is noticed immediately
|
# include notify, so that a server that died is noticed immediately
|
||||||
status = yield spawner.poll_and_notify()
|
status = yield spawner.poll_and_notify()
|
||||||
if status is not None:
|
if status is not None:
|
||||||
raise web.HTTPError(400, "%s's server %r is not running" % (name, server_name))
|
raise web.HTTPError(400, "%s's server %s is not running" % (name, server_name))
|
||||||
yield self.stop_single_user(user, server_name)
|
yield self.stop_single_user(user, server_name)
|
||||||
status = 202 if spawner._stop_pending else 204
|
status = 202 if spawner._stop_pending else 204
|
||||||
self.set_status(status)
|
self.set_status(status)
|
||||||
|
@@ -928,9 +928,9 @@ class JupyterHub(Application):
|
|||||||
try:
|
try:
|
||||||
yield gen.maybe_future(self.authenticator.add_user(user))
|
yield gen.maybe_future(self.authenticator.add_user(user))
|
||||||
except Exception:
|
except Exception:
|
||||||
self.log.exception("Error adding user %r already in db", user.name)
|
self.log.exception("Error adding user %s already in db", user.name)
|
||||||
if self.authenticator.delete_invalid_users:
|
if self.authenticator.delete_invalid_users:
|
||||||
self.log.warning("Deleting invalid user %r from the Hub database", user.name)
|
self.log.warning("Deleting invalid user %s from the Hub database", user.name)
|
||||||
db.delete(user)
|
db.delete(user)
|
||||||
else:
|
else:
|
||||||
self.log.warning(dedent("""
|
self.log.warning(dedent("""
|
||||||
@@ -993,7 +993,7 @@ class JupyterHub(Application):
|
|||||||
created = False
|
created = False
|
||||||
if obj is None:
|
if obj is None:
|
||||||
created = True
|
created = True
|
||||||
self.log.debug("Adding %s %r to database", kind, name)
|
self.log.debug("Adding %s %s to database", kind, name)
|
||||||
obj = Class(name=name)
|
obj = Class(name=name)
|
||||||
db.add(obj)
|
db.add(obj)
|
||||||
db.commit()
|
db.commit()
|
||||||
@@ -1118,7 +1118,7 @@ class JupyterHub(Application):
|
|||||||
parts.append('admin')
|
parts.append('admin')
|
||||||
for name, spawner in sorted(user.spawners.items(), key=itemgetter(0)):
|
for name, spawner in sorted(user.spawners.items(), key=itemgetter(0)):
|
||||||
if spawner.server:
|
if spawner.server:
|
||||||
parts.append('%r running at %s' % (name, spawner.server))
|
parts.append('%s:%s running at %s' % (user.name, name, spawner.server))
|
||||||
return ' '.join(parts)
|
return ' '.join(parts)
|
||||||
|
|
||||||
@gen.coroutine
|
@gen.coroutine
|
||||||
|
@@ -51,11 +51,11 @@ class Spawner(LoggingConfigurable):
|
|||||||
_proxy_pending = False
|
_proxy_pending = False
|
||||||
_waiting_for_response = False
|
_waiting_for_response = False
|
||||||
|
|
||||||
|
authenticator = Any()
|
||||||
|
hub = Any()
|
||||||
orm_spawner = Any()
|
orm_spawner = Any()
|
||||||
user = Any()
|
user = Any()
|
||||||
hub = Any()
|
|
||||||
authenticator = Any()
|
|
||||||
orm_spawner = Any()
|
|
||||||
@property
|
@property
|
||||||
def server(self):
|
def server(self):
|
||||||
if self.orm_spawner and self.orm_spawner.server:
|
if self.orm_spawner and self.orm_spawner.server:
|
||||||
|
@@ -88,6 +88,7 @@ class User(HasTraits):
|
|||||||
def _log_default(self):
|
def _log_default(self):
|
||||||
return app_log
|
return app_log
|
||||||
|
|
||||||
|
spawners = None
|
||||||
settings = Dict()
|
settings = Dict()
|
||||||
|
|
||||||
db = Any(allow_none=True)
|
db = Any(allow_none=True)
|
||||||
@@ -103,7 +104,10 @@ class User(HasTraits):
|
|||||||
# db session changed, re-get orm User
|
# db session changed, re-get orm User
|
||||||
db = change.new
|
db = change.new
|
||||||
if self._user_id is not None:
|
if self._user_id is not None:
|
||||||
|
# fetch our orm.User from the new db session
|
||||||
self.orm_user = db.query(orm.User).filter(orm.User.id == self._user_id).first()
|
self.orm_user = db.query(orm.User).filter(orm.User.id == self._user_id).first()
|
||||||
|
# update our spawners' ORM objects with the new session,
|
||||||
|
# which can be found on our new orm_user.
|
||||||
for name, spawner in self.spawners.items():
|
for name, spawner in self.spawners.items():
|
||||||
spawner.orm_spawner = self.orm_user.orm_spawners[name]
|
spawner.orm_spawner = self.orm_user.orm_spawners[name]
|
||||||
|
|
||||||
@@ -116,8 +120,6 @@ class User(HasTraits):
|
|||||||
else:
|
else:
|
||||||
self._user_id = None
|
self._user_id = None
|
||||||
|
|
||||||
spawners = None
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def authenticator(self):
|
def authenticator(self):
|
||||||
return self.settings.get('authenticator', None)
|
return self.settings.get('authenticator', None)
|
||||||
|
Reference in New Issue
Block a user