Skip to content

Commit 6305605

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 <eduard.bartosh@intel.com> Co-authored-by: John Belamaric <jbelamaric@google.com>
1 parent a0881b2 commit 6305605

30 files changed

+2456
-3096
lines changed

pkg/scheduler/eventhandlers.go

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -532,28 +532,10 @@ func addAllEventHandlers(
532532
)
533533
handlers = append(handlers, handlerRegistration)
534534
}
535-
case framework.ResourceClass:
535+
case framework.DeviceClass:
536536
if utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
537-
if handlerRegistration, err = informerFactory.Resource().V1alpha3().ResourceClasses().Informer().AddEventHandler(
538-
buildEvtResHandler(at, framework.ResourceClass, "ResourceClass"),
539-
); err != nil {
540-
return err
541-
}
542-
handlers = append(handlers, handlerRegistration)
543-
}
544-
case framework.ResourceClaimParameters:
545-
if utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
546-
if handlerRegistration, err = informerFactory.Resource().V1alpha3().ResourceClaimParameters().Informer().AddEventHandler(
547-
buildEvtResHandler(at, framework.ResourceClaimParameters, "ResourceClaimParameters"),
548-
); err != nil {
549-
return err
550-
}
551-
handlers = append(handlers, handlerRegistration)
552-
}
553-
case framework.ResourceClassParameters:
554-
if utilfeature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
555-
if handlerRegistration, err = informerFactory.Resource().V1alpha3().ResourceClassParameters().Informer().AddEventHandler(
556-
buildEvtResHandler(at, framework.ResourceClassParameters, "ResourceClassParameters"),
537+
if handlerRegistration, err = informerFactory.Resource().V1alpha3().DeviceClasses().Informer().AddEventHandler(
538+
buildEvtResHandler(at, framework.DeviceClass, "DeviceClass"),
557539
); err != nil {
558540
return err
559541
}

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)