Set-OPS-Public/scripts
Daniel Allaire 859ac07a54 console de site : un vide doit avoir la forme de ce qu'il remplace
La console du runner de SITE-Chezlepro ne montrait rien. Elle a douze machines.

inventaire_api sert serveurs en LISTE, inventaire_api_du_site le servait en TABLE. Les deux
sont vides et la page ne les lit pas pareil : (data.serveurs || []).map trouve {} — truthy,
sans .map — et charger() leve. La console d'un site mourait avant sa premiere vue, et le
message accusait une methode manquante plutot qu'une forme qui ment.

Et la vue regardait au mauvais endroit : le registre vide est voulu, mais la page en tirait
le message d'un locataire sans serveurs et les douze machines servies dans hotes n'etaient
dessinees nulle part. Une console de site dessine desormais SES machines, en lecture seule,
avec leur adresse, leur VMID, leurs roles et leur point de vie ; le panneau droit dit ce
qu'elle peut et renvoie aux Assistants.

C'est le defaut du 16 septembre par une autre porte : la premiere fois l'inventaire etait
vide et la page dessinait ce vide comme un plan vide ; cette fois il est plein et c'est la
vue qui regarde ailleurs.

Ce qui a trouve la cause n'est pas une lecture mais le BANC : en donnant pour la premiere
fois a test_rendu_gui la charge d'une console de site, il a leve sur charger(). Sans lui
j'aurais livre une vue juste par dessus un charger() qui leve.

