diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index b6a91dd..044fb7d 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -14,9 +14,9 @@ jobs: test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: - go-version: '1.23.1' + go-version: '1.26.x' - name: Run tests run: go test ./... diff --git a/Makefile b/Makefile index 19e33e0..953271a 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ fmt-%: generate-% tidy-% vet-% mocks-% cd $(subst :,/,$*); go fmt ./... tidy-%: - cd $(subst :,/,$*); go mod tidy -compat=1.19 + cd $(subst :,/,$*); go mod tidy vet-%: # "git:libgit2" is the wildcard that comes after "vet-" @@ -43,7 +43,7 @@ generate-%: controller-gen ## Generate schema CONTROLLER_GEN = $(GOBIN)/controller-gen .PHONY: controller-gen controller-gen: ## Download controller-gen locally if necessary. - $(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.10.0) + $(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@v0.23.0) # go-install-tool will 'go install' any package $2 and install it to $1. PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) diff --git a/client/flintlock.go b/client/flintlock.go index ea9bc87..7db3919 100644 --- a/client/flintlock.go +++ b/client/flintlock.go @@ -38,3 +38,7 @@ func (fc *flintlockClient) ListMicroVMs(ctx context.Context, in *flintlockv1.Lis func (fc *flintlockClient) ListMicroVMsStream(ctx context.Context, in *flintlockv1.ListMicroVMsRequest, opts ...grpc.CallOption) (flintlockv1.MicroVM_ListMicroVMsStreamClient, error) { //nolint:lll // it would make it less readable return fc.c.ListMicroVMsStream(ctx, in, opts...) } + +func (fc *flintlockClient) ServerInfo(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*flintlockv1.ServerInfoResponse, error) { //nolint:lll // it would make it less readable + return fc.c.ServerInfo(ctx, in, opts...) +} diff --git a/client/go.mod b/client/go.mod index bdd7123..c16801a 100644 --- a/client/go.mod +++ b/client/go.mod @@ -1,18 +1,18 @@ module github.com/liquidmetal-dev/controller-pkg/client -go 1.19 +go 1.26.0 require ( - github.com/liquidmetal-dev/flintlock/api v0.0.0-20250205095343-755c4154ea88 - github.com/liquidmetal-dev/flintlock/client v0.0.0-20250205095343-755c4154ea88 - google.golang.org/grpc v1.64.1 - google.golang.org/protobuf v1.34.1 + github.com/liquidmetal-dev/flintlock/api v0.0.0-20261003123307-ae2417facf95 + github.com/liquidmetal-dev/flintlock/client v0.0.0-20261003123307-ae2417facf95 + google.golang.org/grpc v1.84.0 + google.golang.org/protobuf v1.36.12 ) require ( - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.31.0 // indirect + golang.org/x/net v0.59.0 // indirect + golang.org/x/sys v0.48.0 // indirect + golang.org/x/text v0.42.0 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect ) diff --git a/client/go.sum b/client/go.sum index 9a2b1c6..54860dc 100644 --- a/client/go.sum +++ b/client/go.sum @@ -1,19 +1,24 @@ -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/liquidmetal-dev/flintlock/api v0.0.0-20250205095343-755c4154ea88 h1:ABGBkcmr2xvXYNC59wuUSwOcQ9DeWyRM4rTftWaJ1vA= -github.com/liquidmetal-dev/flintlock/api v0.0.0-20250205095343-755c4154ea88/go.mod h1:aocJfIjHYMXrTvuISK75KQz3SEm1Xd+4BGIZike1jhI= -github.com/liquidmetal-dev/flintlock/client v0.0.0-20250205095343-755c4154ea88 h1:PK5YcT/ODWAKC4iO6iXVn+BJwXtiRLBeBUSKDPMyh1A= -github.com/liquidmetal-dev/flintlock/client v0.0.0-20250205095343-755c4154ea88/go.mod h1:NChE0jzlpZA1395punDaV+5hJbVeVhoCcPHriNC0SUQ= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.31.0 h1:Bd7KaOxzULLxtZ/K5s1aLbWhR0+5RToO65TXHsf3bqQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.31.0/go.mod h1:nN7ts3dFXKtCZWc//yfkpcQNKJABg16/uDVAZpLDalo= +github.com/liquidmetal-dev/flintlock/api v0.0.0-20261003123307-ae2417facf95 h1:NcoA5II6DdKfU0LnbVCjTgz6XmUa//hsdQvZHZYyWtc= +github.com/liquidmetal-dev/flintlock/api v0.0.0-20261003123307-ae2417facf95/go.mod h1:+MX1HsjB9LnSYysNwANCYa0bTnx2tuCzycyqa8XUG9A= +github.com/liquidmetal-dev/flintlock/client v0.0.0-20261003123307-ae2417facf95 h1:N3CfUDBhjSkym3UohuO4rQAhkKv72Mao3kMF1LFQQEY= +github.com/liquidmetal-dev/flintlock/client v0.0.0-20261003123307-ae2417facf95/go.mod h1:5yLcwzaJr9XVbDoq3KPyu8H0XvF6hqnKVPQ4hyJpBKw= +golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues= +golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= +golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI= +golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= +google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/services/microvm/convert.go b/services/microvm/convert.go index 57ef33e..680fbc8 100644 --- a/services/microvm/convert.go +++ b/services/microvm/convert.go @@ -23,6 +23,8 @@ func convertToFlintlockAPI(mvmScope Scope) *flintlocktypes.MicroVMSpec { withAdditionalVolumes(mvmSpec.AdditionalVolumes), withKernel(mvmSpec.Kernel, mvmSpec.KernelCmdLine), withRootVolume(mvmSpec.RootVolume), + withGuestAgent(mvmSpec.AllowGuestAgent), + withCPUConfig(mvmSpec.CPUConfig), ) return apiVM @@ -116,7 +118,7 @@ func withAdditionalVolumes(volumes []types.Volume) specOption { addVol := &flintlocktypes.Volume{ Id: volume.ID, IsReadOnly: volume.ReadOnly, - Source: &flintlocktypes.VolumeSource{}, + Source: &flintlocktypes.VolumeSource{}, } if volume.Image != "" { addVol.Source.ContainerSource = &volume.Image @@ -155,3 +157,22 @@ func withRootVolume(rv types.Volume) specOption { } } } + +func withGuestAgent(allow bool) specOption { + return func(s *flintlocktypes.MicroVMSpec) { + s.AllowGuestAgent = allow + } +} + +func withCPUConfig(cfg *types.CPUConfig) specOption { + return func(s *flintlocktypes.MicroVMSpec) { + if cfg == nil { + return + } + + s.CpuConfig = &flintlocktypes.CPUConfig{ + FeaturesToEnable: cfg.FeaturesToEnable, + KvmCapabilitiesToDisable: cfg.KVMCapabilitiesToDisable, + } + } +} diff --git a/services/microvm/convert_test.go b/services/microvm/convert_test.go index 1e07480..b79aed3 100644 --- a/services/microvm/convert_test.go +++ b/services/microvm/convert_test.go @@ -150,8 +150,8 @@ func Test_convertToFlintlockAPI(t *testing.T) { input: microvm.VMSpec{ AdditionalVolumes: []microvm.Volume{ { - ID: strVal1, - ReadOnly: false, + ID: strVal1, + ReadOnly: false, VirtioFSPath: strVal2, }, { @@ -220,6 +220,39 @@ func Test_convertToFlintlockAPI(t *testing.T) { g.Expect(converted.RootVolume.IsReadOnly).To(BeFalse()) }, }, + { + name: "withGuestAgent, default is false", + input: microvm.VMSpec{}, + expected: func(g *WithT, converted *flintlocktypes.MicroVMSpec) { + g.Expect(converted.AllowGuestAgent).To(BeFalse()) + }, + }, + { + name: "withGuestAgent", + input: microvm.VMSpec{AllowGuestAgent: true}, + expected: func(g *WithT, converted *flintlocktypes.MicroVMSpec) { + g.Expect(converted.AllowGuestAgent).To(BeTrue()) + }, + }, + { + name: "withCPUConfig, not set", + input: microvm.VMSpec{}, + expected: func(g *WithT, converted *flintlocktypes.MicroVMSpec) { + g.Expect(converted.CpuConfig).To(BeNil()) + }, + }, + { + name: "withCPUConfig", + input: microvm.VMSpec{CPUConfig: µvm.CPUConfig{ + FeaturesToEnable: []string{strVal1, strVal2}, + KVMCapabilitiesToDisable: []string{strVal3}, + }}, + expected: func(g *WithT, converted *flintlocktypes.MicroVMSpec) { + g.Expect(converted.CpuConfig).ToNot(BeNil()) + g.Expect(converted.CpuConfig.FeaturesToEnable).To(Equal([]string{strVal1, strVal2})) + g.Expect(converted.CpuConfig.KvmCapabilitiesToDisable).To(Equal([]string{strVal3})) + }, + }, } for _, tc := range tt { diff --git a/services/microvm/go.mod b/services/microvm/go.mod index 6f8ab87..5dcf194 100644 --- a/services/microvm/go.mod +++ b/services/microvm/go.mod @@ -1,29 +1,27 @@ module github.com/liquidmetal-dev/controller-pkg/services/microvm -go 1.23 +go 1.26.0 require ( - github.com/liquidmetal-dev/controller-pkg/client v0.0.0-20250206153520-fa7b57540c18 - github.com/liquidmetal-dev/controller-pkg/types/microvm v0.0.0-20250207115528-f599d8cc9a1d - github.com/liquidmetal-dev/flintlock/api v0.0.0-20250205095343-755c4154ea88 - github.com/liquidmetal-dev/flintlock/client v0.0.0-20250205095343-755c4154ea88 - github.com/onsi/gomega v1.24.1 + github.com/liquidmetal-dev/controller-pkg/client v0.0.0-20261026124125-13bd81e2ca09 + github.com/liquidmetal-dev/controller-pkg/types/microvm v0.0.0-20261026124125-13bd81e2ca09 + github.com/liquidmetal-dev/flintlock/api v0.0.0-20261003123307-ae2417facf95 + github.com/liquidmetal-dev/flintlock/client v0.0.0-20261003123307-ae2417facf95 + github.com/onsi/gomega v1.44.0 github.com/yitsushi/macpot v1.0.2 - google.golang.org/protobuf v1.34.1 + google.golang.org/protobuf v1.36.12 gopkg.in/yaml.v2 v2.4.0 k8s.io/utils v0.0.0-20221108210102-8e77b1f39fe2 ) require ( - github.com/google/go-cmp v0.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.31.0 // indirect github.com/stretchr/testify v1.8.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect + golang.org/x/net v0.59.0 // indirect + golang.org/x/sys v0.48.0 // indirect + golang.org/x/text v0.42.0 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.64.1 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + google.golang.org/grpc v1.84.0 // indirect ) diff --git a/services/microvm/go.sum b/services/microvm/go.sum index b130c70..e506bd1 100644 --- a/services/microvm/go.sum +++ b/services/microvm/go.sum @@ -1,33 +1,24 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/liquidmetal-dev/controller-pkg/client v0.0.0-20250206153520-fa7b57540c18 h1:dPlUm7HTauzVpKMSO2+hvfftIv3gRfirGNWncEeTAFs= -github.com/liquidmetal-dev/controller-pkg/client v0.0.0-20250206153520-fa7b57540c18/go.mod h1:oCeJDvq7d5RaW/uPc08KQRHbCQdBbkuE9w/XXhMnXDM= -github.com/liquidmetal-dev/controller-pkg/types/microvm v0.0.0-20250207115528-f599d8cc9a1d h1:cSeIHGazh7eq5LIUK2mwNQWbXo5muMhmSCP5JcZAO7k= -github.com/liquidmetal-dev/controller-pkg/types/microvm v0.0.0-20250207115528-f599d8cc9a1d/go.mod h1:WtVMaW23bVAY5G5Gv2h4PKMQ6+MEyAX/runKS1uEgEQ= -github.com/liquidmetal-dev/flintlock/api v0.0.0-20250205095343-755c4154ea88 h1:ABGBkcmr2xvXYNC59wuUSwOcQ9DeWyRM4rTftWaJ1vA= -github.com/liquidmetal-dev/flintlock/api v0.0.0-20250205095343-755c4154ea88/go.mod h1:aocJfIjHYMXrTvuISK75KQz3SEm1Xd+4BGIZike1jhI= -github.com/liquidmetal-dev/flintlock/client v0.0.0-20250205095343-755c4154ea88 h1:PK5YcT/ODWAKC4iO6iXVn+BJwXtiRLBeBUSKDPMyh1A= -github.com/liquidmetal-dev/flintlock/client v0.0.0-20250205095343-755c4154ea88/go.mod h1:NChE0jzlpZA1395punDaV+5hJbVeVhoCcPHriNC0SUQ= -github.com/onsi/ginkgo/v2 v2.5.0 h1:TRtrvv2vdQqzkwrQ1ke6vtXf7IK34RBUJafIy1wMwls= -github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= -github.com/onsi/gomega v1.24.1 h1:KORJXNNTzJXzu4ScJWssJfJMnJ+2QJqhoQSRwNlze9E= -github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.31.0 h1:Bd7KaOxzULLxtZ/K5s1aLbWhR0+5RToO65TXHsf3bqQ= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.31.0/go.mod h1:nN7ts3dFXKtCZWc//yfkpcQNKJABg16/uDVAZpLDalo= +github.com/liquidmetal-dev/controller-pkg/client v0.0.0-20261026124125-13bd81e2ca09 h1:HKZZJeSlVlGefju92d5MQXhlAR/55sYTYt0BlEWwZj8= +github.com/liquidmetal-dev/controller-pkg/client v0.0.0-20261026124125-13bd81e2ca09/go.mod h1:7Blh7X/ks1uy9r5nm0UbAQf5KNl7P0FK64fZcOijqWI= +github.com/liquidmetal-dev/controller-pkg/types/microvm v0.0.0-20261026124125-13bd81e2ca09 h1:Lwqtv1JWAusQqci0eiI+DAmngVPbINm5zmQND4nNuFQ= +github.com/liquidmetal-dev/controller-pkg/types/microvm v0.0.0-20261026124125-13bd81e2ca09/go.mod h1:WtVMaW23bVAY5G5Gv2h4PKMQ6+MEyAX/runKS1uEgEQ= +github.com/liquidmetal-dev/flintlock/api v0.0.0-20261003123307-ae2417facf95 h1:NcoA5II6DdKfU0LnbVCjTgz6XmUa//hsdQvZHZYyWtc= +github.com/liquidmetal-dev/flintlock/api v0.0.0-20261003123307-ae2417facf95/go.mod h1:+MX1HsjB9LnSYysNwANCYa0bTnx2tuCzycyqa8XUG9A= +github.com/liquidmetal-dev/flintlock/client v0.0.0-20261003123307-ae2417facf95 h1:N3CfUDBhjSkym3UohuO4rQAhkKv72Mao3kMF1LFQQEY= +github.com/liquidmetal-dev/flintlock/client v0.0.0-20261003123307-ae2417facf95/go.mod h1:5yLcwzaJr9XVbDoq3KPyu8H0XvF6hqnKVPQ4hyJpBKw= +github.com/onsi/gomega v1.44.0 h1:eAiGl3Pw5jz5GQdDff0BcxYpAX1JxW8xD7mFUuwNfZQ= +github.com/onsi/gomega v1.44.0/go.mod h1:e/C2HwaZ1DhvjzXXuFhcR7hY7Sh9pl7MmoWKEjzwcdA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -35,21 +26,24 @@ github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PK github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/yitsushi/macpot v1.0.2 h1:LSiBfVKRhzrvUTBDO2GZYAQvS+gG9wdzPaaiNeR29KM= github.com/yitsushi/macpot v1.0.2/go.mod h1:7KBzokvUNbcsR1VcmKwmYRWB2FyAWcIll4L93b2A8q4= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= +golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues= +golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= +golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo= +golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og= +golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI= +golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= -google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/grpc v1.84.0 h1:soMyaPJ8pAak5PIQ0DGBUir0XRo2fRoMqhNWMLlLxO0= +google.golang.org/grpc v1.84.0/go.mod h1:ljCht0DrxQrXBDRTZp52Qxh3Ffk8CdYm2sj4O2QN2C0= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/types/microvm/microvm.go b/types/microvm/microvm.go index 88e8e64..045e9b7 100644 --- a/types/microvm/microvm.go +++ b/types/microvm/microvm.go @@ -65,6 +65,29 @@ type VMSpec struct { // Labels allow you to include extra data on the Microvm // +optional Labels map[string]string `json:"labels"` + + // AllowGuestAgent, when true, attaches a vsock device to the microvm so the in-guest + // guest-agent can communicate with the host. + // +optional + AllowGuestAgent bool `json:"allowGuestAgent,omitempty"` + + // CPUConfig allows customising the CPU features presented to the guest. + // Support and semantics vary by provider. + // +optional + CPUConfig *CPUConfig `json:"cpuConfig,omitempty"` +} + +// CPUConfig represents CPU feature configuration for a microvm. +type CPUConfig struct { + // FeaturesToEnable is a list of optional CPU features to enable. Accepted values are + // provider specific (e.g. named features such as "amx" for Cloud Hypervisor, or numeric + // KVM capability IDs for Firecracker). The "!" prefix is not allowed here. + // +optional + FeaturesToEnable []string `json:"featuresToEnable,omitempty"` + // KVMCapabilitiesToDisable is a list of KVM capability IDs to disable. Only supported by + // providers that declare the KVMCapabilitiesDisable capability (currently Firecracker only). + // +optional + KVMCapabilitiesToDisable []string `json:"kvmCapabilitiesToDisable,omitempty"` } // ContainerFileSource represents a file coming from a container image. diff --git a/types/microvm/zz_generated.deepcopy.go b/types/microvm/zz_generated.deepcopy.go index 1cdd17c..73a7008 100644 --- a/types/microvm/zz_generated.deepcopy.go +++ b/types/microvm/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright 2022 Weaveworks. @@ -23,6 +22,31 @@ package microvm import () +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CPUConfig) DeepCopyInto(out *CPUConfig) { + *out = *in + if in.FeaturesToEnable != nil { + in, out := &in.FeaturesToEnable, &out.FeaturesToEnable + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.KVMCapabilitiesToDisable != nil { + in, out := &in.KVMCapabilitiesToDisable, &out.KVMCapabilitiesToDisable + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CPUConfig. +func (in *CPUConfig) DeepCopy() *CPUConfig { + if in == nil { + return nil + } + out := new(CPUConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ContainerFileSource) DeepCopyInto(out *ContainerFileSource) { *out = *in @@ -122,6 +146,11 @@ func (in *VMSpec) DeepCopyInto(out *VMSpec) { (*out)[key] = val } } + if in.CPUConfig != nil { + in, out := &in.CPUConfig, &out.CPUConfig + *out = new(CPUConfig) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VMSpec.