mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-11 12:03:00 +00:00
call make/move certs at a higher level
mostly to allow them to be async
This commit is contained in:
@@ -168,6 +168,7 @@ class Spawner(LoggingConfigurable):
|
|||||||
internal_ssl = Bool(False)
|
internal_ssl = Bool(False)
|
||||||
internal_trust_bundles = Dict()
|
internal_trust_bundles = Dict()
|
||||||
internal_certs_location = Unicode('')
|
internal_certs_location = Unicode('')
|
||||||
|
cert_paths = Dict()
|
||||||
admin_access = Bool(False)
|
admin_access = Bool(False)
|
||||||
api_token = Unicode()
|
api_token = Unicode()
|
||||||
oauth_client_id = Unicode()
|
oauth_client_id = Unicode()
|
||||||
@@ -650,12 +651,10 @@ class Spawner(LoggingConfigurable):
|
|||||||
if self.cpu_guarantee:
|
if self.cpu_guarantee:
|
||||||
env['CPU_GUARANTEE'] = str(self.cpu_guarantee)
|
env['CPU_GUARANTEE'] = str(self.cpu_guarantee)
|
||||||
|
|
||||||
if self.internal_ssl:
|
if self.cert_paths:
|
||||||
paths = self.move_certs(self.create_certs())
|
env['JUPYTERHUB_NOTEBOOK_SSL_KEYFILE'] = self.cert_paths['keyfile']
|
||||||
|
env['JUPYTERHUB_NOTEBOOK_SSL_CERTFILE'] = self.cert_paths['certfile']
|
||||||
env['JUPYTERHUB_NOTEBOOK_SSL_KEYFILE'] = paths['keyfile']
|
env['JUPYTERHUB_NOTEBOOK_SSL_CLIENT_CA'] = self.cert_paths['cafile']
|
||||||
env['JUPYTERHUB_NOTEBOOK_SSL_CERTFILE'] = paths['certfile']
|
|
||||||
env['JUPYTERHUB_NOTEBOOK_SSL_CLIENT_CA'] = paths['cafile']
|
|
||||||
|
|
||||||
return env
|
return env
|
||||||
|
|
||||||
@@ -697,7 +696,7 @@ class Spawner(LoggingConfigurable):
|
|||||||
"""
|
"""
|
||||||
return s.format(**self.template_namespace())
|
return s.format(**self.template_namespace())
|
||||||
|
|
||||||
def create_certs(self, alt_names=None, override=False):
|
async def create_certs(self, alt_names=None, override=False):
|
||||||
"""Create and set ownership for the certs to be used for internal ssl
|
"""Create and set ownership for the certs to be used for internal ssl
|
||||||
|
|
||||||
Keyword Arguments:
|
Keyword Arguments:
|
||||||
@@ -748,7 +747,7 @@ class Spawner(LoggingConfigurable):
|
|||||||
}
|
}
|
||||||
return paths
|
return paths
|
||||||
|
|
||||||
def move_certs(self, paths):
|
async def move_certs(self, paths):
|
||||||
"""Takes certificate paths and makes them available to the notebook server
|
"""Takes certificate paths and makes them available to the notebook server
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
@@ -440,6 +440,11 @@ class User:
|
|||||||
try:
|
try:
|
||||||
# run optional preparation work to bootstrap the notebook
|
# run optional preparation work to bootstrap the notebook
|
||||||
await maybe_future(spawner.run_pre_spawn_hook())
|
await maybe_future(spawner.run_pre_spawn_hook())
|
||||||
|
if self.settings.get('internal_ssl'):
|
||||||
|
self.log.debug("Creating internal SSL certs for %s", spawner._log_name)
|
||||||
|
hub_paths = await maybe_future(spawner.create_certs())
|
||||||
|
spawner.cert_paths = await maybe_future(spawner.move_certs(hub_paths))
|
||||||
|
self.log.debug("Calling Spawner.start for %s", spawner._log_name)
|
||||||
f = maybe_future(spawner.start())
|
f = maybe_future(spawner.start())
|
||||||
# commit any changes in spawner.start (always commit db changes before yield)
|
# commit any changes in spawner.start (always commit db changes before yield)
|
||||||
db.commit()
|
db.commit()
|
||||||
@@ -536,11 +541,11 @@ class User:
|
|||||||
spawner.orm_spawner.state = spawner.get_state()
|
spawner.orm_spawner.state = spawner.get_state()
|
||||||
db.commit()
|
db.commit()
|
||||||
spawner._waiting_for_response = True
|
spawner._waiting_for_response = True
|
||||||
try:
|
|
||||||
key = self.settings.get('internal_ssl_key')
|
key = self.settings.get('internal_ssl_key')
|
||||||
cert = self.settings.get('internal_ssl_cert')
|
cert = self.settings.get('internal_ssl_cert')
|
||||||
ca = self.settings.get('internal_ssl_ca')
|
ca = self.settings.get('internal_ssl_ca')
|
||||||
ssl_context = make_ssl_context(key, cert, cafile=ca)
|
ssl_context = make_ssl_context(key, cert, cafile=ca)
|
||||||
|
try:
|
||||||
resp = await server.wait_up(
|
resp = await server.wait_up(
|
||||||
http=True,
|
http=True,
|
||||||
timeout=spawner.http_timeout,
|
timeout=spawner.http_timeout,
|
||||||
|
Reference in New Issue
Block a user