Valide : node --check sur le bloc script, 7 tests de rendu dont deux neufs, make test a 0
echec, runbooks.py verifier a 0 ecart, P81 et P83 vertes. P02 reste en echec pour la raison
anterieure.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 20:36:00 -04:00
..
tests console de site : un vide doit avoir la forme de ce qu'il remplace 2026-09-20 20:36:00 -04:00
applications.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
appliquer_opnsense.py frontiere : publier un service du site, port public et redirection 2026-09-16 22:38:39 -04:00
appliquer_proxmox_fw.py flux : l interne refuse a voix haute, la bordure se tait (P53) 2026-08-28 16:43:22 -04:00
appliquer_sdn.py frontiere : lire ses reglages a la racine du depot de site 2026-08-23 00:47:32 -04:00
attendre_materialisation.py creer-vm : prouver la materialisation sans entrer chez le tenant 2026-08-27 22:48:49 -04:00
bases_donnees.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
cacher_paquets.py paquets tiers : passer par le cache du controleur, plus par Internet 2026-09-05 08:22:14 -04:00
config_proxmox.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
couverture_gui.py GUI : le formulaire des bases est GENERE depuis le schema 2026-09-08 15:30:08 -04:00
devis_certificats.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_courriel.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_expositions.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_frontiere.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_identite.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_mtu.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_opnsense.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
devis_placement.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_postgresql.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
devis_proxmox_fw.py flux : l interne refuse a voix haute, la bordure se tait (P53) 2026-08-28 16:43:22 -04:00
devis_proxmox_pools.py pools : le genome ne nait plus chez un locataire 2026-09-13 04:12:27 -04:00
devis_reseau.py devis reseau : un segment non etiquete n'appartient a aucune fabric de switch 2026-08-25 09:51:57 -04:00
devis_sdn.py sdn : le puits avalait le plan d administration — une route, et le chemin existe 2026-08-28 17:46:40 -04:00
devis_underlay.py underlay : la frontiere entre les deux mondes, et l'instrument qui la mesure 2026-08-22 16:31:35 -04:00
devis_versions.py devis : make versions-mesurer — l'ecart avec l'amont devient lisible 2026-08-10 23:02:16 -04:00
dns_bascule.py zones publiques : le courriel dans la zone, et un devis avant de basculer 2026-09-16 21:54:49 -04:00
dnssec.py DNSSEC : le locataire signe, avec la cle de sa voute 2026-09-16 22:09:21 -04:00
domaines.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
exporter_cles.py pools nommes comme les depots, et les cles sortent du poste 2026-09-12 21:37:28 -04:00
expositions_etat.py expositions-etat : le certificat SERVI, pas celui du disque 2026-09-11 10:21:19 -04:00
fiche_role.py fiche : les panneaux etaient caches derriere l exportateur 2026-09-14 16:34:51 -04:00
forge_amorcer.py trois reconstructions : trouver, verifier, prouver — 37 min 24 au tour 3 2026-09-12 20:55:59 -04:00
gabarit_etat.py D-86 mis a l epreuve : Chezlepro rasee et refaite depuis zero 2026-09-10 13:06:45 -04:00
genome.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
genome_colis.py genome : la forge du SITE fait autorite (D-81), et make genome-etat le verifie 2026-08-26 09:17:24 -04:00
instance_creer.py Créer une instance depuis un modèle (CLI + GUI) 2026-07-23 14:13:36 -04:00
instances.py un site prend son propre index, et la garde les compte enfin 2026-09-12 14:31:51 -04:00
instancier.py console chez les locataires, collision de noms, et un fichier ecrase 2026-09-15 11:47:50 -04:00
inventory_gui.py console de site : un vide doit avoir la forme de ce qu'il remplace 2026-09-20 20:36:00 -04:00
inventory_host.py clonage : le plancher se perdait au troisieme maillon 2026-09-13 20:10:24 -04:00
inventory_rules.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
ma_forge.py le wiki suit le genome : un locataire n en est pas depositaire 2026-09-14 14:41:23 -04:00
materiel.py materiel : un catalogue de capteurs, un tableau Grafana, un verdict Icinga 2026-09-17 10:13:43 -04:00
model_creer.py gabarit : modeleChezlepro -> modeleSetOPS, et une porte pour l'hebergeur 2026-08-12 14:36:44 -04:00
modeles.py modèles : l'underlay devient modélisable, et P17 le valide 2026-08-02 17:11:18 -04:00
orchestrer.py DNS public en production : cinq fautes que seule la production montrait 2026-09-16 18:35:36 -04:00
plan_recette.py documentation : la tournee des 74 documents, parce qu un balayage ne lit pas 2026-09-06 16:18:23 -04:00
prouver.py la console mesure le pouvoir sur la voute, pas sur la carte 2026-09-20 20:12:18 -04:00
proxmox_api.py voutes : le monde physique a la sienne, les tenants n'en portent plus les cles 2026-08-22 17:13:48 -04:00
raser.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
remise.py remise au client : deux temps, un outil, une garde 2026-09-16 11:16:27 -04:00
resoudre_flux.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
restaurer_cles.py restauration : lire aussi l archive en clair, pas seulement la chiffree 2026-09-13 16:32:07 -04:00
routes_fabric_etat.py le site surveille enfin sa fabric 2026-09-10 18:50:43 -04:00
runbooks.py assistants : la portee se pese a l'etape, pas a la sequence 2026-09-20 19:55:02 -04:00
schema_plan.py acces d'administration : un tunnel par locataire, declare par lui, borne a lui 2026-09-17 16:01:54 -04:00
serveurs.py plan : l ecriture des registres devient atomique — tout, ou rien 2026-09-08 14:57:57 -04:00
site_intrants.py acces d'administration : un tunnel WireGuard nominatif, pas le runner en rebond 2026-09-17 14:42:48 -04:00
site_inventaire.py materiel : la frontiere expose ses temperatures, seul le Prometheus du site les lit 2026-09-17 10:20:46 -04:00
site_machines.py memoire : ce que l hote a le droit de reprendre, et pourquoi il ne le pouvait pas 2026-09-13 19:57:11 -04:00
site_raser.py le site prend l index 37, et la capacite de le raser existe enfin 2026-09-12 16:32:06 -04:00
socle_amorcage.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
sonde_tcp.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
sonder.py sonder : rapporter ce qui distingue, au lieu d un echec 2026-08-28 17:02:20 -04:00
underlay.py D-86 mis a l epreuve : Chezlepro rasee et refaite depuis zero 2026-09-10 13:06:45 -04:00
verifier_cle_amorcage.py insemination : le runner verifie SA cle avant de partir 2026-09-13 22:04:41 -04:00
verifier_genome_a_jour.py deployer-tout : le genome est-il a jour avant de poser quoi que ce soit 2026-09-13 23:32:16 -04:00
verifier_gui.py GUI : les six registres ont un formulaire genere, et la sauvegarde aussi 2026-09-08 18:26:33 -04:00
verifier_intrants.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
verifier_ports.py resolution d'instance : une seule, partagee — au lieu de neuf copies 2026-08-22 14:19:55 -04:00
verifier_signature.py forgejo : epingle 16.0.2, et le verificateur accepte la cle PRIMAIRE 2026-08-11 01:04:16 -04:00
voute.py DNSSEC : le locataire signe, avec la cle de sa voute 2026-09-16 22:09:21 -04:00
voutes.py voutes : une cle absente n est pas une faute — elle est souvent la bonne reponse 2026-08-28 18:41:21 -04:00
vpn_admin.py tunnel d'administration : TechnoLibre servi, et l'oeuf et la poule du premier pair 2026-09-17 16:08:39 -04:00