|
12 | 12 |
|
13 | 13 | from tornado import web
|
14 | 14 | from tornado.httpclient import AsyncHTTPClient, HTTPClientError, HTTPResponse
|
15 |
| -from traitlets import Bool, Float, Int, TraitError, Unicode, default, validate |
| 15 | +from traitlets import Bool, Float, Int, TraitError, Unicode, default, observe, validate |
16 | 16 | from traitlets.config import SingletonConfigurable
|
17 | 17 |
|
18 | 18 |
|
@@ -282,20 +282,29 @@ def __init__(self, **kwargs):
|
282 | 282 | # store of cookies with store time
|
283 | 283 | self._cookies = {} # type: ty.Dict[str, ty.Tuple[Morsel, datetime]]
|
284 | 284 |
|
285 |
| - env_whitelist_default_value = "" |
286 |
| - env_whitelist_env = "JUPYTER_GATEWAY_ENV_WHITELIST" |
287 |
| - env_whitelist = Unicode( |
288 |
| - default_value=env_whitelist_default_value, |
| 285 | + allowed_envs_default_value = "" |
| 286 | + allowed_envs_env = "JUPYTER_GATEWAY_ALLOWED_ENVS" |
| 287 | + allowed_envs = Unicode( |
| 288 | + default_value=allowed_envs_default_value, |
289 | 289 | config=True,
|
290 | 290 | help="""A comma-separated list of environment variable names that will be included, along with
|
291 |
| - their values, in the kernel startup request. The corresponding `env_whitelist` configuration |
| 291 | + their values, in the kernel startup request. The corresponding `allowed_envs` configuration |
292 | 292 | value must also be set on the Gateway server - since that configuration value indicates which
|
293 |
| - environmental values to make available to the kernel. (JUPYTER_GATEWAY_ENV_WHITELIST env var)""", |
| 293 | + environmental values to make available to the kernel. (JUPYTER_GATEWAY_ALLOWED_ENVS env var)""", |
294 | 294 | )
|
295 | 295 |
|
296 |
| - @default("env_whitelist") |
297 |
| - def _env_whitelist_default(self): |
298 |
| - return os.environ.get(self.env_whitelist_env, self.env_whitelist_default_value) |
| 296 | + @default("allowed_envs") |
| 297 | + def _allowed_envs_default(self): |
| 298 | + return os.environ.get( |
| 299 | + "JUPYTER_GATEWAY_ENV_WHITELIST", |
| 300 | + os.environ.get(self.allowed_envs_env, self.allowed_envs_default_value), |
| 301 | + ) |
| 302 | + |
| 303 | + env_whitelist = Unicode( |
| 304 | + default_value=allowed_envs_default_value, |
| 305 | + config=True, |
| 306 | + help="""Deprecated, use `GatewayClient.allowed_envs`""", |
| 307 | + ) |
299 | 308 |
|
300 | 309 | gateway_retry_interval_default_value = 1.0
|
301 | 310 | gateway_retry_interval_env = "JUPYTER_GATEWAY_RETRY_INTERVAL"
|
@@ -386,6 +395,35 @@ def accept_cookies_default(self):
|
386 | 395 | not in ["no", "false"]
|
387 | 396 | )
|
388 | 397 |
|
| 398 | + _deprecated_traits = { |
| 399 | + "env_whitelist": ("allowed_envs", "2.0"), |
| 400 | + } |
| 401 | + |
| 402 | + # Method copied from |
| 403 | + # https://github.com/jupyterhub/jupyterhub/blob/d1a85e53dccfc7b1dd81b0c1985d158cc6b61820/jupyterhub/auth.py#L143-L161 |
| 404 | + @observe(*list(_deprecated_traits)) |
| 405 | + def _deprecated_trait(self, change): |
| 406 | + """observer for deprecated traits""" |
| 407 | + old_attr = change.name |
| 408 | + new_attr, version = self._deprecated_traits[old_attr] |
| 409 | + new_value = getattr(self, new_attr) |
| 410 | + if new_value != change.new: |
| 411 | + # only warn if different |
| 412 | + # protects backward-compatible config from warnings |
| 413 | + # if they set the same value under both names |
| 414 | + self.log.warning( |
| 415 | + ( |
| 416 | + "{cls}.{old} is deprecated in jupyter_server " |
| 417 | + "{version}, use {cls}.{new} instead" |
| 418 | + ).format( |
| 419 | + cls=self.__class__.__name__, |
| 420 | + old=old_attr, |
| 421 | + new=new_attr, |
| 422 | + version=version, |
| 423 | + ) |
| 424 | + ) |
| 425 | + setattr(self, new_attr, change.new) |
| 426 | + |
389 | 427 | @property
|
390 | 428 | def gateway_enabled(self):
|
391 | 429 | return bool(self.url is not None and len(self.url) > 0)
|
|
0 commit comments