diff --git a/internal/vm/create.go b/internal/vm/create.go index 243a8d6..49d0dd8 100644 --- a/internal/vm/create.go +++ b/internal/vm/create.go @@ -3,6 +3,7 @@ package vm import ( "fmt" "strconv" + "strings" "git.g3e.fr/syonad/two/internal/iptables" "git.g3e.fr/syonad/two/internal/metadata" @@ -23,16 +24,23 @@ func StartVM(db *badger.DB, name string) error { return nil } - vpcName, err := kv.GetFromDB(db, "vm/"+name+"/vpc") + subnetName, err := kv.GetFromDB(db, "vm/"+name+"/subnet") + if err != nil { + return fmt.Errorf("get subnet: %w", err) + } + + vpcName, err := kv.GetFromDB(db, "subnet/"+subnetName+"/vpc") if err != nil { return fmt.Errorf("get vpc: %w", err) } - bridge, err := kv.GetFromDB(db, "vm/"+name+"/bridge") + gatewayIP, err := kv.GetFromDB(db, "subnet/"+subnetName+"/gateway_ip") if err != nil { - return fmt.Errorf("get bridge: %w", err) + return fmt.Errorf("get gateway_ip: %w", err) } + bridge := "br-" + strings.SplitN(subnetName, "-", 2)[1] + tapIDStr, err := kv.GetFromDB(db, "vm/"+name+"/tap_id") if err != nil { return fmt.Errorf("get tap_id: %w", err) @@ -47,11 +55,6 @@ func StartVM(db *badger.DB, name string) error { return fmt.Errorf("get ip: %w", err) } - gatewayIP, err := kv.GetFromDB(db, "vm/"+name+"/gateway_ip") - if err != nil { - return fmt.Errorf("get gateway_ip: %w", err) - } - metadataPort, err := kv.GetFromDB(db, "vm/"+name+"/metadata_port") if err != nil { return fmt.Errorf("get metadata_port: %w", err) diff --git a/internal/vm/delete.go b/internal/vm/delete.go index 7e89424..0de2b73 100644 --- a/internal/vm/delete.go +++ b/internal/vm/delete.go @@ -25,11 +25,21 @@ func StopVM(db *badger.DB, name string, cfg *configuration.Config) error { return nil } - vpcName, err := kv.GetFromDB(db, "vm/"+name+"/vpc") + subnetName, err := kv.GetFromDB(db, "vm/"+name+"/subnet") + if err != nil { + return fmt.Errorf("get subnet: %w", err) + } + + vpcName, err := kv.GetFromDB(db, "subnet/"+subnetName+"/vpc") if err != nil { return fmt.Errorf("get vpc: %w", err) } + gatewayIP, err := kv.GetFromDB(db, "subnet/"+subnetName+"/gateway_ip") + if err != nil { + return fmt.Errorf("get gateway_ip: %w", err) + } + tapIDStr, err := kv.GetFromDB(db, "vm/"+name+"/tap_id") if err != nil { return fmt.Errorf("get tap_id: %w", err) @@ -44,11 +54,6 @@ func StopVM(db *badger.DB, name string, cfg *configuration.Config) error { return fmt.Errorf("get ip: %w", err) } - gatewayIP, err := kv.GetFromDB(db, "vm/"+name+"/gateway_ip") - if err != nil { - return fmt.Errorf("get gateway_ip: %w", err) - } - metadataPort, err := kv.GetFromDB(db, "vm/"+name+"/metadata_port") if err != nil { return fmt.Errorf("get metadata_port: %w", err)