Skip to content

Commit 2bce123

Browse files
pohlybart0sh
andcommitted
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 <eduard.bartosh@intel.com>
1 parent 7244aa0 commit 2bce123

30 files changed

+2560
-3097
lines changed

pkg/scheduler/eventhandlers.go

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

pkg/scheduler/eventhandlers_test.go

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -384,11 +384,9 @@ func TestAddAllEventHandlers(t *testing.T) {
384384
{
385385
name: "DRA events disabled",
386386
gvkMap: map[framework.GVK]framework.ActionType{
387-
framework.PodSchedulingContext: framework.Add,
388-
framework.ResourceClaim: framework.Add,
389-
framework.ResourceClass: framework.Add,
390-
framework.ResourceClaimParameters: framework.Add,
391-
framework.ResourceClassParameters: framework.Add,
387+
framework.PodSchedulingContext: framework.Add,
388+
framework.ResourceClaim: framework.Add,
389+
framework.DeviceClass: framework.Add,
392390
},
393391
expectStaticInformers: map[reflect.Type]bool{
394392
reflect.TypeOf(&v1.Pod{}): true,
@@ -400,22 +398,18 @@ func TestAddAllEventHandlers(t *testing.T) {
400398
{
401399
name: "DRA events enabled",
402400
gvkMap: map[framework.GVK]framework.ActionType{
403-
framework.PodSchedulingContext: framework.Add,
404-
framework.ResourceClaim: framework.Add,
405-
framework.ResourceClass: framework.Add,
406-
framework.ResourceClaimParameters: framework.Add,
407-
framework.ResourceClassParameters: framework.Add,
401+
framework.PodSchedulingContext: framework.Add,
402+
framework.ResourceClaim: framework.Add,
403+
framework.DeviceClass: framework.Add,
408404
},
409405
enableDRA: true,
410406
expectStaticInformers: map[reflect.Type]bool{
411-
reflect.TypeOf(&v1.Pod{}): true,
412-
reflect.TypeOf(&v1.Node{}): true,
413-
reflect.TypeOf(&v1.Namespace{}): true,
414-
reflect.TypeOf(&resourceapi.PodSchedulingContext{}): true,
415-
reflect.TypeOf(&resourceapi.ResourceClaim{}): true,
416-
reflect.TypeOf(&resourceapi.ResourceClaimParameters{}): true,
417-
reflect.TypeOf(&resourceapi.ResourceClass{}): true,
418-
reflect.TypeOf(&resourceapi.ResourceClassParameters{}): true,
407+
reflect.TypeOf(&v1.Pod{}): true,
408+
reflect.TypeOf(&v1.Node{}): true,
409+
reflect.TypeOf(&v1.Namespace{}): true,
410+
reflect.TypeOf(&resourceapi.PodSchedulingContext{}): true,
411+
reflect.TypeOf(&resourceapi.ResourceClaim{}): true,
412+
reflect.TypeOf(&resourceapi.DeviceClass{}): true,
419413
},
420414
expectDynamicInformers: map[schema.GroupVersionResource]bool{},
421415
},

0 commit comments

Comments
 (0)