mirror of
https://github.com/containers/podman.git
synced 2025-05-19 08:07:10 +08:00
Update connection on removal
Modify `RemoveConnections` to verify the new default system connection's rootful state matches the rootful-ness of the podman machine it is associated with. Signed-off-by: Jake Correnti <jakecorrenti+github@proton.me>
This commit is contained in:
@ -30,6 +30,11 @@ func resetMachine() error {
|
|||||||
logrus.Errorf("unable to load machines: %q", err)
|
logrus.Errorf("unable to load machines: %q", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
machines, err := p.GetAllMachinesAndRootfulness()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
for _, mc := range mcs {
|
for _, mc := range mcs {
|
||||||
state, err := provider.State(mc, false)
|
state, err := provider.State(mc, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -42,7 +47,7 @@ func resetMachine() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := connection.RemoveConnections(mc.Name, mc.Name+"-root"); err != nil {
|
if err := connection.RemoveConnections(machines, mc.Name, mc.Name+"-root"); err != nil {
|
||||||
logrus.Error(err)
|
logrus.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,26 +75,34 @@ func UpdateConnectionPairPort(name string, port, uid int, remoteUsername string,
|
|||||||
// Returns true if it modified the default
|
// Returns true if it modified the default
|
||||||
func UpdateConnectionIfDefault(rootful bool, name, rootfulName string) error {
|
func UpdateConnectionIfDefault(rootful bool, name, rootfulName string) error {
|
||||||
return config.EditConnectionConfig(func(cfg *config.ConnectionsFile) error {
|
return config.EditConnectionConfig(func(cfg *config.ConnectionsFile) error {
|
||||||
if name == cfg.Connection.Default && rootful {
|
updateConnection(cfg, rootful, name, rootfulName)
|
||||||
cfg.Connection.Default = rootfulName
|
|
||||||
} else if rootfulName == cfg.Connection.Default && !rootful {
|
|
||||||
cfg.Connection.Default = name
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func RemoveConnections(names ...string) error {
|
func updateConnection(cfg *config.ConnectionsFile, rootful bool, name, rootfulName string) {
|
||||||
|
if name == cfg.Connection.Default && rootful {
|
||||||
|
cfg.Connection.Default = rootfulName
|
||||||
|
} else if rootfulName == cfg.Connection.Default && !rootful {
|
||||||
|
cfg.Connection.Default = name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func RemoveConnections(machines map[string]bool, names ...string) error {
|
||||||
var dest config.Destination
|
var dest config.Destination
|
||||||
var service string
|
var service string
|
||||||
|
|
||||||
if err := config.EditConnectionConfig(func(cfg *config.ConnectionsFile) error {
|
if err := config.EditConnectionConfig(func(cfg *config.ConnectionsFile) error {
|
||||||
err := setNewDefaultConnection(cfg, &dest, &service, names...)
|
err := setNewDefaultConnection(cfg, &dest, &service, names...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
rootful, ok := machines[service]
|
||||||
|
if dest.IsMachine && ok {
|
||||||
|
updateConnection(cfg, rootful, service, service+"-root")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ import (
|
|||||||
"github.com/containers/podman/v5/pkg/machine/env"
|
"github.com/containers/podman/v5/pkg/machine/env"
|
||||||
"github.com/containers/podman/v5/pkg/machine/ignition"
|
"github.com/containers/podman/v5/pkg/machine/ignition"
|
||||||
"github.com/containers/podman/v5/pkg/machine/lock"
|
"github.com/containers/podman/v5/pkg/machine/lock"
|
||||||
|
"github.com/containers/podman/v5/pkg/machine/provider"
|
||||||
"github.com/containers/podman/v5/pkg/machine/proxyenv"
|
"github.com/containers/podman/v5/pkg/machine/proxyenv"
|
||||||
"github.com/containers/podman/v5/pkg/machine/vmconfigs"
|
"github.com/containers/podman/v5/pkg/machine/vmconfigs"
|
||||||
"github.com/containers/podman/v5/utils"
|
"github.com/containers/podman/v5/utils"
|
||||||
@ -230,7 +231,11 @@ func Init(opts machineDefine.InitOptions, mp vmconfigs.VMProvider) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup := func() error {
|
cleanup := func() error {
|
||||||
return connection.RemoveConnections(mc.Name, mc.Name+"-root")
|
machines, err := provider.GetAllMachinesAndRootfulness()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return connection.RemoveConnections(machines, mc.Name, mc.Name+"-root")
|
||||||
}
|
}
|
||||||
callbackFuncs.Add(cleanup)
|
callbackFuncs.Add(cleanup)
|
||||||
|
|
||||||
@ -580,7 +585,12 @@ func Remove(mc *vmconfigs.MachineConfig, mp vmconfigs.VMProvider, dirs *machineD
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rmFiles, genericRm, err := mc.Remove(opts.SaveIgnition, opts.SaveImage)
|
machines, err := provider.GetAllMachinesAndRootfulness()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
rmFiles, genericRm, err := mc.Remove(machines, opts.SaveIgnition, opts.SaveImage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -655,12 +665,17 @@ func Reset(mps []vmconfigs.VMProvider, opts machine.ResetOptions) error {
|
|||||||
}
|
}
|
||||||
removeDirs = append(removeDirs, d)
|
removeDirs = append(removeDirs, d)
|
||||||
|
|
||||||
|
machines, err := provider.GetAllMachinesAndRootfulness()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
for _, mc := range mcs {
|
for _, mc := range mcs {
|
||||||
err := Stop(mc, p, d, true)
|
err := Stop(mc, p, d, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resetErrors = multierror.Append(resetErrors, err)
|
resetErrors = multierror.Append(resetErrors, err)
|
||||||
}
|
}
|
||||||
_, genericRm, err := mc.Remove(false, false)
|
_, genericRm, err := mc.Remove(machines, false, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resetErrors = multierror.Append(resetErrors, err)
|
resetErrors = multierror.Append(resetErrors, err)
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ func (mc *MachineConfig) updateLastBoot() error { //nolint:unused
|
|||||||
return mc.Write()
|
return mc.Write()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mc *MachineConfig) Remove(saveIgnition, saveImage bool) ([]string, func() error, error) {
|
func (mc *MachineConfig) Remove(machines map[string]bool, saveIgnition, saveImage bool) ([]string, func() error, error) {
|
||||||
ignitionFile, err := mc.IgnitionFile()
|
ignitionFile, err := mc.IgnitionFile()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@ -195,7 +195,7 @@ func (mc *MachineConfig) Remove(saveIgnition, saveImage bool) ([]string, func()
|
|||||||
|
|
||||||
mcRemove := func() error {
|
mcRemove := func() error {
|
||||||
var errs []error
|
var errs []error
|
||||||
if err := connection.RemoveConnections(mc.Name, mc.Name+"-root"); err != nil {
|
if err := connection.RemoveConnections(machines, mc.Name, mc.Name+"-root"); err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user