[FIX] qemu manage : ni adresse, ni nom de VM, ni récit en commentaire

Les commentaires suivent le dépôt en amont : une adresse ou un nom de
machine qui s'y trouve devient public. Cinq adresses et deux noms de VM
y étaient, plus cinq phrases racontant la séance où le défaut est apparu.

Le mode de défaillance reste, au présent — « une VM renommée se voit
attribuer la passerelle » — et l'incident part. Un relevé d'un seul jour
part avec lui ; la structure durable reste.

check_comment_hygiene.py passe de 5 identifiants et 5 à relire à zéro.
Aucune ligne de code n'est touchée, seulement du texte de commentaire.

--- EN ---

Comments follow the repository upstream: an address or a machine name
sitting in one becomes public. Five addresses and two VM names were
there, plus five sentences telling the session where the fault appeared.

The failure mode stays, in the present — "a renamed VM is given the
gateway" — and the incident goes. A reading taken on one day goes with
it; the durable structure stays.

check_comment_hygiene.py goes from 5 identifiers and 5 to re-read down to
zero. No line of code is touched, only comment prose.

Assisted-by: Claude Opus 5
This commit is contained in:
Mathieu Benoit 2026-08-31 07:17:22 -04:00
parent 0b8f25fb4b
commit 40a1e178f3

View file

