Set-OPS-Public/scripts
Daniel Allaire 254268d5f2
Some checks are pending
verifier / verifier (push) Waiting to run
devis de placement : mourir n'est pas un diagnostic
Soir de reconstruction, VPN pas encore monte. `make placement-plan` — le devis qu'on lance
AVANT quarante minutes de deploiement — rendait `AttributeError: 'str' object has no
attribute 'get'` : dix lignes de trace Python pour dire « le nom `asgard` ne se resout pas
d'ici ».

En panne, `Cluster.__call__` rend {"_erreur": "..."} — un DICT. Le devis l'iterait comme
une liste, et un dict itere rend ses CLEFS. `Cluster.rate()` existait pour ca et n'etait
appele nulle part ici. Les quatre appels passent desormais par une garde qui nomme la
cause, l'hote interroge et le geste a tenter (resolution, VPN, jeton).

ET LE DEVIS MESURAIT LE MAUVAIS TENANT. `placement_du_tenant()` lisait `instance/` en dur :
viser patient 0 avec SETOPS_INSTANCE mesurait en silence le placement de l'instance
montee. Le verdict etait juste — pour l'autre tenant. Les deux portaient les memes quatre
valeurs, ce qui est exactement la circonstance ou l'erreur ne se voit pas. C'est la
HUITIEME resolution d'instance ou d'inventaire codee en dur trouvee en trois jours ; a ce
compte ce n'est plus une serie de bogues, c'est une piece manquante.

L'en-tete annoncait aussi « tenant instance » — le nom du lien, pas celui du tenant.

TROIS TESTS, aucun reseau touche (Cluster simule) : une panne devient un refus lisible ;
une reponse qui n'est pas une liste est refusee — c'est le cas silencieux, celui qui
franchirait la premiere garde ; le cas nominal traverse sans gene. Branches sur `make test`.

Verifie ensuite contre le cluster reel : le devis nomme « OPS-Patient0 » et confirme ses
quatre objets (asgard, TrueNAS, vmbr1, gabarit 99998).

make test OK ; make verifier 38/38 ; make ci 38/38.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 21:26:32 -04:00
..
tests devis de placement : mourir n'est pas un diagnostic 2026-08-20 21:26:32 -04:00
applications.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
appliquer_opnsense.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
appliquer_proxmox_fw.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
appliquer_sdn.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
bases_donnees.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
config_proxmox.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
couverture_gui.py Trois preuves qui regardent au-dela d'une seule instance + champ liens/websocket au GUI 2026-07-22 21:32:42 -04:00
devis_certificats.py devis des certificats : disque contre memoire, et l'AC etait expiree 2026-08-08 07:20:56 -04:00
devis_courriel.py courriel : routage local par identifiant, et la livraison interne remise en marche 2026-08-08 09:42:45 -04:00
devis_expositions.py devis des expositions : une vraie requete, depuis deux points de vue 2026-08-08 07:33:49 -04:00
devis_frontiere.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
devis_identite.py devis d'identite : comparer le deploye au declare 2026-08-08 06:55:06 -04:00
devis_mtu.py mtu : le 1450 de la zone n'atteignait pas les invites 2026-08-10 17:54:03 -04:00
devis_opnsense.py portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -04:00
devis_placement.py devis de placement : mourir n'est pas un diagnostic 2026-08-20 21:26:32 -04:00
devis_postgresql.py devis PostgreSQL et courriel : la serie des devis de service est complete 2026-08-08 08:53:49 -04:00
devis_proxmox_fw.py flux : admin devient un pair, et make ca-racine livre la racine 2026-08-07 17:26:35 -04:00
devis_proxmox_pools.py proxmox : pools créés, jeton normalisé, reliquat de voûte supprimé 2026-08-03 15:52:44 -04:00
devis_reseau.py portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -04:00
devis_sdn.py portee : les trois devis d'un site partagent enfin la meme regle 2026-08-18 16:38:30 -04:00
devis_versions.py devis : make versions-mesurer — l'ecart avec l'amont devient lisible 2026-08-10 23:02:16 -04:00
domaines.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -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 adressage : l'index est borne [0-255] — 10.300.0.0/16 n'est pas un reseau 2026-08-12 16:21:33 -04:00
instancier.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
inventory_gui.py correction : 94 lignes de commentaire perdues, pas 121 2026-08-18 15:06:03 -04:00
inventory_host.py gabarit : deriver le domaine de recherche, et vider resolv.conf a la capture 2026-08-09 10:25:03 -04:00
inventory_rules.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -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 Mise en conformité prouvable : registre d'affirmations + make prouver 2026-07-20 19:53:18 -04:00
plan_recette.py Plan de recette (P22) : le pendant manuel de make prouver 2026-07-23 15:49:16 -04:00
prouver.py CI : le harnais ne se declenchait que par memoire 2026-08-20 19:29:46 -04:00
proxmox_api.py proxmox-fw : un applicateur, et un refus assume 2026-08-06 19:39:33 -04:00
raser.py raser : lire le RESULTAT de la destruction, pas son accuse de reception 2026-08-10 22:47:28 -04:00
resoudre_flux.py portabilite : le repli nftables survivait a la bascule et annulait tout 2026-08-10 12:24:41 -04:00
serveurs.py P03 : la preuve comparait chaque instance a l'inventaire d'UNE SEULE 2026-08-18 14:35:01 -04:00
socle_amorcage.py D-71 : PKI et DNS debout avant tout, et la zone inverse manquait 2026-08-08 15:29:57 -04:00
sonde_tcp.py frontiere : etanche — CONFORME sur 56 lignes, dans les deux sens 2026-08-09 21:33:04 -04:00
underlay.py underlay : les tenants declares sont confrontes aux dossiers reels 2026-08-18 16:55:49 -04:00
verifier_gui.py Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00
verifier_intrants.py CI : le harnais ne se declenchait que par memoire 2026-08-20 19:29:46 -04:00
verifier_ports.py CI : le harnais ne se declenchait que par memoire 2026-08-20 19:29:46 -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 amorcage_acces : le role qui cree UN acces puis se retire 2026-08-07 13:42:27 -04:00