system.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # -*- coding: utf-8 -*-
  2. """
  3. System-bezogene Netzwerk-Befehle.
  4. """
  5. from dataclasses import dataclass, field
  6. from typing import Any
  7. from trixy_core.network.cmd.base import CommandMessage
  8. @dataclass
  9. class SystemReboot(CommandMessage):
  10. """
  11. System-Neustart anfordern.
  12. Kann vom Server an Satellites oder umgekehrt gesendet werden.
  13. """
  14. target: str = "" # satellite_id oder "server"
  15. delay_seconds: int = 0
  16. reason: str = ""
  17. @dataclass
  18. class SystemUpdate(CommandMessage):
  19. """
  20. System-Update anfordern.
  21. Fordert ein Update des Systems oder der Modelle an.
  22. """
  23. target: str = ""
  24. update_type: str = "" # system, models, config
  25. version: str = ""
  26. force: bool = False
  27. @dataclass
  28. class SystemStatus(CommandMessage):
  29. """
  30. System-Status-Abfrage oder -Antwort.
  31. Enthält den aktuellen Status des Systems.
  32. """
  33. target: str = ""
  34. status: str = "" # running, starting, stopping, error
  35. uptime_seconds: float = 0.0
  36. memory_usage_mb: float = 0.0
  37. cpu_usage_percent: float = 0.0
  38. active_satellites: int = 0
  39. loaded_plugins: list[str] = field(default_factory=list)
  40. errors: list[str] = field(default_factory=list)
  41. extra: dict[str, Any] = field(default_factory=dict)
  42. @dataclass
  43. class ServerShutdown(CommandMessage):
  44. """
  45. Server-Shutdown-Benachrichtigung.
  46. Wird an alle verbundenen Clients gesendet, bevor der Server
  47. heruntergefahren wird. Clients sollten darauf reagieren und
  48. ihre Verbindung sauber beenden.
  49. """
  50. reason: str = ""
  51. reconnect_after_seconds: int = 0 # 0 = keine Wiederverbindung erwartet