diff --git a/jupyterhub/apihandlers/base.py b/jupyterhub/apihandlers/base.py index 7b9918f9..a5f7ed2d 100644 --- a/jupyterhub/apihandlers/base.py +++ b/jupyterhub/apihandlers/base.py @@ -114,7 +114,7 @@ class APIHandler(BaseHandler): if spawner.pending: s['pending'] = spawner.pending if spawner.server: - s['url'] = user.url + name + '/' + s['url'] = url_path_join(user.url, name, '/') return model def group_model(self, group): diff --git a/jupyterhub/apihandlers/users.py b/jupyterhub/apihandlers/users.py index 01682d1a..a206ee37 100644 --- a/jupyterhub/apihandlers/users.py +++ b/jupyterhub/apihandlers/users.py @@ -185,8 +185,6 @@ class UserServerAPIHandler(APIHandler): user = self.find_user(name) if server_name and not self.allow_named_servers: raise web.HTTPError(400, "Named servers are not enabled.") - if self.allow_named_servers and not server_name: - server_name = user.default_server_name() spawner = user.spawners[server_name] pending = spawner.pending if pending == 'spawn': diff --git a/jupyterhub/handlers/base.py b/jupyterhub/handlers/base.py index a06fa806..af16c9c2 100644 --- a/jupyterhub/handlers/base.py +++ b/jupyterhub/handlers/base.py @@ -20,7 +20,7 @@ from .. import __version__ from .. import orm from ..objects import Server from ..spawner import LocalProcessSpawner -from ..utils import default_server_name, url_path_join +from ..utils import url_path_join # pattern for the authentication token header auth_header_pat = re.compile(r'^(?:token|bearer)\s+([^\s]+)$', flags=re.IGNORECASE) @@ -380,8 +380,6 @@ class BaseHandler(RequestHandler): self.extra_error_html = self.spawn_home_error user_server_name = user.name - if self.allow_named_servers and not server_name: - server_name = default_server_name(user) if server_name: user_server_name = '%s:%s' % (user.name, server_name) diff --git a/jupyterhub/tests/test_named_servers.py b/jupyterhub/tests/test_named_servers.py index 1ffd7fe3..05febbdd 100644 --- a/jupyterhub/tests/test_named_servers.py +++ b/jupyterhub/tests/test_named_servers.py @@ -49,13 +49,13 @@ def test_create_named_server(app, named_servers): 'kind': 'user', 'admin': False, 'pending': None, - 'server': None, + 'server': user.url, 'servers': { name: { 'name': name, 'url': url_path_join(user.url, name, '/'), } - for name in ['1', servername] + for name in ['', servername] }, } @@ -86,13 +86,13 @@ def test_delete_named_server(app, named_servers): 'kind': 'user', 'admin': False, 'pending': None, - 'server': None, + 'server': user.url, 'servers': { name: { 'name': name, 'url': url_path_join(user.url, name, '/'), } - for name in ['1'] + for name in [''] }, } diff --git a/jupyterhub/user.py b/jupyterhub/user.py index b8439edc..dcb6d67d 100644 --- a/jupyterhub/user.py +++ b/jupyterhub/user.py @@ -12,7 +12,7 @@ from tornado import gen from tornado.log import app_log from traitlets import HasTraits, Any, Dict, default -from .utils import url_path_join, default_server_name +from .utils import url_path_join from . import orm from ._version import _check_version, __version__ diff --git a/jupyterhub/utils.py b/jupyterhub/utils.py index 7164799e..5b6e181f 100644 --- a/jupyterhub/utils.py +++ b/jupyterhub/utils.py @@ -298,17 +298,3 @@ def url_path_join(*pieces): return result - -def default_server_name(user): - """Return the default name for a new server for a given user. - - Will be the first available integer string, e.g. '1' or '2'. - """ - existing_names = set(user.spawners) - # if there are 5 servers, count from 1 to 6 - for n in range(1, len(existing_names) + 2): - name = str(n) - if name not in existing_names: - return name - raise RuntimeError("It should be impossible to get here") -