podman
1package machine
2
3import (
4"errors"
5"fmt"
6"io/fs"
7"strconv"
8
9"github.com/containers/podman/v5/pkg/machine/define"
10)
11
12// CleanupGVProxy reads the --pid-file for gvproxy attempts to stop it
13func CleanupGVProxy(f define.VMFile) error {
14gvPid, err := f.Read()
15if err != nil {
16// The file will also be removed by gvproxy when it exits so
17// we need to account for the race and can just ignore it here.
18if errors.Is(err, fs.ErrNotExist) {
19return nil
20}
21return fmt.Errorf("unable to read gvproxy pid file: %v", err)
22}
23proxyPid, err := strconv.Atoi(string(gvPid))
24if err != nil {
25return fmt.Errorf("unable to convert pid to integer: %v", err)
26}
27if err := waitOnProcess(proxyPid); err != nil {
28return err
29}
30return f.Delete()
31}
32