e2e_dra: fix ImplicitExtendedResource upgrade/downgrade

Don't create default DeviceClass as it's already created.
This should fix this test failure:
   create *v1.DeviceClass: deviceclasses.resource.k8s.io
   "default-class" already exists
This commit is contained in:
Ed Bartosh
2026-03-05 10:55:25 +02:00
parent c38abeb4ff
commit 4e8c8ffacd

View File

@@ -119,33 +119,28 @@ func testExtendedResource(tCtx ktesting.TContext, b *drautils.Builder, resourceT
}
}
// createDeviceClassForExtendedResource creates a DeviceClass for testing extended resources.
// It creates the DeviceClass with a unique name, and returns its corresponding resource name.
// createDeviceClassForExtendedResource gets or creates a DeviceClass for testing extended resources.
// For explicit resource type, it creates a DeviceClass with a unique extendedResourceName and returns that name.
// For implicit resource type, it returns the resource name derived from the existing DeviceClass created by the builder.
func createDeviceClassForExtendedResource(tCtx ktesting.TContext, b *drautils.Builder, resourceType string) v1.ResourceName {
var deviceClass *resourceapi.DeviceClass
var resourceName v1.ResourceName
if resourceType == resourceTypeExplicit {
// Framework automatically names it: b.ClassName() + "-explicit"
resourceName = v1.ResourceName(b.ExtendedResourceName(resourceTypeExplicit))
deviceClass = b.ClassWithExtendedResource(string(resourceName))
} else {
// Framework automatically names it
deviceClass = b.Class().DeviceClass
resourceName = v1.ResourceName(fmt.Sprintf("%s%s", resourceapi.ResourceDeviceClassPrefix, deviceClass.Name))
}
createdObjs := b.Create(tCtx, deviceClass)
// Verify ExtendedResourceName is present in the spec when using explicit resource name
if resourceType == resourceTypeExplicit {
switch resourceType {
case resourceTypeExplicit:
resourceName := v1.ResourceName(b.ExtendedResourceName(resourceTypeExplicit))
deviceClass := b.ClassWithExtendedResource(string(resourceName))
// Create the DeviceClass
createdObjs := b.Create(tCtx, deviceClass)
// Verify ExtendedResourceName is present in the spec
deviceClass = createdObjs[0].(*resourceapi.DeviceClass)
tCtx.Expect(deviceClass.Spec.ExtendedResourceName).ToNot(gomega.BeNil(), "DeviceClass.Spec.ExtendedResourceName should be set for explicit resource name")
tCtx.Logf("Created DeviceClass %q with extendedResourceName: %s", deviceClass.Name, resourceName)
return resourceName
case resourceTypeImplicit:
// The device class was already created by the builder, we only need the name.
return v1.ResourceName(fmt.Sprintf("%s%s", resourceapi.ResourceDeviceClassPrefix, b.ClassName()))
default:
tCtx.Fatalf("invalid resource type %q", resourceType)
return ""
}
tCtx.Logf("Created DeviceClass %q with extendedResourceName: %s", deviceClass.Name, resourceName)
return resourceName
}
// createPodWithExtendedResource creates a pod with the given name requesting an extended resource.