diff --git a/.forgejo/workflows/prerelease.yml b/.forgejo/workflows/prerelease.yml index ed635e9..8003e82 100644 --- a/.forgejo/workflows/prerelease.yml +++ b/.forgejo/workflows/prerelease.yml @@ -37,6 +37,7 @@ jobs: - metadata - metacli - agent + - vpc - dhcp - subnet uses: ./.forgejo/workflows/build.yml diff --git a/cmd/vpc/main.go b/cmd/vpc/main.go new file mode 100644 index 0000000..e73f7e9 --- /dev/null +++ b/cmd/vpc/main.go @@ -0,0 +1,65 @@ +package main + +import ( + "flag" + "fmt" + "os" + + configuration "git.g3e.fr/syonad/two/internal/config/agent" + "git.g3e.fr/syonad/two/internal/vpc" + "git.g3e.fr/syonad/two/pkg/db/kv" + "github.com/dgraph-io/badger/v4" +) + +var ( + netns = flag.String("netns", "", "Network namespace à faire") + name = flag.String("name", "", "interface name") + action = flag.String("action", "", "Action a faire") + conf_file = flag.String("conf", "/etc/two/agent.yml", "configuration file") +) + +var DB *badger.DB + +func main() { + flag.Parse() + + conf, err := configuration.LoadConfig(*conf_file) + if err != nil { + fmt.Println(err) + return + } + + DB = kv.InitDB(kv.Config{ + Path: conf.Database.Path, + }, false) + defer DB.Close() + + switch *action { + case "create": + kv.AddInDB(DB, "vpc/"+*name+"/state", "creating") + if err := vpc.CreateVPC(DB, *name); err != nil { + fmt.Println(err) + } + case "delete": + kv.AddInDB(DB, "vpc/"+*name+"/state", "deleting") + if err := vpc.DeleteVPC(DB, *name); err != nil { + fmt.Println(err) + } + if state, err := kv.GetFromDB(DB, "vpc/"+*name+"/state"); err != nil { + fmt.Println(err) + os.Exit(1) + } else if state == "deleted" { + kv.DeleteInDB(DB, "vpc/"+*name) + } + case "check": + if state, err := kv.GetFromDB(DB, "vpc/"+*name+"/state"); err != nil { + os.Exit(1) + } else if state != "created" { + os.Exit(1) + } + default: + fmt.Printf("Available commande:\n - create\n - delete\n - check\n") + os.Exit(1) + } + os.Exit(0) +} diff --git a/internal/dispatcher/subnet_commands.go b/internal/dispatcher/subnet_commands.go index b23949e..d8ef8e3 100644 --- a/internal/dispatcher/subnet_commands.go +++ b/internal/dispatcher/subnet_commands.go @@ -1,14 +1,6 @@ package dispatcher -import ( - "fmt" - "os" - "strconv" - - "git.g3e.fr/syonad/two/internal/subnet" - "git.g3e.fr/syonad/two/pkg/db/kv" - "github.com/dgraph-io/badger/v4" -) +import "github.com/dgraph-io/badger/v4" type CreateSubnetCommand struct { Name string @@ -20,13 +12,8 @@ type CreateSubnetCommand struct { } func (c CreateSubnetCommand) Execute(db *badger.DB) error { - kv.AddInDB(db, "subnet/"+c.Name+"/state", "creating") - kv.AddInDB(db, "subnet/"+c.Name+"/vpc", c.VPC) - kv.AddInDB(db, "subnet/"+c.Name+"/vxlan_id", strconv.Itoa(c.VxlanID)) - kv.AddInDB(db, "subnet/"+c.Name+"/local_ip", c.LocalIP) - kv.AddInDB(db, "subnet/"+c.Name+"/gateway_ip", c.GatewayIP) - kv.AddInDB(db, "subnet/"+c.Name+"/cidr", c.CIDR) - return subnet.CreateSubnet(db, c.Name) + // TODO: brancher internal/subnet/create.go + return nil } type DeleteSubnetCommand struct { @@ -34,16 +21,6 @@ type DeleteSubnetCommand struct { } func (c DeleteSubnetCommand) Execute(db *badger.DB) error { - kv.AddInDB(db, "subnet/"+c.Name+"/state", "deleting") - if err := subnet.DeleteSubnet(db, c.Name); err != nil { - fmt.Println(err) - os.Exit(1) - } - if state, err := kv.GetFromDB(db, "subnet/"+c.Name+"/state"); err != nil { - fmt.Println(err) - os.Exit(1) - } else if state == "deleted" { - kv.DeleteInDB(db, "subnet/"+c.Name) - } + // TODO: brancher internal/subnet/delete.go return nil }