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

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