Skip to content

Commit 1ac7665

Browse files
gbraadcfergeau
authored andcommitted
Use libhvee instead of the current PowerShell cmdlet implementation
This replaces the interaction of Hyper-V from our machine-drivers based driver as used in Minikube/minishift to the libhvee library as used by podman machine.
1 parent 9001885 commit 1ac7665

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+17809
-1048
lines changed

go.mod

+6-4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ require (
1313
github.com/cheggaaa/pb/v3 v3.1.5
1414
github.com/containers/gvisor-tap-vsock v0.7.4-0.20240320091526-a0238e52b61f
1515
github.com/containers/image/v5 v5.30.0
16+
github.com/containers/libhvee v0.7.1
1617
github.com/coreos/go-systemd/v22 v22.5.0
1718
github.com/crc-org/admin-helper v0.5.2
1819
github.com/crc-org/machine v0.0.0-20221028075518-f9b43442196b
@@ -76,6 +77,7 @@ require (
7677
github.com/areYouLazy/libhosty v1.1.0 // indirect
7778
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
7879
github.com/cloudflare/circl v1.3.7 // indirect
80+
github.com/containers/common v0.57.1-0.20240205132223-de5cb00e891c // indirect
7981
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect
8082
github.com/containers/ocicrypt v1.1.9 // indirect
8183
github.com/containers/storage v1.53.0 // indirect
@@ -96,7 +98,7 @@ require (
9698
github.com/fsnotify/fsnotify v1.7.0 // indirect
9799
github.com/go-jose/go-jose/v3 v3.0.3 // indirect
98100
github.com/go-logr/logr v1.4.1 // indirect
99-
github.com/go-ole/go-ole v1.2.6 // indirect
101+
github.com/go-ole/go-ole v1.3.0 // indirect
100102
github.com/go-openapi/analysis v0.21.4 // indirect
101103
github.com/go-openapi/errors v0.21.1 // indirect
102104
github.com/go-openapi/jsonpointer v0.19.6 // indirect
@@ -118,7 +120,7 @@ require (
118120
github.com/google/go-containerregistry v0.19.0 // indirect
119121
github.com/google/gofuzz v1.2.0 // indirect
120122
github.com/google/gopacket v1.1.19 // indirect
121-
github.com/google/pprof v0.0.0-20230207041349-798e818bf904 // indirect
123+
github.com/google/pprof v0.0.0-20230323073829-e72429f035bd // indirect
122124
github.com/google/uuid v1.6.0 // indirect
123125
github.com/gorilla/mux v1.8.1 // indirect
124126
github.com/hashicorp/errwrap v1.1.0 // indirect
@@ -161,7 +163,7 @@ require (
161163
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
162164
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
163165
github.com/proglottis/gpgme v0.1.3 // indirect
164-
github.com/rivo/uniseg v0.4.4 // indirect
166+
github.com/rivo/uniseg v0.4.7 // indirect
165167
github.com/sagikazarmark/locafero v0.4.0 // indirect
166168
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
167169
github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect
@@ -206,5 +208,5 @@ require (
206208
k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect
207209
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
208210
sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect
209-
sigs.k8s.io/yaml v1.3.0 // indirect
211+
sigs.k8s.io/yaml v1.4.0 // indirect
210212
)

go.sum

+14-8
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,14 @@ github.com/cheggaaa/pb/v3 v3.1.5/go.mod h1:CrxkeghYTXi1lQBEI7jSn+3svI3cuc19haAj6
4343
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
4444
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
4545
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
46+
github.com/containers/common v0.57.1-0.20240205132223-de5cb00e891c h1:Xzo9t4eIalkeilcmYTz0YEgL7hMrGQ12GK6UlSHrEsU=
47+
github.com/containers/common v0.57.1-0.20240205132223-de5cb00e891c/go.mod h1:s1gEyucR3ryIex1aDMo1KzbfpvRl0CaGER6s5jqXRkI=
4648
github.com/containers/gvisor-tap-vsock v0.7.4-0.20240320091526-a0238e52b61f h1:NOq4UwN3M4rvN44CPznCqQlOvim7Ja1RZ082ORAJjVQ=
4749
github.com/containers/gvisor-tap-vsock v0.7.4-0.20240320091526-a0238e52b61f/go.mod h1:hZrvqbYhTIUQCREov+M8u7sMhzGbB6umiDuVpnwtJcI=
4850
github.com/containers/image/v5 v5.30.0 h1:CmHeSwI6W2kTRWnUsxATDFY5TEX4b58gPkaQcEyrLIA=
4951
github.com/containers/image/v5 v5.30.0/go.mod h1:gSD8MVOyqBspc0ynLsuiMR9qmt8UQ4jpVImjmK0uXfk=
52+
github.com/containers/libhvee v0.7.1 h1:dWGF5GLq9DZvXo3P8aDp3cNieL5eCaSell4UmeA/jY4=
53+
github.com/containers/libhvee v0.7.1/go.mod h1:fRKB3AyIqHMvq6xaeYhTpckM2cdoq0oecolyoiuLP7M=
5054
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA=
5155
github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
5256
github.com/containers/ocicrypt v1.1.9 h1:2Csfba4jse85Raxk5HIyEk8OwZNjRvfkhEGijOjIdEM=
@@ -117,8 +121,9 @@ github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQr
117121
github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
118122
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
119123
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
120-
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
121124
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
125+
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
126+
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
122127
github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY=
123128
github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc=
124129
github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo=
@@ -221,8 +226,8 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
221226
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
222227
github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8=
223228
github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo=
224-
github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U=
225-
github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg=
229+
github.com/google/pprof v0.0.0-20230323073829-e72429f035bd h1:r8yyd+DJDmsUhGrRBxH5Pj7KeFK5l+Y3FsgT8keqKtk=
230+
github.com/google/pprof v0.0.0-20230323073829-e72429f035bd/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk=
226231
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
227232
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
228233
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
@@ -418,13 +423,13 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa
418423
github.com/r3labs/sse/v2 v2.10.0 h1:hFEkLLFY4LDifoHdiCN/LlGBAdVJYsANaLqNYa1l/v0=
419424
github.com/r3labs/sse/v2 v2.10.0/go.mod h1:Igau6Whc+F17QUgML1fYe1VPZzTV6EMCnYktEmkNJ7I=
420425
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
421-
github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis=
422-
github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
426+
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
427+
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
423428
github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
424429
github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
425430
github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
426431
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
427-
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
432+
github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
428433
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
429434
github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ=
430435
github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4=
@@ -625,6 +630,7 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
625630
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
626631
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
627632
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
633+
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
628634
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
629635
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
630636
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -730,5 +736,5 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMm
730736
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
731737
sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk=
732738
sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
733-
sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
734-
sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
739+
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
740+
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=

pkg/crc/machine/driver_windows.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,28 @@ import (
55
"errors"
66

77
"github.com/crc-org/crc/v2/pkg/crc/machine/config"
8-
"github.com/crc-org/crc/v2/pkg/crc/machine/hyperv"
9-
machineHyperv "github.com/crc-org/crc/v2/pkg/drivers/hyperv"
8+
"github.com/crc-org/crc/v2/pkg/crc/machine/libhvee"
9+
machineLibhvee "github.com/crc-org/crc/v2/pkg/drivers/libhvee"
1010
"github.com/crc-org/crc/v2/pkg/libmachine"
1111
"github.com/crc-org/crc/v2/pkg/libmachine/host"
1212
)
1313

1414
func newHost(api libmachine.API, machineConfig config.MachineConfig) (*host.Host, error) {
15-
json, err := json.Marshal(hyperv.CreateHost(machineConfig))
15+
json, err := json.Marshal(libhvee.CreateHost(machineConfig))
1616
if err != nil {
1717
return nil, errors.New("Failed to marshal driver options")
1818
}
1919
return api.NewHost("hyperv", "", json)
2020
}
2121

22-
func loadDriverConfig(host *host.Host) (*machineHyperv.Driver, error) {
23-
var hypervDriver machineHyperv.Driver
24-
err := json.Unmarshal(host.RawDriver, &hypervDriver)
22+
func loadDriverConfig(host *host.Host) (*machineLibhvee.Driver, error) {
23+
var libhveeDriver machineLibhvee.Driver
24+
err := json.Unmarshal(host.RawDriver, &libhveeDriver)
2525

26-
return &hypervDriver, err
26+
return &libhveeDriver, err
2727
}
2828

29-
func updateDriverConfig(host *host.Host, driver *machineHyperv.Driver) error {
29+
func updateDriverConfig(host *host.Host, driver *machineLibhvee.Driver) error {
3030
driverData, err := json.Marshal(driver)
3131
if err != nil {
3232
return err
@@ -38,7 +38,7 @@ func updateKernelArgs(_ *virtualMachine) error {
3838
return nil
3939
}
4040

41-
func updateDriverStruct(host *host.Host, driver *machineHyperv.Driver) error {
41+
func updateDriverStruct(host *host.Host, driver *machineLibhvee.Driver) error {
4242
host.Driver = driver
4343
return nil
4444
}

pkg/crc/machine/hyperv/driver_windows.go pkg/crc/machine/libhvee/driver_windows.go

+7-9
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
package hyperv
1+
package libhvee
22

33
import (
44
"path/filepath"
55
"strings"
66

77
"github.com/crc-org/crc/v2/pkg/crc/constants"
88
"github.com/crc-org/crc/v2/pkg/crc/machine/config"
9-
"github.com/crc-org/crc/v2/pkg/drivers/hyperv"
9+
"github.com/crc-org/crc/v2/pkg/drivers/libhvee"
1010
"github.com/crc-org/machine/libmachine/drivers"
1111
)
1212

13-
func CreateHost(machineConfig config.MachineConfig) *hyperv.Driver {
14-
hypervDriver := hyperv.NewDriver(machineConfig.Name, constants.MachineBaseDir)
13+
func CreateHost(machineConfig config.MachineConfig) *libhvee.Driver {
14+
libhveeDriver := libhvee.NewDriver(machineConfig.Name, constants.MachineBaseDir)
1515

16-
config.InitVMDriverFromMachineConfig(machineConfig, hypervDriver.VMDriver)
16+
config.InitVMDriverFromMachineConfig(machineConfig, libhveeDriver.VMDriver)
1717

18-
hypervDriver.DisableDynamicMemory = true
19-
20-
hypervDriver.SharedDirs = configureShareDirs(machineConfig)
21-
return hypervDriver
18+
libhveeDriver.SharedDirs = configureShareDirs(machineConfig)
19+
return libhveeDriver
2220
}
2321

2422
// converts a path like c:\users\crc to /mnt/c/users/crc

pkg/crc/machine/hyperv/driver_windows_test.go pkg/crc/machine/libhvee/driver_windows_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package hyperv
1+
package libhvee
22

33
import (
44
"testing"

0 commit comments

Comments
 (0)