From cca65db01dd0d08bf1efd98b5bddb6acea880842 Mon Sep 17 00:00:00 2001 From: vyasgun Date: Thu, 2 Mar 2023 11:06:56 +0530 Subject: [PATCH] fix: update the default machine value when the previously set default machine is deleted [NO NEW TESTS NEEDED] Fixes: https://github.com/containers/podman/issues/16483 Signed-off-by: vyasgun --- cmd/podman/machine/rm.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/cmd/podman/machine/rm.go b/cmd/podman/machine/rm.go index 362c9a7d3f..6418b91410 100644 --- a/cmd/podman/machine/rm.go +++ b/cmd/podman/machine/rm.go @@ -9,6 +9,7 @@ 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" @@ -90,5 +91,24 @@ 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() +}