diff --git a/pkg/cdi/spec_test.go b/pkg/cdi/spec_test.go index 1bc339e..a1a05ed 100644 --- a/pkg/cdi/spec_test.go +++ b/pkg/cdi/spec_test.go @@ -714,6 +714,63 @@ func TestRequiredVersion(t *testing.T) { }, expectedVersion: "0.7.0", }, + { + + description: "global edit RDT schemata requires v1.1.0", + spec: &cdi.Spec{ + ContainerEdits: cdi.ContainerEdits{ + IntelRdt: &cdi.IntelRdt{ + Schemata: []string{"foo"}, + }, + }, + }, + expectedVersion: "1.1.0", + }, + { + + description: "global edit RDT monitoring requires v1.1.0", + spec: &cdi.Spec{ + ContainerEdits: cdi.ContainerEdits{ + IntelRdt: &cdi.IntelRdt{ + EnableMonitoring: true, + }, + }, + }, + expectedVersion: "1.1.0", + }, + { + description: "device edit RDT schemata requires v1.1.0", + spec: &cdi.Spec{ + Devices: []cdi.Device{ + { + Name: "device0", + ContainerEdits: cdi.ContainerEdits{ + IntelRdt: &cdi.IntelRdt{ + Schemata: []string{"foo"}, + }, + }, + }, + }, + }, + expectedVersion: "1.1.0", + }, + { + + description: "device edit RDT monitoring requires v1.1.0", + spec: &cdi.Spec{ + Devices: []cdi.Device{ + { + Name: "device0", + ContainerEdits: cdi.ContainerEdits{ + IntelRdt: &cdi.IntelRdt{ + EnableMonitoring: true, + }, + }, + }, + }, + }, + expectedVersion: "1.1.0", + }, } for _, tc := range testCases { diff --git a/specs-go/version.go b/specs-go/version.go index b2e90c4..4e5d736 100644 --- a/specs-go/version.go +++ b/specs-go/version.go @@ -149,6 +149,15 @@ func requiresV110(spec *Spec) bool { return true } } + + for _, dev := range spec.Devices { + if i := dev.ContainerEdits.IntelRdt; i != nil { + if i.Schemata != nil || i.EnableMonitoring { + return true + } + } + } + return false }