Set-OPS-Public/scripts/tests/test_raser.py

31 lines
1.4 KiB
Python
Raw Normal View History

"""`raser` : un VMID du plan portant un AUTRE nom doit faire REFUSER l'operation entiere.
C'est le verrou le plus important de la seule commande destructive du moteur, et le seul
qu'on ne peut pas eprouver sur le vrai cluster sans y fabriquer une collision. On isole
donc la logique derriere un faux cluster.
Le danger n'est pas theorique : le 2026-08-07, une VM heritee portait un VMID du plan sous
le nom `web-frontal-01`, et `proxmox_kvm` avait rapporte `ok` sans rien faire. Rase sans ce
controle, on detruisait la machine de quelqu'un d'autre.
"""
import sys, pathlib
sys.path.insert(0, str(pathlib.Path(__file__).resolve().parent.parent))
import raser
class FauxCluster:
"""Le cluster repond que 117603101 s'appelle « vm-heritee-de-2019 »."""
@classmethod
def depuis_hebergeur(cls):
return cls(), None
def __call__(self, chemin, methode="GET", corps=None):
return [{"type": "qemu", "vmid": 117603101, "name": "vm-heritee-de-2019", "node": "asgard"},
{"type": "qemu", "vmid": 117101101, "name": "infra-edge-01", "node": "asgard"}]
def rate(self, rep):
return None
raser.Cluster = FauxCluster
code = raser.main(["--instance", "chezlepro", "--confirmer"])
print(f"\n>>> code de sortie : {code} (2 = refus attendu)")
assert code == 2, "LE VERROU N'A PAS TENU"
print(">>> le verrou tient : aucune VM n'aurait ete touchee")