Skip to content

Commit c3a01b9

Browse files
committed
cdi: restructure cdi support for more generic use
Pass the whole cdi.spec structure to DeviceInfo and use cdiCache for interacting with the CDI files on the host. Signed-off-by: Tuomas Katila <[email protected]>
1 parent b7be723 commit c3a01b9

File tree

10 files changed

+437
-81
lines changed

10 files changed

+437
-81
lines changed

.golangci.yml

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ issues:
6969
linters:
7070
- gocognit
7171
- wsl
72+
- gocyclo
7273
- path: test/e2e/
7374
linters:
7475
- wsl

cmd/fpga_plugin/dfl_test.go

+54-9
Original file line numberDiff line numberDiff line change
@@ -188,20 +188,31 @@ func TestGetRegionDevelTreeDFL(t *testing.T) {
188188

189189
func TestGetRegionTreeDFL(t *testing.T) {
190190
expected := dpapi.NewDeviceTree()
191-
hooks := []*cdispec.Hook{
192-
{
193-
HookName: HookName,
194-
Path: HookPath,
195-
},
196-
}
197191
nodes := []pluginapi.DeviceSpec{
198192
{
199193
HostPath: "/dev/dfl-port.0",
200194
ContainerPath: "/dev/dfl-port.0",
201195
Permissions: "rw",
202196
},
203197
}
204-
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "region1", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, hooks))
198+
cdiSpec := &cdispec.Spec{
199+
Version: dpapi.CDIVersion,
200+
Kind: dpapi.CDIVendor + "/fpga",
201+
Devices: []cdispec.Device{
202+
{
203+
Name: "region1",
204+
ContainerEdits: cdispec.ContainerEdits{
205+
Hooks: []*cdispec.Hook{
206+
{
207+
HookName: HookName,
208+
Path: HookPath,
209+
},
210+
},
211+
},
212+
},
213+
},
214+
}
215+
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "region1", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, cdiSpec))
205216

206217
nodes = []pluginapi.DeviceSpec{
207218
{
@@ -215,7 +226,24 @@ func TestGetRegionTreeDFL(t *testing.T) {
215226
Permissions: "rw",
216227
},
217228
}
218-
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "region2", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, hooks))
229+
cdiSpec = &cdispec.Spec{
230+
Version: dpapi.CDIVersion,
231+
Kind: dpapi.CDIVendor + "/fpga",
232+
Devices: []cdispec.Device{
233+
{
234+
Name: "region2",
235+
ContainerEdits: cdispec.ContainerEdits{
236+
Hooks: []*cdispec.Hook{
237+
{
238+
HookName: HookName,
239+
Path: HookPath,
240+
},
241+
},
242+
},
243+
},
244+
},
245+
}
246+
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "region2", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, cdiSpec))
219247

220248
nodes = []pluginapi.DeviceSpec{
221249
{
@@ -229,7 +257,24 @@ func TestGetRegionTreeDFL(t *testing.T) {
229257
Permissions: "rw",
230258
},
231259
}
232-
expected.AddDevice(regionMode+"-"+unhealthyInterfaceID, "region3", dpapi.NewDeviceInfo(pluginapi.Unhealthy, nodes, nil, nil, nil, hooks))
260+
cdiSpec = &cdispec.Spec{
261+
Version: dpapi.CDIVersion,
262+
Kind: dpapi.CDIVendor + "/fpga",
263+
Devices: []cdispec.Device{
264+
{
265+
Name: "region3",
266+
ContainerEdits: cdispec.ContainerEdits{
267+
Hooks: []*cdispec.Hook{
268+
{
269+
HookName: HookName,
270+
Path: HookPath,
271+
},
272+
},
273+
},
274+
},
275+
},
276+
}
277+
expected.AddDevice(regionMode+"-"+unhealthyInterfaceID, "region3", dpapi.NewDeviceInfo(pluginapi.Unhealthy, nodes, nil, nil, nil, cdiSpec))
233278

234279
result := getRegionTree(getDevicesDFL())
235280
if !reflect.DeepEqual(result, expected) {

cmd/fpga_plugin/fpga_plugin.go

+20-8
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const (
5353
scanPeriod = 5 * time.Second
5454

5555
// CDI hook attributes.
56+
CDIClass = "fpga"
5657
HookName = "createRuntime"
5758
HookPath = "/opt/intel/fpga-sw/intel-fpga-crihook"
5859
)
@@ -109,6 +110,24 @@ func getRegionTree(devices []device) dpapi.DeviceTree {
109110
devType := fmt.Sprintf("%s-%s", regionMode, region.interfaceID)
110111
devNodes := make([]pluginapi.DeviceSpec, len(region.afus))
111112

113+
cdiSpec := &cdispec.Spec{
114+
Version: dpapi.CDIVersion,
115+
Kind: dpapi.CDIVendor + "/" + CDIClass,
116+
Devices: []cdispec.Device{
117+
{
118+
Name: region.id,
119+
ContainerEdits: cdispec.ContainerEdits{
120+
Hooks: []*cdispec.Hook{
121+
{
122+
HookName: HookName,
123+
Path: HookPath,
124+
},
125+
},
126+
},
127+
},
128+
},
129+
}
130+
112131
for num, afu := range region.afus {
113132
devNodes[num] = pluginapi.DeviceSpec{
114133
HostPath: afu.devNode,
@@ -117,14 +136,7 @@ func getRegionTree(devices []device) dpapi.DeviceTree {
117136
}
118137
}
119138

120-
hooks := []*cdispec.Hook{
121-
{
122-
HookName: HookName,
123-
Path: HookPath,
124-
},
125-
}
126-
127-
regionTree.AddDevice(devType, region.id, dpapi.NewDeviceInfo(health, devNodes, nil, nil, nil, hooks))
139+
regionTree.AddDevice(devType, region.id, dpapi.NewDeviceInfo(health, devNodes, nil, nil, nil, cdiSpec))
128140
}
129141
}
130142

cmd/fpga_plugin/opae_test.go

+54-9
Original file line numberDiff line numberDiff line change
@@ -168,20 +168,31 @@ func TestGetRegionDevelTreeOPAE(t *testing.T) {
168168

169169
func TestGetRegionTreeOPAE(t *testing.T) {
170170
expected := dpapi.NewDeviceTree()
171-
hooks := []*cdispec.Hook{
172-
{
173-
HookName: HookName,
174-
Path: HookPath,
175-
},
176-
}
177171
nodes := []pluginapi.DeviceSpec{
178172
{
179173
HostPath: "/dev/intel-fpga-port.0",
180174
ContainerPath: "/dev/intel-fpga-port.0",
181175
Permissions: "rw",
182176
},
183177
}
184-
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "intel-fpga-fme.0", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, hooks))
178+
cdiSpec := &cdispec.Spec{
179+
Version: dpapi.CDIVersion,
180+
Kind: dpapi.CDIVendor + "/fpga",
181+
Devices: []cdispec.Device{
182+
{
183+
Name: "intel-fpga-fme.0",
184+
ContainerEdits: cdispec.ContainerEdits{
185+
Hooks: []*cdispec.Hook{
186+
{
187+
HookName: HookName,
188+
Path: HookPath,
189+
},
190+
},
191+
},
192+
},
193+
},
194+
}
195+
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "intel-fpga-fme.0", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, cdiSpec))
185196

