OpenKeel implementation in Go of OpenStack neutron-vpnaas on the OVN path, generated from the reverse-specification of branch stable/2026.2 by the generate-go-from-spec skill. neutron-vpnaas-api serves the VPN API (/v2.0/vpn and the agent scheduler) and replaces the ovn-vpnaas service plugin and its driver: same routes, status codes, error bodies and policies, same tables. neutron-vpnaas-agent replaces neutron-ovn-vpn-agent: it runs strongSwan, the original's daemon, in one qvpn-<router> namespace per router. It runs beside openkeel-neutron, on its database and its OVN; clients reach it through a proxy in openkeel-neutron: see docs/NEUTRON-INTEGRATION.md. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.
Go module: github.com/openkeel/openkeel-neutron-vpnaas
Binaries: neutron-vpnaas-api (API on port 9696, agent API on 9697, health and metrics on 9090), neutron-vpnaas-agent (health on 9091; needs Linux, root and strongSwan: Dockerfile.agent)
Configuration: YAML, see config/config.example.yaml and config/agent.example.yaml
Setting up a development environment, the database and the tests: docs/GETTING-STARTED.md
Database schema, migrations and upgrades: docs/DATABASE.md
Estratto da openkeel-neutron-vpnaas/README.md (in inglese).
API REST
35 operazioni dell'API REST originale (route e azioni nel corpo) e il loro stato in OpenKeel.
Gli scambi registrati del profilo OVN vengono riprodotti sul servizio Go, la generazione della configurazione viene confrontata con i template originali e tunnel IPsec reali vengono attivati end-to-end.
Replay degli scambi registrati
Replay E2E del profilo OVN
Gli scambi VPNaaS registrati serviti da questo servizio restituiscono le stesse risposte; quelli serviti da Neutron vengono verificati sullo stack reale.
Esecuzione
make e2e-strict, su go-mysql-server e su MariaDB 11.4.
Ultimo risultato 84 riprodotti, 84 superati (2026-10-31); 25 dei 108 scambi registrati appartengono a Neutron o non sono più applicabili.
VPNaaS mantiene la sua API con un unico driver strongSwan su OVN, senza Libreswan, il vecchio percorso L3, rootwrap né RabbitMQ.
Obsoleto o inutilizzato upstream
Driver Libreswan e vecchio percorso dell'agente L3
Perché è stato escluso
Non sono obiettivi del rewrite; viene fornito un solo driver, strongSwan in un namespace per router sullo chassis OVN.
Perché la soluzione non ne risente
Le connessioni IPsec site-to-site si creano tramite la stessa API; i deployment che si basavano su comportamenti specifici di Libreswan non li ritrovano.
Qui è elencato solo ciò che è stato escluso per scelta progettuale; il lavoro non ancora svolto si trova nei Known gaps del docs/CONFORMANCE.md del modulo. Tutti i moduli
Interazioni Neutron-VPNaaS
Vista del servizio generata dalla skill dei diagrammi a partire dal modello OpenKeel.