Merge pull request #21848 from baude/machinestartcleanup

Clean up gvproxy if machine start fails
This commit is contained in:
openshift-merge-bot[bot]
2024-02-28 12:08:21 +00:00
committed by GitHub
4 changed files with 23 additions and 7 deletions

View File

@ -55,7 +55,7 @@ func (c *CleanupCallback) clean() {
} }
} }
func InitCleanup() CleanupCallback { func CleanUp() CleanupCallback {
return CleanupCallback{ return CleanupCallback{
Funcs: []func() error{}, Funcs: []func() error{},
} }

View File

@ -45,7 +45,7 @@ func (h HyperVStubber) CreateVM(opts define.CreateVMOpts, mc *vmconfigs.MachineC
var ( var (
err error err error
) )
callbackFuncs := machine.InitCleanup() callbackFuncs := machine.CleanUp()
defer callbackFuncs.CleanIfErr(&err) defer callbackFuncs.CleanIfErr(&err)
go callbackFuncs.CleanOnSignal() go callbackFuncs.CleanOnSignal()
@ -182,7 +182,7 @@ func (h HyperVStubber) StartVM(mc *vmconfigs.MachineConfig) (func() error, func(
return nil, nil, err return nil, nil, err
} }
callbackFuncs := machine.InitCleanup() callbackFuncs := machine.CleanUp()
defer callbackFuncs.CleanIfErr(&err) defer callbackFuncs.CleanIfErr(&err)
go callbackFuncs.CleanOnSignal() go callbackFuncs.CleanOnSignal()
@ -384,7 +384,7 @@ func (h HyperVStubber) PostStartNetworking(mc *vmconfigs.MachineConfig, noInfo b
err error err error
executable string executable string
) )
callbackFuncs := machine.InitCleanup() callbackFuncs := machine.CleanUp()
defer callbackFuncs.CleanIfErr(&err) defer callbackFuncs.CleanIfErr(&err)
go callbackFuncs.CleanOnSignal() go callbackFuncs.CleanOnSignal()

View File

@ -70,7 +70,7 @@ func Init(opts machineDefine.InitOptions, mp vmconfigs.VMProvider) (*vmconfigs.M
imagePath *machineDefine.VMFile imagePath *machineDefine.VMFile
) )
callbackFuncs := machine.InitCleanup() callbackFuncs := machine.CleanUp()
defer callbackFuncs.CleanIfErr(&err) defer callbackFuncs.CleanIfErr(&err)
go callbackFuncs.CleanOnSignal() go callbackFuncs.CleanOnSignal()
@ -350,15 +350,31 @@ func Stop(mc *vmconfigs.MachineConfig, mp vmconfigs.VMProvider, dirs *machineDef
return nil return nil
} }
func Start(mc *vmconfigs.MachineConfig, mp vmconfigs.VMProvider, _ *machineDefine.MachineDirs, opts machine.StartOptions) error { func Start(mc *vmconfigs.MachineConfig, mp vmconfigs.VMProvider, dirs *machineDefine.MachineDirs, opts machine.StartOptions) error {
defaultBackoff := 500 * time.Millisecond defaultBackoff := 500 * time.Millisecond
maxBackoffs := 6 maxBackoffs := 6
gvproxyPidFile, err := dirs.RuntimeDir.AppendToNewVMFile("gvproxy.pid", nil)
if err != nil {
return err
}
// start gvproxy and set up the API socket forwarding // start gvproxy and set up the API socket forwarding
forwardSocketPath, forwardingState, err := startNetworking(mc, mp) forwardSocketPath, forwardingState, err := startNetworking(mc, mp)
if err != nil { if err != nil {
return err return err
} }
callBackFuncs := machine.CleanUp()
defer callBackFuncs.CleanIfErr(&err)
go callBackFuncs.CleanOnSignal()
// Clean up gvproxy if start fails
cleanGV := func() error {
return machine.CleanupGVProxy(*gvproxyPidFile)
}
callBackFuncs.Add(cleanGV)
// if there are generic things that need to be done, a preStart function could be added here // if there are generic things that need to be done, a preStart function could be added here
// should it be extensive // should it be extensive

View File

@ -31,7 +31,7 @@ func (w WSLStubber) CreateVM(opts define.CreateVMOpts, mc *vmconfigs.MachineConf
err error err error
) )
// cleanup half-baked files if init fails at any point // cleanup half-baked files if init fails at any point
callbackFuncs := machine.InitCleanup() callbackFuncs := machine.CleanUp()
defer callbackFuncs.CleanIfErr(&err) defer callbackFuncs.CleanIfErr(&err)
go callbackFuncs.CleanOnSignal() go callbackFuncs.CleanOnSignal()
mc.WSLHypervisor = new(vmconfigs.WSLConfig) mc.WSLHypervisor = new(vmconfigs.WSLConfig)