diff --git a/scripts/voutes.py b/scripts/voutes.py index cc21c40..032c3ef 100755 --- a/scripts/voutes.py +++ b/scripts/voutes.py @@ -112,19 +112,33 @@ def identites() -> str: def etat() -> int: + """Rapport lisible. Le CODE DE SORTIE ne juge que ce que CETTE machine doit pouvoir. + + UNE CLE ABSENTE N'EST PAS UNE FAUTE — c'est souvent la bonne reponse (2026-08-28). + Sur le runner d'un tenant, la cle du SITE doit manquer : il porte la carte de la + fabric et ne doit jamais pouvoir l'ouvrir. Ma premiere version sortait en erreur des + qu'une cle manquait, ce qui faisait echouer une chaine parfaitement saine et + presentait une SEPARATION REUSSIE comme un defaut. + + Seule l'absence de la cle de l'INSTANCE MONTEE empeche la machine de travailler : + c'est elle, et elle seule, qui decide du code de sortie. Le reste s'affiche. + """ v = voutes() if not v: print("Aucune voute a nommer : ni instance montee, ni underlay.") return 0 - manquantes = 0 + bloquant = False for role, nom, chemin in v: present = chemin.is_file() - manquantes += 0 if present else 1 - print(f"{role:<11} {nom:<20} {'cle presente' if present else 'CLE ABSENTE '} {chemin}") - if manquantes: - print(f"\n{manquantes} cle(s) absente(s). En creer une :", - "umask 077; openssl rand -base64 48 | tr -d '\\n' > ", sep="\n ") - return 1 if manquantes else 0 + if role == "instance" and not present: + bloquant = True + etiquette = "cle presente" if present else ( + "CLE ABSENTE " if role == "instance" else "sans cle ") + print(f"{role:<11} {nom:<20} {etiquette} {chemin}") + if bloquant: + print("\nLa cle de l'instance montee manque — cette machine ne peut rien " + "configurer.\n umask 077; openssl rand -base64 48 | tr -d '\\n' > ") + return 1 if bloquant else 0 def main(argv: list[str] | None = None) -> int: