implementer la partie vm stop et start de celle-ci. #25

Closed
opened 2026-04-26 14:23:51 +00:00 by nicolas.boufideline · 2 comments

En gros il faut implémenter toute la partie de gestion de vms

En gros il faut implémenter toute la partie de gestion de vms
nicolas.boufideline added reference feature-25 2026-05-01 21:21:24 +00:00
Author
Owner

je vais peut-etre merge avant de finir...

je vais peut-etre merge avant de finir...
Author
Owner

Livré : cycle de vie complet des VM, de l'API à QEMU.

StartVM enchaîne tap → iptables (redirection metadata) → serveur metadata → QEMU. StopVM fait un system_powerdown QMP, attend, puis nettoie tap, metadata, iptables et vars UEFI — sans jamais toucher aux fichiers disque, ce qui s'est révélé structurant plus tard (extinction propre réutilisable telle quelle pour un build d'image).

Détail qui a son importance — waitQMPDead envoie {"execute":"quit"} à l'expiration de dispatcher.timeout_seconds (300 s par défaut) : un arrêt brutal. Acceptable pour une VM applicative ; à surveiller pour tout usage où la cohérence du système de fichiers compte au moment de l'arrêt.

Dette traitée dans la foulée — log.Fatal supprimé de deleteInDB.go (il tuait tout le process depuis une goroutine worker), audit des erreurs KV ignorées dans internal/api/agent, création de internal/ebtables pour sortir les exec.Command("ebtables") des paquets métier, MTU passé en paramètre dans internal/netif/vxlan.go, et premiers tests sur pkg/db/kv, internal/api/agent, internal/dispatcher/agent, pkg/worker et internal/metadata.

Livré : cycle de vie complet des VM, de l'API à QEMU. `StartVM` enchaîne tap → iptables (redirection metadata) → serveur metadata → QEMU. `StopVM` fait un `system_powerdown` QMP, attend, puis nettoie tap, metadata, iptables et vars UEFI — **sans jamais toucher aux fichiers disque**, ce qui s'est révélé structurant plus tard (extinction propre réutilisable telle quelle pour un build d'image). **Détail qui a son importance** — `waitQMPDead` envoie `{"execute":"quit"}` à l'expiration de `dispatcher.timeout_seconds` (300 s par défaut) : un arrêt **brutal**. Acceptable pour une VM applicative ; à surveiller pour tout usage où la cohérence du système de fichiers compte au moment de l'arrêt. **Dette traitée dans la foulée** — `log.Fatal` supprimé de `deleteInDB.go` (il tuait tout le process depuis une goroutine worker), audit des erreurs KV ignorées dans `internal/api/agent`, création de `internal/ebtables` pour sortir les `exec.Command("ebtables")` des paquets métier, MTU passé en paramètre dans `internal/netif/vxlan.go`, et premiers tests sur `pkg/db/kv`, `internal/api/agent`, `internal/dispatcher/agent`, `pkg/worker` et `internal/metadata`.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
syonad/two#25
No description provided.