Progress
This commit is contained in:
31
config.py
Normal file
31
config.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from dataclasses import dataclass, field
|
||||
import yaml
|
||||
|
||||
|
||||
@dataclass
|
||||
class ProxyRoute:
|
||||
domain: str
|
||||
target_host: str
|
||||
target_port: int
|
||||
containers: list[str] = field(default_factory=list)
|
||||
timeout_seconds: int = 0 # idle timeout before stopping container (0 = never)
|
||||
load_seconds: int = 0 # seconds to wait after starting container
|
||||
|
||||
|
||||
def load_config(path: str) -> dict[str, ProxyRoute]:
|
||||
"""Parse config.yml and return dict of domain -> ProxyRoute."""
|
||||
with open(path) as f:
|
||||
data = yaml.safe_load(f)
|
||||
routes: dict[str, ProxyRoute] = {}
|
||||
for h in data.get('proxy_hosts', []):
|
||||
containers = [c['container_name'] for c in h.get('containers', [])]
|
||||
route = ProxyRoute(
|
||||
domain=h['domain'],
|
||||
target_host=h['proxy_host'],
|
||||
target_port=h['proxy_port'],
|
||||
containers=containers,
|
||||
timeout_seconds=h.get('proxy_timeout_seconds', 0),
|
||||
load_seconds=h.get('proxy_load_seconds', 0),
|
||||
)
|
||||
routes[route.domain] = route
|
||||
return routes
|
||||
Reference in New Issue
Block a user