8802de4fb0
f-46: statefile: add a generic atomic state file #46
...
Persistance d'un état de composant dans un fichier, générique sur le type
stocké : temp + chmod 0600 + sync + rename, répertoire en 0700. Chaque écriture
remplace le fichier, donc un chmod externe est effacé, et un échec d'encodage ne
tronque pas l'état précédent.
Load crée le fichier absent et rend le zéro du type ; un fichier vide est un
point de départ valide, un fichier corrompu est une erreur.
Dans pkg/ plutôt que sous internal/dhcpd : une réutilisation par l'intel est
envisagée. Écarte Badger pour cet usage — une instance par subnet coûterait
~74 Mio et 4 goroutines pour ~1 Kio d'état dans un tmpfs, plus un LOCK résiduel
après un arrêt brutal.
11 tests, quatre mutations toutes détectées.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-09-05 23:17:58 +02:00
e44f3aca96
f-46: dhcpd: add the decision engine and the persisted state #46
...
Store porte la configuration du subnet et les réservations par MAC, et les
persiste dans un .state écrit de façon atomique (temp + chmod 0600 + rename).
Chaque écriture remplace le fichier, donc un chmod externe est effacé.
Les snapshots sont à la fois la forme sérialisée et la forme d'entrée des
ordres : validation au moment où l'agent pousse, pas quand un guest demande une
adresse. Les hôtes sont triés par MAC, base du digest de L3.
Handle rend (nil, nil) — le silence est un retour normal — pour un type de
message non traité, un subnet non configuré ou une MAC inconnue. La MAC est
normalisée à l'écriture comme au chargement.
58 tests, -race propre, dix mutations toutes détectées.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-09-05 23:17:58 +02:00
8658acfe08
f-46: dhcpd: build dhcp replies over insomniacslk/dhcp #46
...
internal/dhcpd décide quelles options partent vers quelle MAC, sans I/O ni
état. L'encodage RFC 3442 de l'option 121 est délégué à la bibliothèque, qui le
teste elle-même.
L'option 3 est omise plutôt qu'envoyée vide : la dhcp-option=3 nue n'existait
que pour empêcher dnsmasq d'annoncer sa propre adresse. La route par défaut est
conditionnée au subnet (DefaultGateway) et à l'interface (Host.DefaultRoute),
ce qui remplace le mécanisme de tags.
24 tests plus un fuzz sur BuildReply. Les assertions d'encodage sont validées
par mutation.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-09-05 23:17:58 +02:00
4f591f6ab5
f-46: ci: align go version with the module #46
...
build.yml épinglait setup-go sur 1.21 alors que le module déclarait go 1.24.0 :
la compilation se faisait en réalité avec la toolchain téléchargée par
GOTOOLCHAIN=auto, et le workflow affichait une version qui n'était pas celle qui
compilait.
Le passage à go-version-file: go.mod, qui supprimerait la dérive pour de bon,
est renvoyé à #48 — un input de setup-go n'est validable qu'en poussant un tag
tant que rien ne se déclenche sur push.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-09-05 23:17:57 +02:00
a5715af069
f-46: build: bump go to 1.25 #46
...
La bibliothèque DHCP retenue pour #46 (github.com/insomniacslk/dhcp) déclare
go 1.25.0. Relèvement de la directive et de la toolchain ; go.sum est inchangé,
la bibliothèque n'entrant qu'avec le code qui l'importe.
Vérifié : build darwin, build linux/amd64 en CGO_ENABLED=0 des trois binaires,
go vet, et trois passes de go test ./... sans échec.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-09-05 23:17:57 +02:00
0446c9084e
Merge branch 'docs'
2026-09-05 23:17:33 +02:00
45f8e43de8
docs: configuration for orchestrator
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-27 23:56:47 +02:00
cb904c4744
docs: premiere creation de documentation
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-26 23:41:50 +02:00
9a46b5cde7
docs: add first doc version
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-26 22:36:46 +02:00
10c9bc2985
Merge branch 'release-0.1.0'
2026-08-26 00:22:51 +02:00
2fd4987bca
0.1.0: release
...
Release Pipeline / set-release-target (push) Successful in 2s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 4s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 4s
Release Pipeline / checksums (push) Successful in 4s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 4s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 4s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m31s
0.1.0
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-26 00:21:30 +02:00
aa685a879f
0.1.0: update release docs
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-26 00:21:01 +02:00
7138a6654a
Merge branch 'feature-33'
2026-08-25 23:57:35 +02:00
c47577db21
f-33: doc: update README
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 23:57:11 +02:00
642a9c2f7a
f-33: doc: update release note
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 23:56:55 +02:00
26d5805747
f-33: vm: start vms with multiple nic
...
Release Pipeline / checksums (push) Successful in 4s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / set-release-target (push) Successful in 2s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 4s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 4s
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 4s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 4s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m36s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 23:12:55 +02:00
0237acba81
f-33: net: add multi net in dispatch et vms #33
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 22:48:13 +02:00
1ec1d44c1a
f-33: mise en place d'un nouveau system de reservation #33
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 22:37:07 +02:00
f90514a5dc
f-33: dnsmasq: remove duplicated --no-daemon flag
...
Le drapeau était passé deux fois, en tête et en fin de ligne de commande.
Sans effet, mais gênant à la lecture.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 21:42:08 +02:00
30bb4107a1
f-33: dnsmasq: give each instance its own lease file
...
Sans --dhcp-leasefile, toutes les instances écrivaient dans le fichier de
baux par défaut du système : chacune relisait au démarrage des baux
appartenant aux autres subnets, puis réécrivait le fichier avec les siens
seulement.
Sans effet visible jusqu'ici — les réservations étant statiques,
l'adressage vient de la MAC et non du bail — mais la collision est réelle
et se manifeste à chaque redémarrage d'une instance.
Le fichier suit le même motif que le pidfile déjà en place, et vit dans
/run : ces baux n'ont aucun sens sans le netns, qui ne survit pas au
redémarrage de l'host.
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 21:41:56 +02:00
032201d631
Merge branch 'feature-34'
Release Pipeline / set-release-target (push) Successful in 2s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 4s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 4s
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 4s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 4s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / checksums (push) Successful in 4s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m31s
2026-08-25 20:18:47 +02:00
46596f8142
f-34: route: add default gateway full gestion
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-25 20:18:09 +02:00
d15454d35b
f-34: route: add test for route metadata #34
...
Release Pipeline / set-release-target (push) Successful in 1s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 3s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 3s
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 3s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 3s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m29s
Release Pipeline / checksums (push) Successful in 4s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 22:57:30 +02:00
a2170fff08
f-34: route: fix missing route for metadata #34
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 22:57:03 +02:00
8078da0bda
f-34: doc: update api doc #34
...
Release Pipeline / set-release-target (push) Successful in 1s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 3s
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 3s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 3s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 3s
Release Pipeline / checksums (push) Successful in 4s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m33s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 22:27:57 +02:00
e2fbb5fb7a
f-34: metadata: update api #34
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 22:27:36 +02:00
ae81158b2d
f-34: metadata: add metadata in dispatcher #34
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 22:20:13 +02:00
883d628bf6
f-34: metadata: update metadata gen files #34
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 22:14:15 +02:00
63fc305736
Merge branch 'feature-43'
2026-08-24 21:37:29 +02:00
ea9559c784
f-43: test: fix default route create for nothing #43
...
Release Pipeline / set-release-target (push) Successful in 1s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 3s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 3s
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 3s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 3s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / checksums (push) Successful in 4s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m29s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 21:19:50 +02:00
52d214404d
f-43: dhcp: fix default route create for nothing #43
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-24 21:19:39 +02:00
57448d758f
Merge branch 'feature-29'
2026-08-23 22:02:05 +02:00
cdbb5012b1
f-29: stop: add a proper stop
...
Release Pipeline / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 4s
Release Pipeline / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 4s
Release Pipeline / build (agent, amd64, linux) (push) Successful in 0s
Release Pipeline / build (metadata, amd64, linux) (push) Successful in 0s
Release Pipeline / checksums (push) Successful in 4s
Release Pipeline / set-release-target (push) Successful in 2s
Release Pipeline / upload-assets (agent.service, systemd/agent.service) (push) Successful in 4s
Release Pipeline / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 4s
Release Pipeline / release (push) Successful in 11s
Release Pipeline / publish (push) Successful in 0s
Release Pipeline / build (push) Successful in 1m30s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-18 00:41:01 +02:00
1ce84ffd58
f-29: watchdog: call this one #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-18 00:22:57 +02:00
d8ece59d1c
f-29: watchdog: change error messages #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-18 00:05:04 +02:00
2ce7ebafe7
f-29: watchdog: add specific config #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:52:48 +02:00
a1df88a1f2
f-29: watchdog: create runner #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:48:45 +02:00
cb812c97ab
f-29: watchdog: add checkvms #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:39:31 +02:00
0fa84b8320
f-29: watchdog: add checksubnet #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:39:25 +02:00
ea60c0db54
f-29: watchdog: add checkvpc #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:39:07 +02:00
f05c4e1fce
f-29: watchdog: add notify #29
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 23:38:41 +02:00
9445bc087a
main: doc: add release notes
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 22:21:33 +02:00
2ec819377f
main: ci: update release jobs
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 22:21:32 +02:00
82d678277c
main: ci: remove bad data
...
Pre Release Workflow / set-release-target (push) Successful in 2s
Pre Release Workflow / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 4s
Pre Release Workflow / checksums (push) Successful in 11s
Pre Release Workflow / upload-assets (agent.service, systemd/agent.service) (push) Successful in 8s
Pre Release Workflow / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 4s
Pre Release Workflow / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 4s
Pre Release Workflow / build (agent, amd64, linux) (push) Successful in 0s
Pre Release Workflow / build (metadata, amd64, linux) (push) Successful in 0s
Pre Release Workflow / release (push) Successful in 9s
Pre Release Workflow / prerelease (push) Successful in 0s
Pre Release Workflow / build (push) Successful in 1m29s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-17 19:57:39 +02:00
d042a1ab5b
Merge branch 'feature-37'
2026-08-16 22:54:44 +02:00
ba189cf9f5
f-37: scripts/ci: add manifest handle
...
Pre Release Workflow / set-release-target (push) Successful in 2s
Pre Release Workflow / build (metadata, amd64, linux) (push) Has been cancelled
Pre Release Workflow / upload-assets (agent.service, systemd/agent.service) (push) Has been cancelled
Pre Release Workflow / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Has been cancelled
Pre Release Workflow / upload-assets (metadata@.service, systemd/metadata@.service) (push) Has been cancelled
Pre Release Workflow / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Has been cancelled
Pre Release Workflow / checksums (push) Has been cancelled
Pre Release Workflow / prerelease (push) Has been cancelled
Pre Release Workflow / build (agent, amd64, linux) (push) Has been cancelled
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-14 17:01:53 +02:00
ec33948b8c
f-37: scripts: change to locals
...
Pre Release Workflow / prerelease (push) Successful in 11s
Pre Release Workflow / set-release-target (push) Successful in 1s
Pre Release Workflow / build (agent, amd64, linux) (push) Successful in 1m36s
Pre Release Workflow / build (metadata, amd64, linux) (push) Successful in 1m30s
Pre Release Workflow / upload-assets (agent.service, systemd/agent.service) (push) Successful in 7s
Pre Release Workflow / upload-assets (dnsmasq@.service, systemd/dnsmasq@.service) (push) Successful in 7s
Pre Release Workflow / upload-assets (metadata@.service, systemd/metadata@.service) (push) Successful in 8s
Pre Release Workflow / upload-assets (run-dnsmasq-in-netns.sh, scripts/run-dnsmasq-in-netns.sh) (push) Successful in 6s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-14 13:52:06 +02:00
64438d64e6
f-37: script: clean commentaries
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-14 13:51:55 +02:00
3d2e42d9f1
f-37: scripts: refacto deploy.sh
...
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-14 13:51:54 +02:00
8d04472ec1
f-37: prometheus: add vms
...
Pre Release Workflow / set-release-target (push) Successful in 1s
Pre Release Workflow / build (agent, amd64, linux) (push) Successful in 1m35s
Pre Release Workflow / build (metadata, amd64, linux) (push) Successful in 1m31s
Pre Release Workflow / upload-scripts (run-dnsmasq-in-netns.sh) (push) Successful in 8s
Pre Release Workflow / prerelease (push) Successful in 10s
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2026-08-14 01:00:00 +02:00