v2.1: новые Valves + универсальный _rest_request
This commit is contained in:
+32
-32
@@ -1,34 +1,34 @@
|
|||||||
"""
|
request_timeout: int = Field(
|
||||||
truenas_tools.py — мониторинг и управление TrueNAS через Open WebUI.
|
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
|
||||||
|
|
||||||
Возможности:
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||||
• Системная информация (версия, uptime, CPU, load average, RAM, температура CPU)
|
except Exception:
|
||||||
• Детальная информация о RAM с перебором нескольких эндпоинтов API
|
pass
|
||||||
• Пулы 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
|
|
||||||
Reference in New Issue
Block a user