Integrate task runner into python tools
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
"""Runtime configuration."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Settings:
|
||||
task_root: Path
|
||||
state_root: Path
|
||||
credentials_root: Path
|
||||
python_executable: str
|
||||
timezone_name: str | None
|
||||
allowed_proxy_ips: frozenset[str]
|
||||
cancel_grace_seconds: float
|
||||
|
||||
@property
|
||||
def database_path(self) -> Path:
|
||||
return self.state_root / "server-maintenance.sqlite3"
|
||||
|
||||
@classmethod
|
||||
def from_environment(cls) -> "Settings":
|
||||
allowed_proxy_ips = frozenset(
|
||||
value.strip()
|
||||
for value in os.environ.get(
|
||||
"SERVER_MAINTENANCE_ALLOWED_PROXY_IPS", ""
|
||||
).split(",")
|
||||
if value.strip()
|
||||
)
|
||||
return cls(
|
||||
task_root=Path(
|
||||
os.environ.get("SERVER_MAINTENANCE_TASK_ROOT", "/opt/tasks")
|
||||
),
|
||||
state_root=Path(
|
||||
os.environ.get(
|
||||
"SERVER_MAINTENANCE_STATE_ROOT",
|
||||
"/var/lib/server-maintenance",
|
||||
)
|
||||
),
|
||||
credentials_root=Path(
|
||||
os.environ.get(
|
||||
"SERVER_MAINTENANCE_CREDENTIALS_ROOT",
|
||||
"/opt/credentials",
|
||||
)
|
||||
),
|
||||
python_executable=os.environ.get(
|
||||
"SERVER_MAINTENANCE_PYTHON", sys.executable
|
||||
),
|
||||
timezone_name=os.environ.get("TZ") or None,
|
||||
allowed_proxy_ips=allowed_proxy_ips,
|
||||
cancel_grace_seconds=float(
|
||||
os.environ.get("SERVER_MAINTENANCE_CANCEL_GRACE_SECONDS", "10")
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user