mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 15:33:02 +00:00
add a dict to save spawner's instances, fix user.server with server
This commit is contained in:
@@ -350,11 +350,25 @@ class Spawner(LoggingConfigurable):
|
|||||||
"""
|
"""
|
||||||
).tag(config=True)
|
).tag(config=True)
|
||||||
|
|
||||||
|
_instances = {}
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
super(Spawner, self).__init__(**kwargs)
|
super(Spawner, self).__init__(**kwargs)
|
||||||
if self.user.state:
|
if self.user.state:
|
||||||
self.load_state(self.user.state)
|
self.load_state(self.user.state)
|
||||||
|
|
||||||
|
def save_spawner(self, server_name):
|
||||||
|
Spawner._instances[server_name] = self
|
||||||
|
self.server_name = server_name
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_spawners(cls):
|
||||||
|
return cls._instances
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_spawner(cls, server_name):
|
||||||
|
return cls._instances[server_name]
|
||||||
|
|
||||||
def load_state(self, state):
|
def load_state(self, state):
|
||||||
"""Restore state of spawner from database.
|
"""Restore state of spawner from database.
|
||||||
|
|
||||||
@@ -469,8 +483,8 @@ class Spawner(LoggingConfigurable):
|
|||||||
ns (dict): namespace for string formatting.
|
ns (dict): namespace for string formatting.
|
||||||
"""
|
"""
|
||||||
d = {'username': self.user.name}
|
d = {'username': self.user.name}
|
||||||
if self.user.server:
|
if self.server:
|
||||||
d['base_url'] = self.server_base_url
|
d['base_url'] = self.server.base_url
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def format_string(self, s):
|
def format_string(self, s):
|
||||||
@@ -495,7 +509,7 @@ class Spawner(LoggingConfigurable):
|
|||||||
"""
|
"""
|
||||||
args = [
|
args = [
|
||||||
'--user="%s"' % self.user.name,
|
'--user="%s"' % self.user.name,
|
||||||
'--base-url="%s"' % self.server_base_url,
|
'--base-url="%s"' % self.server.base_url,
|
||||||
'--hub-host="%s"' % self.hub.host,
|
'--hub-host="%s"' % self.hub.host,
|
||||||
'--hub-prefix="%s"' % self.hub.server.base_url,
|
'--hub-prefix="%s"' % self.hub.server.base_url,
|
||||||
'--hub-api-url="%s"' % self.hub.api_url,
|
'--hub-api-url="%s"' % self.hub.api_url,
|
||||||
@@ -505,9 +519,9 @@ class Spawner(LoggingConfigurable):
|
|||||||
|
|
||||||
if self.port:
|
if self.port:
|
||||||
args.append('--port=%i' % self.port)
|
args.append('--port=%i' % self.port)
|
||||||
elif self.user.server.port:
|
elif self.server.port:
|
||||||
self.log.warning("Setting port from user.server is deprecated as of JupyterHub 0.7.")
|
self.log.warning("Setting port from user.server is deprecated as of JupyterHub 0.7.")
|
||||||
args.append('--port=%i' % self.user.server.port)
|
args.append('--port=%i' % self.server.port)
|
||||||
|
|
||||||
if self.notebook_dir:
|
if self.notebook_dir:
|
||||||
notebook_dir = self.format_string(self.notebook_dir)
|
notebook_dir = self.format_string(self.notebook_dir)
|
||||||
@@ -861,8 +875,8 @@ class LocalProcessSpawner(Spawner):
|
|||||||
# A deprecation warning will be shown if the subclass
|
# A deprecation warning will be shown if the subclass
|
||||||
# does not return ip, port.
|
# does not return ip, port.
|
||||||
if self.ip:
|
if self.ip:
|
||||||
self.user.server.ip = self.ip
|
self.server.ip = self.ip
|
||||||
self.user.server.port = self.port
|
self.server.port = self.port
|
||||||
return (self.ip or '127.0.0.1', self.port)
|
return (self.ip or '127.0.0.1', self.port)
|
||||||
|
|
||||||
@gen.coroutine
|
@gen.coroutine
|
||||||
|
@@ -166,9 +166,9 @@ class User(HasTraits):
|
|||||||
@property
|
@property
|
||||||
def proxy_path(self):
|
def proxy_path(self):
|
||||||
if self.settings.get('subdomain_host'):
|
if self.settings.get('subdomain_host'):
|
||||||
return url_path_join('/' + self.domain, self.server_base_url)
|
return url_path_join('/' + self.domain, self.base_url)
|
||||||
else:
|
else:
|
||||||
return self.server_base_url
|
return self.base_url
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def domain(self):
|
def domain(self):
|
||||||
@@ -235,12 +235,11 @@ class User(HasTraits):
|
|||||||
api_token = self.new_api_token()
|
api_token = self.new_api_token()
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
self.server_base_url = base_url
|
# here you create the instance
|
||||||
|
|
||||||
spawner = self.spawner
|
spawner = self.spawner
|
||||||
# Passing server_name and base_url to the spawner
|
# Passing server_name and base_url to the spawner
|
||||||
spawner.server_base_url = base_url
|
spawner.save_spawner(server_name)
|
||||||
spawner.server_name = server_name
|
spawner.server = server
|
||||||
spawner.user_options = options or {}
|
spawner.user_options = options or {}
|
||||||
# we are starting a new server, make sure it doesn't restore state
|
# we are starting a new server, make sure it doesn't restore state
|
||||||
spawner.clear_state()
|
spawner.clear_state()
|
||||||
|
Reference in New Issue
Block a user