virtcontainers: introduce hypervisor_darwin

Fixes: #5995

Placeholder skeleton at this point - implementation will be added after
basic build refactoring lands.

Signed-off-by: Eric Ernst <eric_ernst@apple.com>
Signed-off-by: Danny Canter <danny@dcantah.dev>
This commit is contained in:
Eric Ernst 2022-05-12 13:39:33 -07:00 committed by Danny Canter
parent 31abe170fc
commit 9ec8a13985
3 changed files with 34 additions and 1 deletions

View File

@ -49,6 +49,9 @@ const (
// DragonballHypervisor is the Dragonball hypervisor.
DragonballHypervisor HypervisorType = "dragonball"
// VirtFrameworkHypervisor is the Darwin Virtualization.framework hypervisor
VirtframeworkHypervisor HypervisorType = "virtframework"
// MockHypervisor is a mock hypervisor for testing purposes
MockHypervisor HypervisorType = "mock"
@ -84,6 +87,8 @@ var (
)
// In some architectures the maximum number of vCPUs depends on the number of physical cores.
// TODO (dcantah): Find a suitable value for darwin/vfw. Seems perf degrades if > number of host
// cores.
var defaultMaxVCPUs = govmm.MaxVCPUs()
// agnostic list of kernel root parameters for NVDIMM
@ -177,6 +182,9 @@ func (hType *HypervisorType) Set(value string) error {
case "dragonball":
*hType = DragonballHypervisor
return nil
case "virtframework":
*hType = VirtframeworkHypervisor
return nil
case "mock":
*hType = MockHypervisor
return nil

View File

@ -0,0 +1,26 @@
// Copyright (c) 2023 Apple Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
package virtcontainers
import (
"fmt"
)
// NewHypervisor returns a hypervisor from a hypervisor type.
func NewHypervisor(hType HypervisorType) (Hypervisor, error) {
switch hType {
case VirtframeworkHypervisor:
return &virtFramework{}, nil
case MockHypervisor:
return &mockHypervisor{}, nil
default:
return nil, fmt.Errorf("Unknown hypervisor type %s", hType)
}
}
func availableGuestProtection() (guestProtection, error) {
return noneProtection, nil
}

View File

@ -27,7 +27,6 @@ func generateVMSocket(id string, vmStogarePath string) (interface{}, error) {
// NewHypervisor returns an hypervisor from a hypervisor type.
func NewHypervisor(hType HypervisorType) (Hypervisor, error) {
switch hType {
case QemuHypervisor:
return &qemu{}, nil