Удалить tool-truenas-export-1785705163085.json

This commit is contained in:
host committed 2026-08-03 00:40:44 +03:00
1 parent bea798029a
commit 6a9d45904f
1 file changed
-1
-1
View File
@@ -1 +0,0 @@
[{"id":"truenas","user_id":"a9b3bc2c-071d-44d2-b6a3-7188033e0a66","name":"truenas ","meta":{"description":"open-webui-monitoring","manifest":{},"has_user_valves":false},"access_grants":[],"updated_at":1785584532,"created_at":1784063265,"user":null,"write_access":true,"content":"\"\"\"\ntruenas_tools.py — мониторинг TrueNAS через Open WebUI.\n\nПолный набор инструментов для интеграции TrueNAS 25.10 (Goldeye/Goliath)\nв Open WebUI в виде пользовательского Tool.\n\nВозможности:\n • Системная информация (версия, uptime, CPU, load average, RAM, температура CPU)\n • Детальная информация о RAM с перебором нескольких эндпоинтов API\n • Пулы ZFS (статус, занятость, фрагментация)\n • Диски (модель, серийник, объём, температура SMART)\n • Docker-приложения (TrueNAS Apps)\n • Виртуальные машины (libvirt/KVM)\n • Контейнеры (virt/incus)\n • Алерты TrueNAS\n • Статистика ZFS ARC-кэша\n • Диагностика соединения и валидация API-ключа\n • Кэширование ответов с настраиваемым TTL\n\nИстория версий:\n v2.0 — добавлены RAM (multi-endpoint), температуры CPU/дисков, ARC, валидация API\n v1.0 — базовый мониторинг (система, пулы, диски, VM, контейнеры, алерты)\n\"\"\"\n\nimport json\nimport time\nimport requests\nfrom typing import Dict, Optional, List, Any\nfrom pydantic import BaseModel, Field\n\n\nclass Tools:\n \"\"\"\n Мониторинг TrueNAS через Open WebUI.\n REST с перебором альтернативных путей.\n TrueNAS 25.10 (Goldeye/Goliath).\n \"\"\"\n\n # -----------------------------------------------------------------\n # Настройки (Valves) — задаются в UI Open WebUI\n # -----------------------------------------------------------------\n class Valves(BaseModel):\n TRUENAS_URL: str = Field(\n default=\"http://192.168.31.100\",\n description=\"IP-адрес или домен TrueNAS (http://... или https://...)\",\n )\n TRUENAS_API_KEY: str = Field(\n default=\"\",\n description=\"API-ключ для доступа к TrueNAS (Settings → API Keys)\",\n )\n CACHE_TTL: int = Field(\n default=30,\n description=\"Время кэширования ответов в секундах (0 = без кэша)\",\n )\n MEM_CACHE_TTL: int = Field(\n default=60,\n description=\"TTL для данных о RAM в секундах (RAM редко меняется)\",\n )\n verify_ssl: bool = Field(\n default=False,\n description=\"Проверять TLS-сертификат TrueNAS\",\n )\n request_timeout: int = Field(\n default=15,\n description=\"Таймаут HTTP-запроса в секундах\",\n )\n\n # -----------------------------------------------------------------\n # Инициализация\n # -----------------------------------------------------------------\n def __init__(self):\n self.valves = self.Valves()\n self._cache: Dict[str, tuple[float, str]] = {}\n self._last_error = \"нет данных (запросы ещё не выполнялись)\"\n try:\n import urllib3\n\n urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n except Exception:\n pass\n\n # -----------------------------------------------------------------\n # Вспомогательные свойства\n # -----------------------------------------------------------------\n @property\n def _base(self) -> str:\n \"\"\"Всегда читаем актуальное значение из Valves — оно может меняться в UI после создания экземпляра Tools.\"\"\"\n return self.valves.TRUENAS_URL.rstrip(\"/\")\n\n @property\n def _headers(self) -> dict:\n return {\n \"Authorization\": f\"Bearer {self.valves.TRUENAS_API_KEY}\",\n \"Content-Type\": \"application/json\",\n }\n\n # -----------------------------------------------------------------\n # Кэш\n # -----------------------------------------------------------------\n def clear_cache(self) -> str:\n \"\"\"Сбрасывает весь кэш запросов. Возвращает количество удалённых записей.\"\"\"\n n = len(self._cache)\n self._cachLine truncated