diff --git a/.forgejo/workflows/prerelease.yml b/.forgejo/workflows/prerelease.yml index f20ca66..42d3a75 100644 --- a/.forgejo/workflows/prerelease.yml +++ b/.forgejo/workflows/prerelease.yml @@ -37,7 +37,7 @@ jobs: - metadata - metacli - agent - - vpc + - netns uses: ./.forgejo/workflows/build.yml with: tag: ${{ needs.set-release-target.outputs.release_cible }} diff --git a/cmd/netns/main.go b/cmd/netns/main.go new file mode 100644 index 0000000..e1729f7 --- /dev/null +++ b/cmd/netns/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "flag" + "fmt" + "os" + + "git.g3e.fr/syonad/two/internal/netns" +) + +var ( + netns_name = flag.String("netns", "", "Network namespace à faire") + action = flag.String("action", "", "Action a faire") +) + +func main() { + flag.Parse() + + switch *action { + case "create": + err := netns.Create(*netns_name) + if err != nil { + fmt.Println(err) + } + case "delete": + err := netns.Delete(*netns_name) + if err != nil { + fmt.Println(err) + } + case "check": + if netns.Exist(*netns_name) { + fmt.Printf("netns %s exist\n", *netns_name) + } else { + fmt.Printf("netns %s do not exist\n", *netns_name) + } + default: + fmt.Printf("Available commande:\n - create\n - delete\n - check\n") + os.Exit(1) + } +} diff --git a/cmd/vpc/main.go b/cmd/vpc/main.go index 6d70f79..d18dabd 100644 --- a/cmd/vpc/main.go +++ b/cmd/vpc/main.go @@ -5,7 +5,7 @@ import ( "fmt" "os" - "git.g3e.fr/syonad/two/internal/vpc" + "git.g3e.fr/syonad/two/internal/netif" ) var ( @@ -19,11 +19,8 @@ func main() { switch *action { case "create": - if err := vpc.CreateVPC(*name); err != nil { - fmt.Println(err) - } - case "delete": - if err := vpc.DeleteVPC(*name); err != nil { + err := netif.CreateVethToNetns("veth"+*name+"ext", "veth"+*name+"int", "/var/run/netns/"+*netns, 9000) + if err != nil { fmt.Println(err) } default: diff --git a/internal/vpc/create.go b/internal/vpc/create.go deleted file mode 100644 index 55896ba..0000000 --- a/internal/vpc/create.go +++ /dev/null @@ -1,60 +0,0 @@ -package vpc - -import ( - "git.g3e.fr/syonad/two/internal/netif" - "git.g3e.fr/syonad/two/internal/netns" -) - -func CreateVPC(name string) error { - // missing - // search data in db - // change state in db - - // create netns - if err := netns.Create(name); err != nil { - return err - } - - // create veth public for this netns - if err := netif.CreateVethToNetns(name+"-ext", "veth-"+name+"-int", "/var/run/netns/"+name, 9000); err != nil { - return err - } - - // create public bridge in netns - if err := netns.Call(name, func() error { - return netif.CreateBridge("br-public", 1500, false) - }); err != nil { - return err - } - - // set veth to ext public bridge - if err := netif.BridgeSetMaster(name+"-ext", "br-public"); err != nil { - return err - } - - // set veth to int public bridge - if err := netns.Call(name, func() error { - return netif.BridgeSetMaster("veth-"+name+"-int", "br-public") - }); err != nil { - return err - } - - // set set ext veth up - if err := netif.LinkSetUp(name + "-ext"); err != nil { - return nil - } - // set set int veth up - if err := netns.Call(name, func() error { - return netif.LinkSetUp("veth-" + name + "-int") - }); err != nil { - return err - } - // set set int bridge up - if err := netns.Call(name, func() error { - return netif.LinkSetUp("br-public") - }); err != nil { - return err - } - - return nil -} diff --git a/internal/vpc/delete.go b/internal/vpc/delete.go deleted file mode 100644 index 3daea61..0000000 --- a/internal/vpc/delete.go +++ /dev/null @@ -1,18 +0,0 @@ -package vpc - -import ( - "git.g3e.fr/syonad/two/internal/netif" - "git.g3e.fr/syonad/two/internal/netns" -) - -func DeleteVPC(name string) error { - if err := netif.DeleteLink(name + "-ext"); err != nil { - return err - } - - if err := netns.Delete(name); err != nil { - return err - } - - return nil -}