import sys import requests BASE_URL = "http://127.0.0.1:5000" TIMEOUT = 5 def list_equipments() -> list[dict] | None: try: response = requests.get(f"{BASE_URL}/api/equipments", timeout=TIMEOUT) response.raise_for_status() except requests.exceptions.Timeout: print(f"[ERREUR] Délai d'attente dépassé ({TIMEOUT}s) lors de GET /api/equipments.") return None except requests.exceptions.ConnectionError: print(f"[ERREUR] Impossible de joindre le serveur {BASE_URL}. Est-il démarré ?") return None except requests.exceptions.HTTPError as e: print(f"[ERREUR] Réponse HTTP invalide : {e}") return None except requests.exceptions.RequestException as e: print(f"[ERREUR] Échec de la requête : {e}") return None try: data = response.json() except ValueError: print("[ERREUR] Réponse non-JSON reçue du serveur.") return None if not isinstance(data, list): print("[ERREUR] Format de réponse inattendu (liste attendue).") return None return data def add_equipment(hostname: str, type_: str, ip_address: str) -> dict | None: payload = { "hostname": hostname, "type": type_, "ip_address": ip_address, "is_active": True, } try: response = requests.post( f"{BASE_URL}/api/equipments", json=payload, timeout=TIMEOUT, ) response.raise_for_status() except requests.exceptions.Timeout: print(f"[ERREUR] Délai d'attente dépassé ({TIMEOUT}s) lors de POST /api/equipments.") return None except requests.exceptions.ConnectionError: print(f"[ERREUR] Impossible de joindre le serveur {BASE_URL}.") return None except requests.exceptions.HTTPError as e: print(f"[ERREUR] Réponse HTTP invalide : {e}") return None except requests.exceptions.RequestException as e: print(f"[ERREUR] Échec de la requête : {e}") return None try: return response.json() except ValueError: print("[ERREUR] Réponse non-JSON reçue après création.") return None def main() -> int: print("=== Liste initiale ===") initial = list_equipments() if initial is None: return 1 for eq in initial: print(f" #{eq['id']} {eq['hostname']} ({eq['type']}) - {'actif' if eq['is_active'] else 'inactif'}") print("\n=== Ajout d'un équipement ===") new_eq = add_equipment("client-test-01", "Router", "10.0.99.1") if new_eq is None: return 1 print(f" Créé : #{new_eq['id']} {new_eq['hostname']}") print("\n=== Liste mise à jour ===") updated = list_equipments() if updated is None: return 1 for eq in updated: print(f" #{eq['id']} {eq['hostname']} ({eq['type']}) - {'actif' if eq['is_active'] else 'inactif'}") return 0 if __name__ == "__main__": sys.exit(main())