podman
1//go:build !windows && !darwin
2
3package provider
4
5import (
6"fmt"
7"os"
8
9"github.com/containers/common/pkg/config"
10"github.com/containers/podman/v5/pkg/machine/define"
11"github.com/containers/podman/v5/pkg/machine/qemu"
12"github.com/containers/podman/v5/pkg/machine/vmconfigs"
13"github.com/sirupsen/logrus"
14)
15
16func Get() (vmconfigs.VMProvider, error) {
17cfg, err := config.Default()
18if err != nil {
19return nil, err
20}
21provider := cfg.Machine.Provider
22if providerOverride, found := os.LookupEnv("CONTAINERS_MACHINE_PROVIDER"); found {
23provider = providerOverride
24}
25resolvedVMType, err := define.ParseVMType(provider, define.QemuVirt)
26if err != nil {
27return nil, err
28}
29
30logrus.Debugf("Using Podman machine with `%s` virtualization provider", resolvedVMType.String())
31switch resolvedVMType {
32case define.QemuVirt:
33return new(qemu.QEMUStubber), nil
34default:
35return nil, fmt.Errorf("unsupported virtualization provider: `%s`", resolvedVMType.String())
36}
37}
38