v2.1: новые Valves + универсальный _rest_request

This commit is contained in:
2026-08-03 00:04:09 +03:00
parent 36269abf55
commit 50f26aac0b
+32 -32
View File
@@ -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