feat: Authentik login + switchable GPU prod target
Add OIDC auth for Command Center and runtime GPU endpoint selection pointed at atc-gpu-prod (10.0.10.106), matching what is currently deployed.
This commit is contained in:
+28
-6
@@ -17,6 +17,14 @@ from database_inventory import collect_database_inventory
|
||||
from node_registry import NODE_REGISTRY
|
||||
|
||||
DOCKHAND_URL = os.getenv("DOCKHAND_URL", "http://10.0.21.45:8082")
|
||||
DOCKHAND_API_TOKEN = os.getenv("DOCKHAND_API_TOKEN", "")
|
||||
|
||||
|
||||
def _dockhand_headers() -> dict[str, str]:
|
||||
if DOCKHAND_API_TOKEN:
|
||||
return {"Authorization": f"Bearer {DOCKHAND_API_TOKEN}"}
|
||||
return {}
|
||||
|
||||
HDFS_NN_URL = os.getenv("HDFS_NN_URL", "http://10.0.21.61:9870")
|
||||
LAKEHOUSE_HOST = os.getenv("LAKEHOUSE_HOST", "10.0.21.50")
|
||||
AIRFLOW_URL = os.getenv("AIRFLOW_URL", "http://10.0.21.55:8080")
|
||||
@@ -24,7 +32,12 @@ KAFKA_UI_URL = os.getenv("KAFKA_UI_URL", "http://10.0.21.36:9000")
|
||||
KAFKA_CONNECT_URL = os.getenv("KAFKA_CONNECT_URL", f"http://{LAKEHOUSE_HOST}:8083")
|
||||
TRINO_URL = os.getenv("TRINO_URL", f"http://{LAKEHOUSE_HOST}:8089")
|
||||
SPARK_UI_URL = os.getenv("SPARK_UI_URL", f"http://{LAKEHOUSE_HOST}:8080")
|
||||
GPU_URL = os.getenv("GPU_URL", "http://10.0.20.106:9000")
|
||||
try:
|
||||
from gpu_config import get_gpu_urls as _get_gpu_urls
|
||||
except Exception:
|
||||
_get_gpu_urls = None # type: ignore
|
||||
|
||||
GPU_URL = os.getenv("GPU_URL", "http://10.0.10.106:9000")
|
||||
OBJECTSCALE_URL = os.getenv("OBJECTSCALE_URL", "http://10.0.20.111:9020")
|
||||
YARN_URL = os.getenv("YARN_URL", "http://10.0.21.62:8088")
|
||||
|
||||
@@ -110,7 +123,7 @@ async def dockhand_containers(
|
||||
await _log(log, "cmd", "fetch", f"$ GET {url}")
|
||||
t0 = time.monotonic()
|
||||
try:
|
||||
r = await client.get(f"{DOCKHAND_URL}/api/containers", params={"env": env_id}, timeout=8.0)
|
||||
r = await client.get(f"{DOCKHAND_URL}/api/containers", params={"env": env_id}, headers=_dockhand_headers(), timeout=8.0)
|
||||
ms = int((time.monotonic() - t0) * 1000)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
@@ -407,11 +420,20 @@ async def collect_objectscale(client: httpx.AsyncClient, log: TerminalLogFn | No
|
||||
|
||||
|
||||
async def collect_gpu_metrics(client: httpx.AsyncClient, log: TerminalLogFn | None = None) -> dict[str, Any]:
|
||||
await _log(log, "info", "fetch", "▸ GPU Lab metrics")
|
||||
base = {"ok": False, "host": GPU_URL, "ui_url": GPU_URL}
|
||||
gpu_url = GPU_URL
|
||||
host = GPU_URL
|
||||
if _get_gpu_urls is not None:
|
||||
try:
|
||||
u = _get_gpu_urls()
|
||||
gpu_url = u["gpu_url"]
|
||||
host = u["host"]
|
||||
except Exception:
|
||||
pass
|
||||
await _log(log, "info", "fetch", f"▸ GPU Lab metrics @ {host}")
|
||||
base = {"ok": False, "host": host, "ui_url": gpu_url}
|
||||
try:
|
||||
metrics_url = f"{GPU_URL}/api/gpu/metrics"
|
||||
model_url = f"{GPU_URL}/api/active-model"
|
||||
metrics_url = f"{gpu_url}/api/gpu/metrics"
|
||||
model_url = f"{gpu_url}/api/active-model"
|
||||
await _log(log, "cmd", "fetch", f"$ GET {metrics_url}")
|
||||
await _log(log, "cmd", "fetch", f"$ GET {model_url}")
|
||||
t0 = time.monotonic()
|
||||
|
||||
Reference in New Issue
Block a user