diff --git a/ocrd_monitor/ocrdbrowser/_subprocess.py b/ocrd_monitor/ocrdbrowser/_subprocess.py index 21165f1..e59dc46 100644 --- a/ocrd_monitor/ocrdbrowser/_subprocess.py +++ b/ocrd_monitor/ocrdbrowser/_subprocess.py @@ -1,17 +1,18 @@ from __future__ import annotations +import os import subprocess as sp from shutil import which -import os from typing import Optional from ._browser import OcrdBrowser from ._port import Port +BROADWAY_BASE_PORT = 8080 + class SubProcessOcrdBrowser: - def __init__(self, port: str, localport: Port, owner: str, workspace: str) -> None: - self._port = port + def __init__(self, localport: Port, owner: str, workspace: str) -> None: self._localport = localport self._owner = owner self._workspace = workspace @@ -23,7 +24,7 @@ def address(self) -> str: # (we use 8085 as fixed start of the internal port range, # and map to the runtime corresponding external port) localport = self._localport.get() - return "http://localhost:" + str(int(self._port) + localport - 8085) + return "http://localhost:" + str(localport) def workspace(self) -> str: return self._workspace @@ -40,7 +41,7 @@ def start(self) -> None: # (disconnecting concurrent connections), hence we must start a new daemon # for each new browser session # broadwayd starts counting virtual X displays from port 8080 as :0 - displayport = str(localport - 8080) + displayport = str(localport - BROADWAY_BASE_PORT) environment = dict(os.environ) environment["GDK_BACKEND"] = "broadway" environment["BROADWAY_DISPLAY"] = ":" + displayport @@ -66,11 +67,8 @@ def stop(self) -> None: class SubProcessOcrdBrowserFactory: - def __init__(self, port: str, available_ports: set[int]) -> None: - self._port = port + def __init__(self, available_ports: set[int]) -> None: self._available_ports = available_ports def __call__(self, owner: str, workspace_path: str) -> OcrdBrowser: - return SubProcessOcrdBrowser( - self._port, Port(self._available_ports), owner, workspace_path - ) + return SubProcessOcrdBrowser(Port(self._available_ports), owner, workspace_path) diff --git a/ocrd_monitor/ocrdmonitor/server/settings.py b/ocrd_monitor/ocrdmonitor/server/settings.py index c10f071..c126cbe 100644 --- a/ocrd_monitor/ocrdmonitor/server/settings.py +++ b/ocrd_monitor/ocrdmonitor/server/settings.py @@ -26,19 +26,20 @@ class OcrdControllerSettings(BaseModel): def process_query(self) -> ProcessQuery: return partial(process_status, self) + class OcrdLogViewSettings(BaseModel): port: int + class OcrdBrowserSettings(BaseModel): workspace_dir: Path mode: Literal["native", "docker"] = "native" - public_port: int = 8080 port_range: tuple[int, int] def factory(self) -> OcrdBrowserFactory: port_range_set = set(range(*self.port_range)) if self.mode == "native": - return SubProcessOcrdBrowserFactory(str(self.public_port), port_range_set) + return SubProcessOcrdBrowserFactory(port_range_set) else: factory = DockerOcrdBrowserFactory("http://localhost", port_range_set) atexit.register(factory.stop_all) diff --git a/ocrd_monitor/tests/ocrdmonitor/server/test_settings.py b/ocrd_monitor/tests/ocrdmonitor/server/test_settings.py index 2292375..523c724 100644 --- a/ocrd_monitor/tests/ocrdmonitor/server/test_settings.py +++ b/ocrd_monitor/tests/ocrdmonitor/server/test_settings.py @@ -18,7 +18,6 @@ ENV_TEMPLATE = { "browser_workspace_dir": "OCRD_BROWSER__WORKSPACE_DIR={}", "browser_mode": "OCRD_BROWSER__MODE={}", - "browser_public_port": "OCRD_BROWSER__PUBLIC_PORT={}", "browser_port_range": "OCRD_BROWSER__PORT_RANGE={}", "controller_job_dir": "OCRD_CONTROLLER__JOB_DIR={}", "controller_host": "OCRD_CONTROLLER__HOST={}", @@ -32,7 +31,6 @@ class DefaultTestEnv(BaseModel): browser_workspace_dir: str = "path/to/workdir" browser_mode: str = "native" - browser_public_port: str = "8085" browser_port_range: str = "[9000, 9100]" controller_job_dir: str = "path/to/jobdir" controller_host: str = "controller.ocrdhost.com" @@ -70,7 +68,6 @@ def test__can_parse_env_file() -> None: ocrd_browser=OcrdBrowserSettings( mode=env.browser_mode, workspace_dir=Path(env.browser_workspace_dir), - public_port=int(env.browser_public_port), port_range=(9000, 9100), ), ocrd_controller=OcrdControllerSettings(