diff --git a/cmd/podman/machine/rm.go b/cmd/podman/machine/rm.go index 1ea32603c6..a70a12c838 100644 --- a/cmd/podman/machine/rm.go +++ b/cmd/podman/machine/rm.go @@ -9,7 +9,6 @@ import ( "os" "strings" - "github.com/containers/common/pkg/config" "github.com/containers/podman/v4/cmd/podman/registry" "github.com/containers/podman/v4/libpod/events" "github.com/containers/podman/v4/pkg/machine" @@ -94,24 +93,5 @@ func rm(_ *cobra.Command, args []string) error { return err } newMachineEvent(events.Remove, events.Event{Name: vmName}) - err = updateDefaultMachineInConfig(vmName) - if err != nil { - return fmt.Errorf("failed to update default machine: %v", err) - } return nil } - -func updateDefaultMachineInConfig(vmName string) error { - cfg, err := config.ReadCustomConfig() - if err != nil { - return err - } - if cfg.Engine.ActiveService == vmName { - cfg.Engine.ActiveService = "" - for machine := range cfg.Engine.ServiceDestinations { - cfg.Engine.ActiveService = machine - break - } - } - return cfg.Write() -} diff --git a/pkg/machine/connection.go b/pkg/machine/connection.go index 93c638cc7d..15e4fbef02 100644 --- a/pkg/machine/connection.go +++ b/pkg/machine/connection.go @@ -65,15 +65,25 @@ func ChangeDefault(name string) error { return cfg.Write() } -func RemoveConnection(name string) error { +func RemoveConnections(names ...string) error { cfg, err := config.ReadCustomConfig() if err != nil { return err } - if _, ok := cfg.Engine.ServiceDestinations[name]; ok { - delete(cfg.Engine.ServiceDestinations, name) - } else { - return fmt.Errorf("unable to find connection named %q", name) + for _, name := range names { + if _, ok := cfg.Engine.ServiceDestinations[name]; ok { + delete(cfg.Engine.ServiceDestinations, name) + } else { + return fmt.Errorf("unable to find connection named %q", name) + } + + if cfg.Engine.ActiveService == name { + cfg.Engine.ActiveService = "" + for service := range cfg.Engine.ServiceDestinations { + cfg.Engine.ActiveService = service + break + } + } } return cfg.Write() } diff --git a/pkg/machine/hyperv/machine.go b/pkg/machine/hyperv/machine.go index 653e2653a1..687e854bf5 100644 --- a/pkg/machine/hyperv/machine.go +++ b/pkg/machine/hyperv/machine.go @@ -358,10 +358,7 @@ func (m *HyperVMachine) Remove(_ string, opts machine.RemoveOptions) (string, fu logrus.Error(err) } } - if err := machine.RemoveConnection(m.Name); err != nil { - logrus.Error(err) - } - if err := machine.RemoveConnection(m.Name + "-root"); err != nil { + if err := machine.RemoveConnections(m.Name, m.Name+"-root"); err != nil { logrus.Error(err) } diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go index ea73a54568..5d7e011fc5 100644 --- a/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go @@ -969,13 +969,6 @@ func (v *MachineVM) Remove(_ string, opts machine.RemoveOptions) (string, func() files = append(files, socketPath.Path) files = append(files, v.archRemovalFiles()...) - if err := machine.RemoveConnection(v.Name); err != nil { - logrus.Error(err) - } - if err := machine.RemoveConnection(v.Name + "-root"); err != nil { - logrus.Error(err) - } - vmConfigDir, err := machine.GetConfDir(vmtype) if err != nil { return "", nil, err @@ -1006,6 +999,9 @@ func (v *MachineVM) Remove(_ string, opts machine.RemoveOptions) (string, func() logrus.Error(err) } } + if err := machine.RemoveConnections(v.Name, v.Name+"-root"); err != nil { + logrus.Error(err) + } return nil }, nil } diff --git a/pkg/machine/wsl/machine.go b/pkg/machine/wsl/machine.go index 9d790c9783..7e9aad4010 100644 --- a/pkg/machine/wsl/machine.go +++ b/pkg/machine/wsl/machine.go @@ -1429,10 +1429,7 @@ func (v *MachineVM) Remove(name string, opts machine.RemoveOptions) (string, fun confirmationMessage += "\n" return confirmationMessage, func() error { - if err := machine.RemoveConnection(v.Name); err != nil { - logrus.Error(err) - } - if err := machine.RemoveConnection(v.Name + "-root"); err != nil { + if err := machine.RemoveConnections(v.Name, v.Name+"-root"); err != nil { logrus.Error(err) } if err := runCmdPassThrough("wsl", "--unregister", toDist(v.Name)); err != nil {