Files
open-webui/truenas_tools.py
T

39 lines
2.4 KiB
Python

# v2.1.2: проверяем реально работающие эндпоинты TrueNAS 25.10
# (многие получили новые имена — перебираем варианты)
checks = [
("system/info", "GET", None, "базовая информация о системе"),
("alert/list", "GET", None, "список алертов"),
("catalog", "GET", None, "список каталогов приложений"),
("pool/query", "GET", None, "список пулов ZFS (v2)"),
("pool", "GET", None, "список пулов ZFS (v1)"),
("disk/query", "GET", None, "список дисков (v2)"),
("disk", "GET", None, "список дисков (v1)"),
("app/query", "GET", None, "список приложений (v2)"),
("app", "GET", None, "список приложений (v1)"),
("chart/release/query", "GET", None, "helm-релизы"),
]
ok = 0
checked: set = set()
for endpoint, method, payload, descr in checks:
if endpoint in checked:
continue
checked.add(endpoint)
url = f"{self._base}/api/v2.0/{endpoint}"
try:
if method == "GET":
r = requests.get(url, headers=self._headers, params=payload, timeout=self.valves.request_timeout, verify=self.valves.verify_ssl)
else:
r = requests.post(url, headers=self._headers, json=payload or {}, timeout=self.valves.request_timeout, verify=self.valves.verify_ssl)
if r.status_code == 200:
lines.append(f"✅ {endpoint:30s}{descr}")
ok += 1
elif r.status_code in (401, 403):
lines.append(f"🔑 {endpoint:30s} — 401/403 (нет прав)")
elif r.status_code == 404:
lines.append(f"❌ {endpoint:30s} — HTTP 404 (нет такого пути)")
elif r.status_code == 405:
lines.append(f"⚠️ {endpoint:30s} — HTTP 405 (другой метод)")
else:
lines.append(f"⚠️ {endpoint:30s} — HTTP {r.status_code}")
except Exception as e:
lines.append(f"💥 {endpoint:30s} — ошибка: {type(e).__name__}")