@ -45,12 +45,11 @@ def parse_ssh_blocks(content) -> dict:
def ssh_orphans(blocs, juge, prefixe="erplibre-"): def ssh_orphans(blocs, juge, prefixe="erplibre-"):
"""(gardées, orphelines) — chacune [(nom, raison)]. """(gardées, orphelines) — chacune [(nom, raison)].
Un ProxyJump valait preuve de vie À LUI SEUL : « écrite pour une VM Un ProxyJump ne vaut pas preuve de vie à lui seul : « écrite pour une VM
imbriquée, que virsh ne connaîtra jamais ». Le raisonnement oubliait que imbriquée, que virsh ne connaîtra jamais » oublie que le rebond, lui, peut
le rebond, lui, peut avoir disparu. Vécu : la VM Proxmox locale effacée, avoir disparu. Effacer la VM qui servait de rebond retire son entrée —
le nettoyage a retiré son entrée — correctement — et GARDÉ les trois correctement — et laisse celles qui rebondissaient par elle : des
entrées qui rebondissaient par elle. Trois culs-de-sac, présentés comme culs-de-sac présentés comme « mènent encore quelque part ».
« mènent encore quelque part ».
D'où le point fixe : retirer un parent peut orpheliner ses enfants, et D'où le point fixe : retirer un parent peut orpheliner ses enfants, et
ceux-ci peuvent en orpheliner d'autres. On tourne jusqu'à ce que plus ceux-ci peuvent en orpheliner d'autres. On tourne jusqu'à ce que plus
@ -887,11 +886,9 @@ class QemuManageMixin:
"""{chemin: domaine} — TOUT ce que les domaines référencent. """{chemin: domaine} — TOUT ce que les domaines référencent.
L'autorité est libvirt, jamais le nom du fichier. Un domaine renommé L'autorité est libvirt, jamais le nom du fichier. Un domaine renommé
garde le nom de fichier d'avant : juger sur le nom faisait passer le garde le nom de fichier d'avant : juger sur le nom fait passer le
disque d'une VM EN MARCHE pour un orphelin. Rapporté sur disque d'une VM EN MARCHE pour un orphelin, et offre ses trois
« erplibre-ubuntu-2404-MIGRATION », renommée depuis fichiers — disque, seed, nvram — au « rm -f ».
« erplibre-ubuntu-2404 » : le nettoyage offrait ses trois fichiers —
disque de 63 Go, seed, nvram — au « rm -f ».
Les deux vues, persistante et vivante, pour la raison dite dans Les deux vues, persistante et vivante, pour la raison dite dans
`_qemu_dumpxml`. `_qemu_dumpxml`.
@ -2248,12 +2245,10 @@ class QemuManageMixin:
"""Adresses IPv4 de L'HÔTE, à écarter des candidates d'une VM. """Adresses IPv4 de L'HÔTE, à écarter des candidates d'une VM.
« virsh domifaddr --source arp » remonte la table ARP, où figurent les « virsh domifaddr --source arp » remonte la table ARP, où figurent les
passerelles des ponts libvirt (192.168.122.1, 192.168.123.1…). Une VM passerelles des ponts libvirt. Une VM n'a jamais l'adresse de son
n'a jamais l'adresse de son hôte : sans ce filtre, une VM RENOMMÉE — hôte : sans ce filtre, une VM RENOMMÉE — dont le bail porte encore
dont le bail porte encore l'ancien nom d'hôte, donc sans l'ancien nom d'hôte, donc sans correspondance — se voit attribuer la
correspondance — se voyait attribuer la passerelle. Vécu sur passerelle.
« erplibre-ubuntu-2404-MIGRATION », annoncée en 192.168.122.1 au lieu
de 192.168.123.170.
""" """
try: try:
res = subprocess.run( res = subprocess.run(
@ -2304,9 +2299,9 @@ class QemuManageMixin:
- agent : qemu-guest-agent DANS la VM (voit l'IP réelle même quand le - agent : qemu-guest-agent DANS la VM (voit l'IP réelle même quand le
bail dnsmasq est absent) ; bail dnsmasq est absent) ;
- arp : table ARP de l'hôte (VM active sur le réseau). - arp : table ARP de l'hôte (VM active sur le réseau).
On combine pour ne jamais rater une IP que le bail seul manquerait On combine pour ne jamais rater une IP que le bail seul manquerait :
(cas observé : 30 VM émulées, bail dnsmasq vide alors que la VM a une sous forte charge, le bail dnsmasq reste vide alors que la VM a bien
IP).""" une adresse."""
ips = [] ips = []
siennes = QemuManageMixin._qemu_host_addresses() siennes = QemuManageMixin._qemu_host_addresses()
for source in ("lease", "agent", "arp"): for source in ("lease", "agent", "arp"):
@ -2396,8 +2391,8 @@ class QemuManageMixin:
# Sans correspondance de nom d'hôte — le cas d'une VM RENOMMÉE, dont # Sans correspondance de nom d'hôte — le cas d'une VM RENOMMÉE, dont
# le bail porte encore l'ancien nom — on prend la source la plus # le bail porte encore l'ancien nom — on prend la source la plus
# sûre : le bail, puis l'agent, puis la table ARP. Celle-ci contient # sûre : le bail, puis l'agent, puis la table ARP. Celle-ci contient
# les passerelles des ponts, et « la dernière candidate » y tombait : # les passerelles des ponts, où « la dernière candidate » tombe : la
# la VM était annoncée en 192.168.122.1. # VM se voit alors annoncée avec l'adresse de sa passerelle.
for source in ("lease", "agent", "arp"): for source in ("lease", "agent", "arp"):
if par_source.get(source): if par_source.get(source):
return par_source[source][-1] return par_source[source][-1]
@ -2549,10 +2544,9 @@ class QemuManageMixin:
tourne dans la VM — install_proxmox.sh, les scripts d'installation, le tourne dans la VM — install_proxmox.sh, les scripts d'installation, le
Makefile — vient donc de là. Makefile — vient donc de là.
Vécu deux fois de suite. Un correctif de install_proxmox.sh, commité Un correctif commité ici mais pas poussé ne part donc pas : chaque VM
ici, absent du distant : chaque VM déployée ensuite recevait l'ancien déployée ensuite reçoit l'ancien script, et le défaut « revient »
script, et le défaut « revenait » alors qu'il était corrigé. Rien ne alors qu'il est corrigé. Rien ne le signale, d'où ce décompte.
le disait ; il a fallu comparer les deux versions à la main.
""" """
if not branche: if not branche:
return 0, [] return 0, []