reconstruire-locataire : les sous-commandes ecrivent sans tampon

L'etape parefeu est restee muette douze minutes : ecrivant dans un tuyau,
le Python enfant gardait sa sortie par blocs. PYTHONUNBUFFERED pour tous
les enfants, -u pour eprouver_parefeu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-09-30 17:25:14 -04:00
parent f425fb6cb3
commit 2bf94acb96

View file

@ -68,7 +68,14 @@ def dire(msg: str) -> None:
def lancer(cmd: list[str], *, env: dict | None = None, filtre: tuple[str, ...] = ()) -> int:
"""Execute, verse TOUT au journal, n'affiche que les lignes qui disent ou l'on en est."""
"""Execute, verse TOUT au journal, n'affiche que les lignes qui disent ou l'on en est.
SANS TAMPON (2026-09-30). Ecrivant dans un tuyau, un Python enfant garde sa sortie par
blocs de plusieurs kilo-octets : l'etape `parefeu` est restee muette douze minutes a la
premiere reconstruction lancee par l'exploitant, qui s'est demande si tout etait gele.
`PYTHONUNBUFFERED` vaut pour tous les enfants Python, Ansible compris.
"""
env = dict(env or os.environ, PYTHONUNBUFFERED="1")
with subprocess.Popen(cmd, cwd=RACINE, env=env, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, stdin=subprocess.DEVNULL, text=True) as p:
assert p.stdout
@ -244,7 +251,7 @@ def main() -> int:
if time.time() > limite:
return arret(nom, 4, "delai de surveillance depasse — le montage continue sur le runner")
elif nom == "parefeu":
rc = lancer([sys.executable, "scripts/eprouver_parefeu.py", "--instance", T, "--flotte", "--activer",
rc = lancer([sys.executable, "-u", "scripts/eprouver_parefeu.py", "--instance", T, "--flotte", "--activer",
"--runner", args.runner, "--rebond", args.rebond, "--racine-runner", args.racine_runner],
env=env, filtre=("=== ", "avant :", "apres :", "Icinga", "ARRET", "VM : pare-feu", "REFUS"))
else: # bilan