Publish curated Unraid-AppOps-Gateway source from 034c9f844d2455850ba37b31379b7edaa786583e
This commit is contained in:
1 parent
c61fbfd87f
commit
1a54836efc
101 files changed
+4973
-1298
No files matched your search
@@ -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')
|
||||
|
||||
Reference in new issue
Block a user