# 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__}")