From 7a13cd12f66cad735bd9df58637fa826f4fadc65 Mon Sep 17 00:00:00 2001 From: Kevin Bates Date: Tue, 11 Feb 2020 08:15:46 -0800 Subject: [PATCH 1/2] Add env variable support for port options In order to better support use cases relating to containerized environments, this change adds environment variable support for the `--port` option. Since anyone setting a specific port probably doesn't want port retry logic enabled, the `--port-retries` option has also been backed by an env. Option `--port` will be backed by env `JUPYTER_PORT` and still defaults to `8888`. Option `--port-retries` will be backed by env `JUPYTER_PORT_RETRIES` and still defaults to `50`. The CLI options will override those set via the envrionment, but environment values override those set via configuration files. Closes #5212 --- notebook/notebookapp.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index a657ce82d5..66c2f7e194 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -707,14 +707,27 @@ def _valdate_ip(self, proposal): or containerized setups for example).""") ) - port = Integer(8888, config=True, - help=_("The port the notebook server will listen on.") + port_env = 'JUPYTER_PORT' + port_default_value = 8888 + port = Integer(port_default_value, config=True, + help=_("The port the notebook server will listen on (env: JUPYTER_PORT).") ) - port_retries = Integer(50, config=True, - help=_("The number of additional ports to try if the specified port is not available.") + @default('port') + def port_default(self): + return int(os.getenv(self.port_env, self.port_default_value)) + + port_retries_env = 'JUPYTER_PORT_RETRIES' + port_retries_default_value = 50 + port_retries = Integer(port_retries_default_value, config=True, + help=_("The number of additional ports to try if the specified port is not " + "available (env: JUPYTER_PORT_RETRIES).") ) + @default('port_retries') + def port_retries_default(self): + return int(os.getenv(self.port_retries_env, self.port_retries_default_value)) + certfile = Unicode(u'', config=True, help=_("""The full path to an SSL/TLS certificate file.""") ) From 3f391854c65af6df14a3bdbcc863a935c074b7fb Mon Sep 17 00:00:00 2001 From: Kevin Bates Date: Fri, 15 May 2020 16:54:15 -0700 Subject: [PATCH 2/2] Fixup after merge --- notebook/notebookapp.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/notebook/notebookapp.py b/notebook/notebookapp.py index a46f5fb010..0c3c3ea347 100755 --- a/notebook/notebookapp.py +++ b/notebook/notebookapp.py @@ -795,6 +795,22 @@ def _validate_ip(self, proposal): help=_("The port the notebook server will listen on (env: JUPYTER_PORT).") ) + @default('port') + def port_default(self): + return int(os.getenv(self.port_env, self.port_default_value)) + + port_retries_env = 'JUPYTER_PORT_RETRIES' + port_retries_default_value = 50 + port_retries = Integer(port_retries_default_value, config=True, + help=_("The number of additional ports to try if the specified port is not " + "available (env: JUPYTER_PORT_RETRIES).") + ) + + @default('port_retries') + def port_retries_default(self): + return int(os.getenv(self.port_retries_env, self.port_retries_default_value)) + + sock = Unicode(u'', config=True, help=_("The UNIX socket the notebook server will listen on.") ) @@ -825,22 +841,6 @@ def _validate_sock_mode(self, proposal): ) return value - port_retries = Integer(50, config=True, - help=_("The number of additional ports to try if the specified port is not available.") - @default('port') - def port_default(self): - return int(os.getenv(self.port_env, self.port_default_value)) - - port_retries_env = 'JUPYTER_PORT_RETRIES' - port_retries_default_value = 50 - port_retries = Integer(port_retries_default_value, config=True, - help=_("The number of additional ports to try if the specified port is not " - "available (env: JUPYTER_PORT_RETRIES).") - ) - - @default('port_retries') - def port_retries_default(self): - return int(os.getenv(self.port_retries_env, self.port_retries_default_value)) certfile = Unicode(u'', config=True, help=_("""The full path to an SSL/TLS certificate file.""")