github.com/containers/podman/v4@v4.9.4/pkg/machine/provider/platform.go (about)

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