186197
nodes = []pluginapi.DeviceSpec{
187198
{
@@ -190,7 +201,24 @@ func TestGetRegionTreeOPAE(t *testing.T) {
190201
Permissions: "rw",
191202
},
192203
}
193-
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "intel-fpga-fme.1", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, hooks))
204+
cdiSpec = &cdispec.Spec{
205+
Version: dpapi.CDIVersion,
206+
Kind: dpapi.CDIVendor + "/fpga",
207+
Devices: []cdispec.Device{
208+
{
209+
Name: "intel-fpga-fme.1",
210+
ContainerEdits: cdispec.ContainerEdits{
211+
Hooks: []*cdispec.Hook{
212+
{
213+
HookName: HookName,
214+
Path: HookPath,
215+
},
216+
},
217+
},
218+
},
219+
},
220+
}
221+
expected.AddDevice(regionMode+"-ce48969398f05f33946d560708be108a", "intel-fpga-fme.1", dpapi.NewDeviceInfo(pluginapi.Healthy, nodes, nil, nil, nil, cdiSpec))
194222

195223
nodes = []pluginapi.DeviceSpec{
196224
{
@@ -199,7 +227,24 @@ func TestGetRegionTreeOPAE(t *testing.T) {
199227
Permissions: "rw",
200228
},
201229
}
202-
expected.AddDevice(regionMode+"-"+unhealthyInterfaceID, "intel-fpga-fme.2", dpapi.NewDeviceInfo(pluginapi.Unhealthy, nodes, nil, nil, nil, hooks))
230+
cdiSpec = &cdispec.Spec{
231+
Version: dpapi.CDIVersion,
232+
Kind: dpapi.CDIVendor + "/fpga",
233+
Devices: []cdispec.Device{
234+
{
235+
Name: "intel-fpga-fme.2",
236+
ContainerEdits: cdispec.ContainerEdits{
237+
Hooks: []*cdispec.Hook{
238+
{
239+
HookName: HookName,
240+
Path: HookPath,
241+
},
242+
},
243+
},
244+
},
245+
},
246+
}
247+
expected.AddDevice(regionMode+"-"+unhealthyInterfaceID, "intel-fpga-fme.2", dpapi.NewDeviceInfo(pluginapi.Unhealthy, nodes, nil, nil, nil, cdiSpec))
203248

204249
result := getRegionTree(getDevicesOPAE())
205250
if !reflect.DeepEqual(result, expected) {

cmd/sgx_plugin/sgx_plugin.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,13 @@ func (dp *devicePlugin) scan() (dpapi.DeviceTree, error) {
8787
for i := uint(0); i < dp.nEnclave; i++ {
8888
devID := fmt.Sprintf("%s-%d", "sgx-enclave", i)
8989
nodes := []pluginapi.DeviceSpec{{HostPath: sgxEnclavePath, ContainerPath: sgxEnclavePath, Permissions: "rw"}}
90-
devTree.AddDevice(deviceTypeEnclave, devID, dpapi.NewDeviceInfoWithTopologyHints(pluginapi.Healthy, nodes, nil, nil, nil, nil))
90+
devTree.AddDevice(deviceTypeEnclave, devID, dpapi.NewDeviceInfoWithTopologyHints(pluginapi.Healthy, nodes, nil, nil, nil, nil, nil))
9191
}
9292

9393
for i := uint(0); i < dp.nProvision; i++ {
9494
devID := fmt.Sprintf("%s-%d", "sgx-provision", i)
9595
nodes := []pluginapi.DeviceSpec{{HostPath: sgxProvisionPath, ContainerPath: sgxProvisionPath, Permissions: "rw"}}
96-
devTree.AddDevice(deviceTypeProvision, devID, dpapi.NewDeviceInfoWithTopologyHints(pluginapi.Healthy, nodes, nil, nil, nil, nil))
96+
devTree.AddDevice(deviceTypeProvision, devID, dpapi.NewDeviceInfoWithTopologyHints(pluginapi.Healthy, nodes, nil, nil, nil, nil, nil))
9797
}
9898

9999
return devTree, nil

go.mod

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ require (
2828
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
2929
sigs.k8s.io/controller-runtime v0.19.0
3030
sigs.k8s.io/yaml v1.4.0
31+
tags.cncf.io/container-device-interface v0.8.0
3132
tags.cncf.io/container-device-interface/specs-go v0.8.0
3233
)
3334

@@ -78,11 +79,14 @@ require (
7879
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
7980
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
8081
github.com/opencontainers/go-digest v1.0.0 // indirect
82+
github.com/opencontainers/runtime-spec v1.1.0 // indirect
83+
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 // indirect
8184
github.com/prometheus/client_golang v1.20.0 // indirect
8285
github.com/prometheus/procfs v0.15.1 // indirect
8386
github.com/spf13/cobra v1.8.1 // indirect
8487
github.com/spf13/pflag v1.0.5 // indirect
8588
github.com/stoewer/go-strcase v1.2.0 // indirect
89+
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect
8690
github.com/x448/float16 v0.8.4 // indirect
8791
go.etcd.io/etcd/api/v3 v3.5.14 // indirect
8892
go.etcd.io/etcd/client/pkg/v3 v3.5.14 // indirect

go.sum

+30
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
8383
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
8484
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA=
8585
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
86+
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
8687
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
8788
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
8889
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
@@ -95,6 +96,10 @@ github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4
9596
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
9697
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0=
9798
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k=
99+
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
100+
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
101+
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
102+
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
98103
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
99104
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
100105
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@@ -122,13 +127,15 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
122127
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
123128
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
124129
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
130+
github.com/mndrix/tap-go v0.0.0-20171203230836-629fa407e90b/go.mod h1:pzzDgJWZ34fGzaAZGFW22KVZDfyrYW+QABMrWnJBnSs=
125131
github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8=
126132
github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
127133
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
128134
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
129135
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
130136
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
131137
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
138+
github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ=
132139
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
133140
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
134141
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
@@ -139,6 +146,14 @@ github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8=
139146
github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
140147
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
141148
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
149+
github.com/opencontainers/runtime-spec v1.0.3-0.20220825212826-86290f6a00fb/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
150+
github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
151+
github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
152+
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0=
153+
github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI=
154+
github.com/opencontainers/selinux v1.9.1/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI=
155+
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
156+
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
142157
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
143158
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
144159
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -155,6 +170,7 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG
155170
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
156171
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
157172
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
173+
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
158174
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
159175
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
160176
github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
@@ -170,17 +186,27 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS
170186
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
171187
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
172188
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
189+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
173190
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
174191
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
175192
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
176193
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
177194
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
178195
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
179196
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
197+
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI=
198+
github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww=
180199
github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE=
181200
github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk=
201+
github.com/urfave/cli v1.19.1/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
182202
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
183203
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
204+
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
205+
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
206+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
207+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
208+
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
209+
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
184210
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
185211
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
186212
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -251,6 +277,8 @@ golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
251277
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
252278
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
253279
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
280+
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
281+
golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
254282
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
255283
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
256284
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
@@ -350,5 +378,7 @@ sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+s
350378
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
351379
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
352380
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
381+
tags.cncf.io/container-device-interface v0.8.0 h1:8bCFo/g9WODjWx3m6EYl3GfUG31eKJbaggyBDxEldRc=
382+
tags.cncf.io/container-device-interface v0.8.0/go.mod h1:Apb7N4VdILW0EVdEMRYXIDVRZfNJZ+kmEUss2kRRQ6Y=
353383
tags.cncf.io/container-device-interface/specs-go v0.8.0 h1:QYGFzGxvYK/ZLMrjhvY0RjpUavIn4KcmRmVP/JjdBTA=
354384
tags.cncf.io/container-device-interface/specs-go v0.8.0/go.mod h1:BhJIkjjPh4qpys+qm4DAYtUyryaTDg9zris+AczXyws=

0 commit comments

Comments
 (0)