f-25: vms: add iptables gestion
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
28f4dbf7d7
commit
ebac5afcb6
3 changed files with 90 additions and 12 deletions
|
|
@ -6,8 +6,10 @@ import (
|
|||
"time"
|
||||
|
||||
configuration "git.g3e.fr/syonad/two/internal/config/agent"
|
||||
"git.g3e.fr/syonad/two/internal/iptables"
|
||||
"git.g3e.fr/syonad/two/internal/metadata"
|
||||
"git.g3e.fr/syonad/two/internal/netif"
|
||||
"git.g3e.fr/syonad/two/internal/netns"
|
||||
"git.g3e.fr/syonad/two/internal/qmp"
|
||||
"git.g3e.fr/syonad/two/pkg/db/kv"
|
||||
|
||||
|
|
@ -37,6 +39,21 @@ func StopVM(db *badger.DB, name string, cfg *configuration.Config) error {
|
|||
return fmt.Errorf("parse tap_id: %w", err)
|
||||
}
|
||||
|
||||
vmIP, err := kv.GetFromDB(db, "vm/"+name+"/ip")
|
||||
if err != nil {
|
||||
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)
|
||||
}
|
||||
|
||||
socketPath := fmt.Sprintf("/tmp/%s.qmp-sock", name)
|
||||
|
||||
if _, err := qmp.Send(socketPath, []string{`{"execute":"system_powerdown"}`}); err != nil {
|
||||
|
|
@ -59,6 +76,12 @@ func StopVM(db *badger.DB, name string, cfg *configuration.Config) error {
|
|||
}
|
||||
}
|
||||
|
||||
if err := netns.Call(vpcName, func() error {
|
||||
return iptables.DeleteMetadataRedirect(vmIP, gatewayIP, metadataPort)
|
||||
}); err != nil {
|
||||
return fmt.Errorf("delete metadata redirect: %w", err)
|
||||
}
|
||||
|
||||
if err := metadata.StopMetadata(name, db, false); err != nil {
|
||||
return fmt.Errorf("stop metadata: %w", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue