From a290b3b53b1160b9ab43c3db84545658268c0aa7 Mon Sep 17 00:00:00 2001 From: Krishna Chilleri Date: Tue, 11 Feb 2025 09:42:44 -0700 Subject: [PATCH] Set up unique remote port number as the default (#1007) Set up unique remote port number as the default for remote API --- beeflow/common/config_driver.py | 9 ++++++++- beeflow/remote/remote.py | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/beeflow/common/config_driver.py b/beeflow/common/config_driver.py index 554bcfd15..3bacdf26c 100644 --- a/beeflow/common/config_driver.py +++ b/beeflow/common/config_driver.py @@ -203,6 +203,13 @@ def filepath_completion_input(*pargs, **kwargs): return input(*pargs, **kwargs) +def unique_port(): + """Assign unique port for remote user.""" + uid = os.getuid() + port = ((uid%(16000-7777))+7777) + return port + + # Below is the definition of all bee config options, defaults and requirements. # This will be used to validate config files on loading them in the BeeConfig # singleton class above. @@ -256,7 +263,7 @@ def filepath_completion_input(*pargs, **kwargs): default=False, validator=validation.bool_, prompt=False) VALIDATOR.option('DEFAULT', 'remote_api_port', info='BEE remote REST API port', - default=7777, validator=int, prompt=False) + default=unique_port(), validator=int, prompt=False) VALIDATOR.option('DEFAULT', 'workload_scheduler', choices=('Slurm', 'LSF', 'Flux', 'Simple'), default='Slurm', info='backend workload scheduler to interact with ', diff --git a/beeflow/remote/remote.py b/beeflow/remote/remote.py index 70cc6cf09..98ed6087a 100644 --- a/beeflow/remote/remote.py +++ b/beeflow/remote/remote.py @@ -137,7 +137,6 @@ def find_free_port(start_port=1024, end_port=65535, host='127.0.0.1'): def create_app(): """Start the web-server for the API with uvicorn.""" - # decide what port we're using for the long term. I set it to port 7777 temporarily port_number = bc.get('DEFAULT', 'remote_api_port') if is_port_taken(port_number) is True: