Skip to content

Commit c6867b0

Browse files
pohlybart0shjohnbelamaric
committed
DRA scheduler: adapt to v1alpha3 API
The structured parameter allocation logic was written from scratch in staging/src/k8s.io/dynamic-resource-allocation/structured where it might be useful for out-of-tree components. Besides the new features (amount, admin access) and API it now supports backtracking when the initial device selection doesn't lead to a complete allocation of all claims. Co-authored-by: Ed Bartosh <[email protected]> Co-authored-by: John Belamaric <[email protected]>
1 parent cf995f0 commit c6867b0

30 files changed

+2363
-3097
lines changed

pkg/scheduler/eventhandlers.go

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -488,28 +488,10 @@ func addAllEventHandlers(
488488
)
489489
handlers = append(handlers, handlerRegistration)
490490
}
491-
case framework.ResourceClass:
491+
case framework.DeviceClass:
492492
if utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
493-
if handlerRegistration, err = informerFactory.Resource().V1alpha3().ResourceClasses().Informer().AddEventHandler(
494-
buildEvtResHandler(at, framework.ResourceClass, "ResourceClass"),
495-
); err != nil {
496-
return err
497-
}
498-
handlers = append(handlers, handlerRegistration)
499-
}
500-
case framework.ResourceClaimParameters:
501-
if utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
502-
if handlerRegistration, err = informerFactory.Resource().V1alpha3().ResourceClaimParameters().Informer().AddEventHandler(
503-
buildEvtResHandler(at, framework.ResourceClaimParameters, "ResourceClaimParameters"),
504-
); err != nil {
505-
return err
506-
}
507-
handlers = append(handlers, handlerRegistration)
508-
}
509-
case framework.ResourceClassParameters:
510-
if utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
511-
if handlerRegistration, err = informerFactory.Resource().V1alpha3().ResourceClassParameters().Informer().AddEventHandler(
512-
buildEvtResHandler(at, framework.ResourceClassParameters, "ResourceClassParameters"),
493+
if handlerRegistration, err = informerFactory.Resource().V1alpha3().DeviceClasses().Informer().AddEventHandler(
494+
buildEvtResHandler(at, framework.DeviceClass, "DeviceClass"),
513495
); err != nil {
514496
return err
515497
}

pkg/scheduler/eventhandlers_test.go

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -232,11 +232,9 @@ func TestAddAllEventHandlers(t *testing.T) {
232232
{
233233
name: "DRA events disabled",
234234
gvkMap: map[framework.GVK]framework.ActionType{
235-
framework.PodSchedulingContext: framework.Add,
236-
framework.ResourceClaim: framework.Add,
237-
framework.ResourceClass: framework.Add,
238-
framework.ResourceClaimParameters: framework.Add,
239-
framework.ResourceClassParameters: framework.Add,
235+
framework.PodSchedulingContext: framework.Add,
236+
framework.ResourceClaim: framework.Add,
237+
framework.DeviceClass: framework.Add,
240238
},
241239
expectStaticInformers: map[reflect.Type]bool{
242240
reflect.TypeOf(&v1.Pod{}): true,
@@ -248,22 +246,18 @@ func TestAddAllEventHandlers(t *testing.T) {
248246
{
249247
name: "DRA events enabled",
250248
gvkMap: map[framework.GVK]framework.ActionType{
251-
framework.PodSchedulingContext: framework.Add,
252-
framework.ResourceClaim: framework.Add,
253-
framework.ResourceClass: framework.Add,
254-
framework.ResourceClaimParameters: framework.Add,
255-
framework.ResourceClassParameters: framework.Add,
249+
framework.PodSchedulingContext: framework.Add,
250+
framework.ResourceClaim: framework.Add,
251+
framework.DeviceClass: framework.Add,
256252
},
257253
enableDRA: true,
258254
expectStaticInformers: map[reflect.Type]bool{
259-
reflect.TypeOf(&v1.Pod{}): true,
260-
reflect.TypeOf(&v1.Node{}): true,
261-
reflect.TypeOf(&v1.Namespace{}): true,
262-
reflect.TypeOf(&resourceapi.PodSchedulingContext{}): true,
263-
reflect.TypeOf(&resourceapi.ResourceClaim{}): true,
264-
reflect.TypeOf(&resourceapi.ResourceClaimParameters{}): true,
265-
reflect.TypeOf(&resourceapi.ResourceClass{}): true,
266-
reflect.TypeOf(&resourceapi.ResourceClassParameters{}): true,
255+
reflect.TypeOf(&v1.Pod{}): true,
256+
reflect.TypeOf(&v1.Node{}): true,
257+
reflect.TypeOf(&v1.Namespace{}): true,
258+
reflect.TypeOf(&resourceapi.PodSchedulingContext{}): true,
259+
reflect.TypeOf(&resourceapi.ResourceClaim{}): true,
260+
reflect.TypeOf(&resourceapi.DeviceClass{}): true,
267261
},
268262
expectDynamicInformers: map[schema.GroupVersionResource]bool{},
269263
},

0 commit comments

Comments
 (0)