Publish curated Unraid-AppOps-Gateway source from 034c9f844d2455850ba37b31379b7edaa786583e

This commit is contained in:
Public Source Publisher committed 2026-10-01 19:39:31 +00:00
1 parent c61fbfd87f
commit 1a54836efc
101 files changed
+4973 -1298

No files matched your search

+12 -9
View File
@@ -1,6 +1,7 @@
from __future__ import annotations
import json
import math
import re
from dataclasses import dataclass
from typing import Any
@@ -11,7 +12,6 @@ from ..core.config import settings
from ..core.redaction import redact_message
from .base import BaseConnector
_UNRAID_DEFAULT_TIMEOUT_SECONDS = 8.0
_UNRAID_REDIRECT_STATUSES = {301, 302, 303, 307, 308}
@@ -70,7 +70,8 @@ def _as_float(value: Any) -> float | None:
return None
if isinstance(value, int | float):
return float(value)
number = float(value)
return number if math.isfinite(number) else None
if isinstance(value, str):
cleaned = value.strip().strip('%')
@@ -80,7 +81,8 @@ def _as_float(value: Any) -> float | None:
if not numeric:
return None
try:
return float(numeric)
number = float(numeric)
return number if math.isfinite(number) else None
except ValueError:
return None
@@ -91,15 +93,16 @@ def _clamp_percent(value: float) -> int:
return int(round(max(0.0, min(100.0, value))))
def _percent_from_values(used: Any, total: Any) -> int | None:
def _percent_from_values(used: Any, total: Any, *, precise: bool = False) -> float | int | None:
used_value = _as_float(used)
total_value = _as_float(total)
if used_value is None or total_value is None or total_value <= 0:
return None
return _clamp_percent((used_value / total_value) * 100)
percent = max(0.0, min(100.0, (used_value / total_value) * 100))
return round(percent, 2) if precise else _clamp_percent(percent)
def _average_cpu_usage(cpus: Any) -> int | None:
def _average_cpu_usage(cpus: Any) -> float | None:
if not isinstance(cpus, list) or not cpus:
return None
@@ -127,9 +130,9 @@ def _average_cpu_usage(cpus: Any) -> int | None:
active_values.append(active_total)
if idle_values:
return _clamp_percent(100 - (sum(idle_values) / len(idle_values)))
return round(max(0.0, min(100.0, 100 - (sum(idle_values) / len(idle_values)))), 2)
if active_values:
return _clamp_percent(sum(active_values) / len(active_values))
return round(max(0.0, min(100.0, sum(active_values) / len(active_values))), 2)
return None
@@ -398,7 +401,7 @@ class UnraidConnector(BaseConnector):
)
if ram_uses_available:
memory_used = memory_total - memory_available
ram_usage = _percent_from_values(memory_used, memory_total)
ram_usage = _percent_from_values(memory_used, memory_total, precise=True)
missing = []
if cpu_usage is None:
missing.append('cpu_unavailable')