Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/machine/e2e/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ above.
## MacOS

Macs now support two different machine providers: `applehv` and `libkrun`. The
`applehv` provider is the default.
`libkrun` provider is the default.

Note: On macOS, an error will occur if the path length of `$TMPDIR` is longer
than 22 characters. Please set the appropriate path to `$TMPDIR`. Also, if
Expand All @@ -77,11 +77,11 @@ than 22 characters. Please set the appropriate path to `$TMPDIR`. Also, if

1. `brew install vfkit`
1. `make podman-remote`
1. `export CONTAINERS_MACHINE_PROVIDER="applehv"`
1. `make localmachine`

### [Libkrun](https://github.com/containers/libkrun)

1. `brew install krunkit`
1. `make podman-remote`
1. `export CONTAINERS_MACHINE_PROVIDER="libkrun"`
1. `make localmachine`
18 changes: 3 additions & 15 deletions pkg/machine/provider/platform_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package provider

import (
"bytes"
"errors"
"fmt"
"os"
"os/exec"
Expand All @@ -27,7 +26,7 @@ func Get() (vmconfigs.VMProvider, error) {
if providerOverride, found := os.LookupEnv("CONTAINERS_MACHINE_PROVIDER"); found {
provider = providerOverride
}
resolvedVMType, err := define.ParseVMType(provider, define.AppleHvVirt)
resolvedVMType, err := define.ParseVMType(provider, define.LibKrun)
if err != nil {
return nil, err
}
Expand All @@ -43,30 +42,19 @@ func GetByVMType(resolvedVMType define.VMType) (vmconfigs.VMProvider, error) {
case define.AppleHvVirt:
return new(applehv.AppleHVStubber), nil
case define.LibKrun:
if runtime.GOARCH == "amd64" {
return nil, errors.New("libkrun is not supported on Intel based machines. Please revert to the applehv provider")
}
return new(libkrun.LibKrunStubber), nil
default:
}
return nil, fmt.Errorf("unsupported virtualization provider: `%s`", resolvedVMType.String())
}

func GetAll() []vmconfigs.VMProvider {
configs := []vmconfigs.VMProvider{new(applehv.AppleHVStubber)}
if runtime.GOARCH == "arm64" {
configs = append(configs, new(libkrun.LibKrunStubber))
}
return configs
return []vmconfigs.VMProvider{new(libkrun.LibKrunStubber), new(applehv.AppleHVStubber)}
}

// SupportedProviders returns the providers that are supported on the host operating system
func SupportedProviders() []define.VMType {
supported := []define.VMType{define.AppleHvVirt}
if runtime.GOARCH == "arm64" {
return append(supported, define.LibKrun)
}
return supported
return []define.VMType{define.AppleHvVirt, define.LibKrun}
}

func IsInstalled(provider define.VMType) (bool, error) {
Expand Down
19 changes: 6 additions & 13 deletions pkg/machine/provider/platform_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,7 @@ import (
func TestSupportedProviders(t *testing.T) {
switch runtime.GOOS {
case "darwin":
if runtime.GOARCH == "arm64" {
assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
} else {
assert.Equal(t, []define.VMType{define.AppleHvVirt}, SupportedProviders())
}
assert.Equal(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
case "windows":
assert.Equal(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders())
case "linux":
Expand All @@ -28,8 +24,7 @@ func TestInstalledProviders(t *testing.T) {
assert.NoError(t, err)
switch runtime.GOOS {
case "darwin":
// TODO: need to verify if an arm64 machine reports {applehv, libkrun}
assert.Equal(t, []define.VMType{define.AppleHvVirt}, installed)
assert.Equal(t, []define.VMType{define.LibKrun, define.AppleHvVirt}, installed)
case "windows":
provider, err := Get()
assert.NoError(t, err)
Expand Down Expand Up @@ -60,9 +55,8 @@ func TestBadSupportedProviders(t *testing.T) {
switch runtime.GOOS {
case "darwin":
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
if runtime.GOARCH != "arm64" {
assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, SupportedProviders())
}
assert.NotEqual(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, SupportedProviders())
assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, SupportedProviders())
case "windows":
assert.NotEqual(t, []define.VMType{define.QemuVirt}, SupportedProviders())
case "linux":
Expand All @@ -76,9 +70,8 @@ func TestBadInstalledProviders(t *testing.T) {
switch runtime.GOOS {
case "darwin":
assert.NotEqual(t, []define.VMType{define.QemuVirt}, installed)
if runtime.GOARCH != "arm64" {
assert.NotEqual(t, []define.VMType{define.AppleHvVirt, define.LibKrun}, installed)
}
assert.NotEqual(t, []define.VMType{define.AppleHvVirt}, installed)
assert.NotEqual(t, []define.VMType{define.WSLVirt, define.HyperVVirt}, installed)
case "windows":
assert.NotContains(t, installed, define.QemuVirt)
case "linux":
Expand Down