""" Service de gestion du statut runtime des hôtes. """ from datetime import datetime from typing import Dict, Any, Optional class HostStatusService: """Service simple pour stocker le statut runtime des hôtes en mémoire. Cette implémentation ne persiste plus dans un fichier JSON ; les données sont conservées uniquement pendant la vie du processus. """ def __init__(self): # Dictionnaire: host_name -> {"status": str, "last_seen": Optional[datetime|str], "os": Optional[str]} self._hosts: Dict[str, Dict[str, Any]] = {} def set_status( self, host_name: str, status: str, last_seen: Optional[datetime] = None, os_info: Optional[str] = None ) -> Dict[str, Any]: """Met à jour le statut d'un hôte en mémoire.""" entry = { "status": status, "last_seen": last_seen if isinstance(last_seen, datetime) else last_seen, "os": os_info, } self._hosts[host_name] = entry return entry def get_status(self, host_name: str) -> Dict[str, Any]: """Récupère le statut d'un hôte, avec valeurs par défaut si absent.""" return self._hosts.get(host_name, {"status": "online", "last_seen": None, "os": None}) def get_all_status(self) -> Dict[str, Dict[str, Any]]: """Retourne une copie de tous les statuts connus.""" return dict(self._hosts) def remove_host(self, host_name: str) -> bool: """Supprime le statut d'un hôte de la mémoire.""" if host_name in self._hosts: del self._hosts[host_name] return True return False def clear(self): """Efface tous les statuts.""" self._hosts.clear() # Instance singleton du service host_status_service = HostStatusService()