Skip to content

Commit 10b6319

Browse files
committed
Implement DeviceClassResolver interface
1 parent ced23ea commit 10b6319

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

cluster-autoscaler/simulator/clustersnapshot/store/basic.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,10 @@ func (snapshot *BasicSnapshotStore) DeviceClasses() fwk.DeviceClassLister {
360360
return snapshot.DraSnapshot().DeviceClasses()
361361
}
362362

363+
func (snapshot *BasicSnapshotStore) DeviceClassResolver() fwk.DeviceClassResolver {
364+
return snapshot.DraSnapshot().DeviceClassResolver()
365+
}
366+
363367
// List returns the list of nodes in the snapshot.
364368
func (snapshot *basicSnapshotStoreNodeLister) List() ([]fwk.NodeInfo, error) {
365369
return (*BasicSnapshotStore)(snapshot).getInternalData().listNodeInfos(), nil

cluster-autoscaler/simulator/clustersnapshot/store/delta.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,10 @@ func (snapshot *DeltaSnapshotStore) CSINodes() fwk.CSINodeLister {
443443
return snapshot.csiSnapshot.CSINodes()
444444
}
445445

446+
func (snapshot *DeltaSnapshotStore) DeviceClassResolver() fwk.DeviceClassResolver {
447+
return snapshot.DraSnapshot().DeviceClassResolver()
448+
}
449+
446450
// AddSchedulerNodeInfo adds a NodeInfo.
447451
func (snapshot *DeltaSnapshotStore) AddSchedulerNodeInfo(nodeInfo fwk.NodeInfo) error {
448452
if _, err := snapshot.data.addNode(nodeInfo.Node()); err != nil {

cluster-autoscaler/simulator/dynamicresources/snapshot/snapshot.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func (s *Snapshot) ResourceClaims() schedulerframework.ResourceClaimTracker {
9292
}
9393

9494
func (s *Snapshot) DeviceClassResolver() schedulerframework.DeviceClassResolver {
95-
return snapshotClassResolver{snapshot: s}
95+
return newSnapshotDeviceClassResolver(s)
9696
}
9797

9898
// ResourceSlices exposes the Snapshot as schedulerframework.ResourceSliceLister, in order to interact with

cluster-autoscaler/simulator/dynamicresources/snapshot/snapshot_class_resolver.go

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,37 @@ package snapshot
33
import (
44
v1 "k8s.io/api/core/v1"
55
resourceapi "k8s.io/api/resource/v1"
6+
schedulerframework "k8s.io/kube-scheduler/framework"
67
)
78

8-
type snapshotClassResolver struct {
9-
snapshot *Snapshot
9+
type snapshotDeviceClassResolver struct {
10+
// resourceName2class maps extended resource name to device class
11+
resourceName2class map[v1.ResourceName]*resourceapi.DeviceClass
1012
}
1113

12-
func (s snapshotClassResolver) GetDeviceClass(resourceName v1.ResourceName) *resourceapi.DeviceClass {
13-
return s.snapshot.getDeviceClass(resourceName)
14+
var _ schedulerframework.DeviceClassResolver = &snapshotDeviceClassResolver{}
15+
16+
func newSnapshotDeviceClassResolver(snapshot *Snapshot) schedulerframework.DeviceClassResolver {
17+
resourceName2class := make(map[v1.ResourceName]*resourceapi.DeviceClass)
18+
for _, class := range snapshot.listDeviceClasses() {
19+
classResourceName := class.Name
20+
extendedResourceName := class.Spec.ExtendedResourceName
21+
if extendedResourceName != nil {
22+
resourceName2class[v1.ResourceName(*extendedResourceName)] = class
23+
}
24+
25+
// Also add the default extended resource name
26+
defaultResourceName := v1.ResourceName(resourceapi.ResourceDeviceClassPrefix + classResourceName)
27+
resourceName2class[defaultResourceName] = class
28+
}
29+
return snapshotDeviceClassResolver{resourceName2class: resourceName2class}
30+
}
31+
32+
// GetDeviceClass returns the device class for the given extended resource name
33+
func (s snapshotDeviceClassResolver) GetDeviceClass(resourceName v1.ResourceName) *resourceapi.DeviceClass {
34+
class, found := s.resourceName2class[resourceName]
35+
if !found {
36+
return nil
37+
}
38+
return class
1439
}

0 commit comments

Comments
 (0)