mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-08 02:24:08 +00:00
Merge pull request #1167 from minrk/more-env-less-argv
pass more arguments as environment variables instead of CLI args
This commit is contained in:
@@ -71,6 +71,12 @@ class _MockUser(HasTraits):
|
|||||||
return self.host + self.server.base_url
|
return self.host + self.server.base_url
|
||||||
else:
|
else:
|
||||||
return self.server.base_url
|
return self.server.base_url
|
||||||
|
|
||||||
|
@property
|
||||||
|
def base_url(self):
|
||||||
|
if not self.server:
|
||||||
|
return ''
|
||||||
|
return self.server.base_url
|
||||||
|
|
||||||
# We probably shouldn't use a Spawner here,
|
# We probably shouldn't use a Spawner here,
|
||||||
# but there are too many concepts to share.
|
# but there are too many concepts to share.
|
||||||
@@ -261,9 +267,6 @@ class Service(LoggingConfigurable):
|
|||||||
env.update(self.environment)
|
env.update(self.environment)
|
||||||
|
|
||||||
env['JUPYTERHUB_SERVICE_NAME'] = self.name
|
env['JUPYTERHUB_SERVICE_NAME'] = self.name
|
||||||
env['JUPYTERHUB_API_TOKEN'] = self.api_token
|
|
||||||
env['JUPYTERHUB_API_URL'] = self.hub.api_url
|
|
||||||
env['JUPYTERHUB_BASE_URL'] = self.base_url
|
|
||||||
if self.url:
|
if self.url:
|
||||||
env['JUPYTERHUB_SERVICE_URL'] = self.url
|
env['JUPYTERHUB_SERVICE_URL'] = self.url
|
||||||
env['JUPYTERHUB_SERVICE_PREFIX'] = self.server.base_url
|
env['JUPYTERHUB_SERVICE_PREFIX'] = self.server.base_url
|
||||||
|
@@ -193,6 +193,14 @@ class SingleUserNotebookApp(NotebookApp):
|
|||||||
|
|
||||||
user = CUnicode().tag(config=True)
|
user = CUnicode().tag(config=True)
|
||||||
group = CUnicode().tag(config=True)
|
group = CUnicode().tag(config=True)
|
||||||
|
|
||||||
|
@default('user')
|
||||||
|
def _default_user(self):
|
||||||
|
return os.environ.get('JUPYTERHUB_USER') or ''
|
||||||
|
|
||||||
|
@default('group')
|
||||||
|
def _default_group(self):
|
||||||
|
return os.environ.get('JUPYTERHUB_GROUP') or ''
|
||||||
|
|
||||||
@observe('user')
|
@observe('user')
|
||||||
def _user_changed(self, change):
|
def _user_changed(self, change):
|
||||||
@@ -233,13 +241,21 @@ class SingleUserNotebookApp(NotebookApp):
|
|||||||
def _port_default(self):
|
def _port_default(self):
|
||||||
if os.environ.get('JUPYTERHUB_SERVICE_URL'):
|
if os.environ.get('JUPYTERHUB_SERVICE_URL'):
|
||||||
url = urlparse(os.environ['JUPYTERHUB_SERVICE_URL'])
|
url = urlparse(os.environ['JUPYTERHUB_SERVICE_URL'])
|
||||||
return url.port
|
if url.port:
|
||||||
|
return url.port
|
||||||
|
elif url.scheme == 'http':
|
||||||
|
return 80
|
||||||
|
elif url.scheme == 'https':
|
||||||
|
return 443
|
||||||
|
return 8888
|
||||||
|
|
||||||
@default('ip')
|
@default('ip')
|
||||||
def _ip_default(self):
|
def _ip_default(self):
|
||||||
if os.environ.get('JUPYTERHUB_SERVICE_URL'):
|
if os.environ.get('JUPYTERHUB_SERVICE_URL'):
|
||||||
url = urlparse(os.environ['JUPYTERHUB_SERVICE_URL'])
|
url = urlparse(os.environ['JUPYTERHUB_SERVICE_URL'])
|
||||||
return url.hostname
|
if url.hostname:
|
||||||
|
return url.hostname
|
||||||
|
return '127.0.0.1'
|
||||||
|
|
||||||
aliases = aliases
|
aliases = aliases
|
||||||
flags = flags
|
flags = flags
|
||||||
|
@@ -65,7 +65,7 @@ class Spawner(LoggingConfigurable):
|
|||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
ip = Unicode('127.0.0.1',
|
ip = Unicode('',
|
||||||
help="""
|
help="""
|
||||||
The IP address (or hostname) the single-user server should listen on.
|
The IP address (or hostname) the single-user server should listen on.
|
||||||
|
|
||||||
@@ -434,6 +434,12 @@ class Spawner(LoggingConfigurable):
|
|||||||
env['JUPYTERHUB_HOST'] = self.hub.public_host
|
env['JUPYTERHUB_HOST'] = self.hub.public_host
|
||||||
env['JUPYTERHUB_OAUTH_CALLBACK_URL'] = \
|
env['JUPYTERHUB_OAUTH_CALLBACK_URL'] = \
|
||||||
url_path_join(self.user.url, 'oauth_callback')
|
url_path_join(self.user.url, 'oauth_callback')
|
||||||
|
|
||||||
|
# Info previously passed on args
|
||||||
|
env['JUPYTERHUB_USER'] = self.user.name
|
||||||
|
env['JUPYTERHUB_API_URL'] = self.hub.api_url
|
||||||
|
env['JUPYTERHUB_BASE_URL'] = self.hub.base_url[:-4]
|
||||||
|
env['JUPYTERHUB_SERVICE_PREFIX'] = self.user.base_url
|
||||||
|
|
||||||
# Put in limit and guarantee info if they exist.
|
# Put in limit and guarantee info if they exist.
|
||||||
# Note that this is for use by the humans / notebook extensions in the
|
# Note that this is for use by the humans / notebook extensions in the
|
||||||
@@ -493,13 +499,7 @@ class Spawner(LoggingConfigurable):
|
|||||||
|
|
||||||
Doesn't expect shell expansion to happen.
|
Doesn't expect shell expansion to happen.
|
||||||
"""
|
"""
|
||||||
args = [
|
args = []
|
||||||
'--user="%s"' % self.user.name,
|
|
||||||
'--base-url="%s"' % self.user.base_url,
|
|
||||||
'--hub-host="%s"' % self.hub.public_host,
|
|
||||||
'--hub-prefix="%s"' % self.hub.base_url,
|
|
||||||
'--hub-api-url="%s"' % self.hub.api_url,
|
|
||||||
]
|
|
||||||
if self.ip:
|
if self.ip:
|
||||||
args.append('--ip="%s"' % self.ip)
|
args.append('--ip="%s"' % self.ip)
|
||||||
|
|
||||||
|
@@ -423,10 +423,13 @@ def test_spawn(app, io_loop):
|
|||||||
r = requests.get(ujoin(url, 'args'))
|
r = requests.get(ujoin(url, 'args'))
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
argv = r.json()
|
argv = r.json()
|
||||||
for expected in ['--user="%s"' % name, '--base-url="%s"' % user.server.base_url]:
|
assert '--port' in ' '.join(argv)
|
||||||
assert expected in argv
|
r = requests.get(ujoin(url, 'env'))
|
||||||
|
env = r.json()
|
||||||
|
for expected in ['JUPYTERHUB_USER', 'JUPYTERHUB_BASE_URL', 'JUPYTERHUB_API_TOKEN']:
|
||||||
|
assert expected in env
|
||||||
if app.subdomain_host:
|
if app.subdomain_host:
|
||||||
assert '--hub-host="%s"' % app.subdomain_host in argv
|
assert env['JUPYTERHUB_HOST'] == app.subdomain_host
|
||||||
|
|
||||||
r = api_request(app, 'users', name, 'server', method='delete')
|
r = api_request(app, 'users', name, 'server', method='delete')
|
||||||
assert r.status_code == 204
|
assert r.status_code == 204
|
||||||
|
Reference in New Issue
Block a user