f-21: vpc: change to be ok in the name
All checks were successful
Pre Release Workflow / set-release-target (push) Successful in 1s
Pre Release Workflow / build (agent, amd64, linux) (push) Successful in 1m34s
Pre Release Workflow / build (db, amd64, linux) (push) Successful in 1m34s
Pre Release Workflow / build (metacli, amd64, linux) (push) Successful in 1m31s
Pre Release Workflow / build (metadata, amd64, linux) (push) Successful in 1m32s
Pre Release Workflow / build (subnet, amd64, linux) (push) Successful in 1m33s
Pre Release Workflow / upload-scripts (run-dnsmasq-in-netns.sh) (push) Successful in 6s
Pre Release Workflow / prerelease (push) Successful in 14s
Pre Release Workflow / build (dhcp, amd64, linux) (push) Successful in 1m30s

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-04-21 21:52:03 +02:00
commit 2779002c63
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
3 changed files with 18 additions and 20 deletions

View file

@ -209,15 +209,16 @@ components:
properties: properties:
name: name:
type: string type: string
description: Unique name for the VPC description: Unique name for the VPC, must follow the format vp-[id]
example: vpc1 pattern: '^vp-.+'
example: vp-00001
VPC: VPC:
type: object type: object
properties: properties:
name: name:
type: string type: string
example: vpc1 example: vp-00001
state: state:
type: string type: string
enum: [creating, created, deleting, deleted] enum: [creating, created, deleting, deleted]

View file

@ -1,6 +1,8 @@
package vpc package vpc
import ( import (
"strings"
"git.g3e.fr/syonad/two/internal/netif" "git.g3e.fr/syonad/two/internal/netif"
"git.g3e.fr/syonad/two/internal/netns" "git.g3e.fr/syonad/two/internal/netns"
"git.g3e.fr/syonad/two/pkg/db/kv" "git.g3e.fr/syonad/two/pkg/db/kv"
@ -9,49 +11,40 @@ import (
) )
func CreateVPC(db *badger.DB, name string) error { func CreateVPC(db *badger.DB, name string) error {
// missing
// search data in db
// change state in db
// create netns
if state, err := kv.GetFromDB(db, "vpc/"+name+"/state"); err != nil { if state, err := kv.GetFromDB(db, "vpc/"+name+"/state"); err != nil {
return err return err
} else if state == "creating" { } else if state == "creating" {
vpcID := strings.SplitN(name, "-", 2)[1]
if err := netns.Create(name); err != nil { if err := netns.Create(name); err != nil {
return err return err
} }
// create veth public for this netns if err := netif.CreateVethToNetns("vp-"+vpcID+"-e", "vp-"+vpcID+"-i", "/var/run/netns/"+name, 9000); err != nil {
if err := netif.CreateVethToNetns("vp-"+name+"-e", "vp-public-i", "/var/run/netns/"+name, 9000); err != nil {
return err return err
} }
// create public bridge in netns
if err := netns.Call(name, func() error { if err := netns.Call(name, func() error {
return netif.CreateBridge("br-public", 1500) return netif.CreateBridge("br-public", 1500)
}); err != nil { }); err != nil {
return err return err
} }
// set veth to ext public bridge if err := netif.BridgeSetMaster("vp-"+vpcID+"-e", "br-public"); err != nil {
if err := netif.BridgeSetMaster("vp-"+name+"-e", "br-public"); err != nil {
return err return err
} }
// set veth to int public bridge
if err := netns.Call(name, func() error { if err := netns.Call(name, func() error {
return netif.BridgeSetMaster("vp-public-i", "br-public") return netif.BridgeSetMaster("vp-"+vpcID+"-i", "br-public")
}); err != nil { }); err != nil {
return err return err
} }
// set set ext veth up if err := netif.LinkSetUp("vp-" + vpcID + "-e"); err != nil {
if err := netif.LinkSetUp("vp-" + name + "-e"); err != nil {
return err return err
} }
// set set int veth up
if err := netns.Call(name, func() error { if err := netns.Call(name, func() error {
return netif.LinkSetUp("vp-public-i") return netif.LinkSetUp("vp-" + vpcID + "-i")
}); err != nil { }); err != nil {
return err return err
} }

View file

@ -1,6 +1,8 @@
package vpc package vpc
import ( import (
"strings"
"git.g3e.fr/syonad/two/internal/netif" "git.g3e.fr/syonad/two/internal/netif"
"git.g3e.fr/syonad/two/internal/netns" "git.g3e.fr/syonad/two/internal/netns"
"git.g3e.fr/syonad/two/pkg/db/kv" "git.g3e.fr/syonad/two/pkg/db/kv"
@ -12,7 +14,9 @@ func DeleteVPC(db *badger.DB, name string) error {
if state, err := kv.GetFromDB(db, "vpc/"+name+"/state"); err != nil { if state, err := kv.GetFromDB(db, "vpc/"+name+"/state"); err != nil {
return err return err
} else if state == "deleting" { } else if state == "deleting" {
if err := netif.DeleteLink("vp-" + name + "-e"); err != nil { vpcID := strings.SplitN(name, "-", 2)[1]
if err := netif.DeleteLink("vp-" + vpcID + "-e"); err != nil {
return err return err
} }