v2.1: новые Valves + универсальный _rest_request
This commit is contained in:
+32
-32
@@ -1,34 +1,34 @@
|
||||
"""
|
||||
truenas_tools.py — мониторинг и управление TrueNAS через Open WebUI.
|
||||
request_timeout: int = Field(
|
||||
default=15,
|
||||
description="Таймаут обычных HTTP-запросов в секундах.",
|
||||
)
|
||||
install_timeout: int = Field(
|
||||
default=900,
|
||||
description="Таймаут операций установки/удаления приложений в секундах (по умолчанию 15 минут).",
|
||||
)
|
||||
poll_interval: int = Field(
|
||||
default=5,
|
||||
description="Интервал опроса состояния приложения (секунды) при wait_for_app.",
|
||||
)
|
||||
default_catalog: str = Field(
|
||||
default="TRUENAS",
|
||||
description="Каталог приложений по умолчанию (TRUENAS, TrueCharts, Community и т.д.).",
|
||||
)
|
||||
default_train: str = Field(
|
||||
default="stable",
|
||||
description="Канал (train) по умолчанию — stable, latest, enterprise и т.д.",
|
||||
)
|
||||
|
||||
Полный набор инструментов для интеграции TrueNAS 25.10 (Goldeye/Goliath)
|
||||
в Open WebUI в виде пользовательского Tool.
|
||||
# -----------------------------------------------------------------
|
||||
# Инициализация
|
||||
# -----------------------------------------------------------------
|
||||
def __init__(self):
|
||||
self.valves = self.Valves()
|
||||
self._cache: Dict[str, tuple[float, str]] = {}
|
||||
self._last_error = "нет данных (запросы ещё не выполнялись)"
|
||||
try:
|
||||
import urllib3
|
||||
|
||||
Возможности:
|
||||
• Системная информация (версия, uptime, CPU, load average, RAM, температура CPU)
|
||||
• Детальная информация о RAM с перебором нескольких эндпоинтов API
|
||||
• Пулы ZFS (статус, занятость, фрагментация)
|
||||
• Диски (модель, серийник, объём, температура SMART)
|
||||
• Docker-приложения (TrueNAS Apps): мониторинг + установка, запуск, остановка, удаление, обновление
|
||||
• Custom App из docker-compose файла
|
||||
• Каталог приложений (TRUENAS, TrueCharts, Community…): список и детали
|
||||
• Виртуальные машины (libvirt/KVM)
|
||||
• Контейнеры (virt/incus)
|
||||
• Алерты TrueNAS
|
||||
• Статистика ZFS ARC-кэша
|
||||
• Диагностика соединения и валидация API-ключа
|
||||
• Кэширование ответов с настраиваемым TTL (только для GET-запросов)
|
||||
|
||||
История версий:
|
||||
v2.1 — управление приложениями: list_catalogs, list_app_catalog, get_app_info,
|
||||
install_app (catalog), install_custom_app (compose), app_action, app_status,
|
||||
wait_for_app, общий метод _rest_request (POST/PUT/DELETE)
|
||||
v2.0 — добавлены RAM (multi-endpoint), температуры CPU/дисков, ARC, валидация API
|
||||
v1.0 — базовый мониторинг (система, пулы, диски, VM, контейнеры, алерты)
|
||||
"""
|
||||
|
||||
import json
|
||||
import time
|
||||
import requests
|
||||
from typing import Dict, Optional, List, Any, Union
|
||||
from pydantic import BaseModel, Field
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
except Exception:
|
||||
pass
|
||||
Reference in New Issue
Block a user