Spaces:
Running
Running
| """Proxy dataplane selector — pick the best egress node from a ProxyRuntimeTable. | |
| Extracted from ProxyDirectory.acquire() to formalize the dataplane separation. | |
| """ | |
| from app.control.proxy.models import ( | |
| EgressMode, EgressNode, EgressNodeState, | |
| ProxyScope, RequestKind, | |
| ) | |
| from .table import ProxyRuntimeTable | |
| def select_proxy( | |
| table: ProxyRuntimeTable, | |
| scope: ProxyScope = ProxyScope.APP, | |
| kind: RequestKind = RequestKind.HTTP, | |
| ) -> str | None: | |
| """Select a proxy URL from the table. | |
| Returns ``None`` for DIRECT mode or if no healthy nodes are available. | |
| """ | |
| if table.egress_mode == EgressMode.DIRECT: | |
| return None | |
| if table.egress_mode == EgressMode.SINGLE_PROXY: | |
| if table.nodes: | |
| return table.nodes[0].proxy_url | |
| return None | |
| # PROXY_POOL: pick the node with lowest inflight count. | |
| healthy = table.healthy_nodes() | |
| if not healthy: | |
| return None | |
| best = min(healthy, key=lambda n: n.inflight) | |
| return best.proxy_url | |
| __all__ = ["select_proxy"] | |