pare-feu Proxmox : force dans l URL, et le retrait de t29 est pose

Proxmox refuse un corps sur DELETE (501) : aucun IPSet n etait jamais retire
par l applicateur. SDN, frontiere et pare-feu Proxmox ne portent plus rien de
l index 29 ; le journal dit comment, et ce qui reste (strophe FRR).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-09-28 10:08:22 -04:00
parent badbcd3971
commit 478aab3eb8
2 changed files with 14 additions and 1 deletions

View file

@ -43,6 +43,16 @@ restaient posés sur le cluster. `appliquer_proxmox_fw.py` ajoute à son périm
étiquettes des zones de `ANCIEN_NOMMAGE` (une liste, pas deux), et reçoit le même garde étiquettes des zones de `ANCIEN_NOMMAGE` (une liste, pas deux), et reçoit le même garde
que le SDN contre un cluster muet. que le SDN contre un cluster muet.
**Posé le 2026-09-28, depuis le runner du site.** SDN : zone `t29`, 3 VNets, 3 sous-réseaux
retirés, le plan relu dit « Rien à faire ». Frontière : 44 objets `PATI29` et 3 routes
`10.29.x` retirés, 283 règles inchangées, rien d'autre au plan relu. Pare-feu Proxmox : les
6 groupes et 3 IPSets `t29-` retirés un par un par l'API — PAS par `proxmox-fw-appliquer`,
dont le plan mêle 64 changements préexistants sur `t17`/`t23` qui demandent leur propre
revue. Ce retrait a révélé un dernier défaut : l'applicateur envoyait `force` dans le CORPS
d'un `DELETE`, que Proxmox refuse (501) ; aucun IPSet n'était donc jamais retiré. Corrigé
(`?force=1`). La strophe FRR des nœuds de sortie garde `t29` : ils sont injoignables en SSH
depuis le runner.
Wiki republié (P60) : deux de ses pages nommaient patient 0. `make verifier` : 82 OK, 1 échec — P02, Wiki republié (P60) : deux de ses pages nommaient patient 0. `make verifier` : 82 OK, 1 échec — P02,
`test_ecriture_plan.py` sur `domaines.yml` (`'list' object has no attribute 'get'`), `test_ecriture_plan.py` sur `domaines.yml` (`'list' object has no attribute 'get'`),
présent avant ce changement. présent avant ce changement.

View file

@ -302,8 +302,11 @@ def appliquer(api: Cluster, p: dict) -> int:
for r in reversed(api(f"/cluster/firewall/groups/{n}") or []): for r in reversed(api(f"/cluster/firewall/groups/{n}") or []):
_fait(api(f"/cluster/firewall/groups/{n}/{r['pos']}", "DELETE"), f"purge {n}") _fait(api(f"/cluster/firewall/groups/{n}/{r['pos']}", "DELETE"), f"purge {n}")
_fait(api(f"/cluster/firewall/groups/{n}", "DELETE"), f"retrait groupe {n}") _fait(api(f"/cluster/firewall/groups/{n}", "DELETE"), f"retrait groupe {n}")
# `force` DANS L'URL (2026-09-28) : Proxmox refuse tout corps sur un DELETE
# (« 501 Unexpected content for method 'DELETE' »). Envoye en corps, aucun IPSet
# n'etait jamais retire — constate en retirant ceux de `t29-`.
for n in p["ipsets_retirer"]: for n in p["ipsets_retirer"]:
_fait(api(f"/cluster/firewall/ipset/{n}", "DELETE", {"force": 1}), f"retrait ipset {n}") _fait(api(f"/cluster/firewall/ipset/{n}?force=1", "DELETE"), f"retrait ipset {n}")
if echecs: if echecs:
print(f"\n {echecs} echec(s) — la reconciliation est INCOMPLETE.") print(f"\n {echecs} echec(s) — la reconciliation est INCOMPLETE.")