From 5aedb8b38bcf23b72adedc6bbfb085fc6ccf9780 Mon Sep 17 00:00:00 2001 From: Bryce Kahle Date: Thu, 23 Oct 2025 16:05:19 -0700 Subject: [PATCH] kmt: only create varstore if needed --- scenarios/aws/microVMs/microvms/domain.go | 5 +---- scenarios/aws/microVMs/microvms/libvirt.go | 2 +- scenarios/aws/microVMs/vmconfig/config.go | 9 +++++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/scenarios/aws/microVMs/microvms/domain.go b/scenarios/aws/microVMs/microvms/domain.go index 95295509d..7ab1d2771 100644 --- a/scenarios/aws/microVMs/microvms/domain.go +++ b/scenarios/aws/microVMs/microvms/domain.go @@ -142,7 +142,6 @@ func newDomainConfiguration(e config.Env, set *vmconfig.VMSet, vcpu, memory, gdb efi := filepath.Join(GetWorkingDirectory(set.Arch), "efi.fd") // OS-dependent settings - var hypervisor string var commandLine pulumi.StringInput = pulumi.String("") var hostOS string if set.Arch == LocalVMSet { @@ -159,10 +158,8 @@ func newDomainConfiguration(e config.Env, set *vmconfig.VMSet, vcpu, memory, gdb var driver string if hostOS == "linux" { - hypervisor = "kvm" driver = "" } else if hostOS == "darwin" { - hypervisor = "hvf" // We have to use QEMU network devices because libvirt does not support the macOS // network devices. netID := libvirtResourceName(domainName, "netdev") @@ -192,7 +189,7 @@ func newDomainConfiguration(e config.Env, set *vmconfig.VMSet, vcpu, memory, gdb resources.Efi: pulumi.String(efi), resources.VCPU: pulumi.Sprintf("%d", vcpu), resources.CPUTune: pulumi.String(cputune), - resources.Hypervisor: pulumi.String(hypervisor), + resources.Hypervisor: pulumi.String(set.Hypervisor()), resources.CommandLine: commandLine, resources.DiskDriver: pulumi.String(driver), }, diff --git a/scenarios/aws/microVMs/microvms/libvirt.go b/scenarios/aws/microVMs/microvms/libvirt.go index 17715fa8b..8114265a4 100644 --- a/scenarios/aws/microVMs/microvms/libvirt.go +++ b/scenarios/aws/microVMs/microvms/libvirt.go @@ -158,7 +158,7 @@ func (vm *VMCollection) SetupCollectionDomainConfigurations(depends []pulumi.Res } // Setup individual Nvram disk for arm64 distro images - if resources.GetLocalArchRecipe(set.Recipe) == vmconfig.RecipeDistroARM64 { + if set.Hypervisor() != "hvf" && resources.GetLocalArchRecipe(set.Recipe) == vmconfig.RecipeDistroARM64 { for _, domain := range domains { varstorePath := filepath.Join(GetWorkingDirectory(domain.vmset.Arch), fmt.Sprintf("varstore.%s", domain.DomainName)) varstoreArgs := command.Args{ diff --git a/scenarios/aws/microVMs/vmconfig/config.go b/scenarios/aws/microVMs/vmconfig/config.go index c37e58afe..fafb7a2f1 100644 --- a/scenarios/aws/microVMs/vmconfig/config.go +++ b/scenarios/aws/microVMs/vmconfig/config.go @@ -1,5 +1,7 @@ package vmconfig +import "runtime" + type PoolType string type VMSetID string @@ -57,6 +59,13 @@ type VMSet struct { VMHost Host `json:"host,omitempty"` } +func (set VMSet) Hypervisor() string { + if set.Arch == "local" && runtime.GOOS == "darwin" { + return "hvf" + } + return "kvm" +} + type Config struct { Workdir string `json:"workdir"` VMSets []VMSet `json:"vmsets"`