Files
gauvainboiche 0d071d2843 Semaine 11
2026-07-11 21:38:00 +02:00

92 lines
2.9 KiB
Python

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())