Added configurable default server name attribute to better match behavior described for user-redirect in urls.md in the docs

This commit is contained in:
William Krinsman
2019-09-18 12:07:48 -07:00
parent 2e8ddeb114
commit 7fcd6ad450
2 changed files with 24 additions and 2 deletions

View File

@@ -911,6 +911,22 @@ class JupyterHub(Application):
""", """,
).tag(config=True) ).tag(config=True)
default_server_name = Unicode(
"",
help="If named servers are enabled, default name of server to spawn or open, e.g. by user-redirect.",
).tag(config=True)
# Ensure that default_server_name doesn't do anything if named servers aren't allowed
_default_server_name = Unicode(
help="Non-configurable version exposed to JupyterHub."
)
@default('_default_server_name')
def _set_default_server_name(self):
if self.allow_named_servers:
return self.default_server_name
else:
return ""
# class for spawning single-user servers # class for spawning single-user servers
spawner_class = EntryPointType( spawner_class = EntryPointType(
default_value=LocalProcessSpawner, default_value=LocalProcessSpawner,
@@ -2060,6 +2076,7 @@ class JupyterHub(Application):
domain=self.domain, domain=self.domain,
statsd=self.statsd, statsd=self.statsd,
allow_named_servers=self.allow_named_servers, allow_named_servers=self.allow_named_servers,
default_server_name=self._default_server_name,
named_server_limit_per_user=self.named_server_limit_per_user, named_server_limit_per_user=self.named_server_limit_per_user,
oauth_provider=self.oauth_provider, oauth_provider=self.oauth_provider,
concurrent_spawn_limit=self.concurrent_spawn_limit, concurrent_spawn_limit=self.concurrent_spawn_limit,

View File

@@ -389,9 +389,14 @@ class User:
Full name.domain/path if using subdomains, otherwise just my /base/url Full name.domain/path if using subdomains, otherwise just my /base/url
""" """
if self.settings.get('subdomain_host'): if self.settings.get('subdomain_host'):
return '{host}{path}'.format(host=self.host, path=self.base_url) url = '{host}{path}'.format(host=self.host, path=self.base_url)
else: else:
return self.base_url url = self.base_url
if self.settings.get('default_server_name'):
return url_path_join(url, self.settings.get('default_server_name'))
else:
return url
def server_url(self, server_name=''): def server_url(self, server_name=''):
"""Get the url for a server with a given name""" """Get the url for a server with a given name"""