Skip to content

Commit 3abb096

Browse files
committed
Addressing code review comments
1 parent 1ca91ec commit 3abb096

2 files changed

Lines changed: 28 additions & 16 deletions

File tree

labeler/pkg/devicecounts/device_counts.go

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -223,22 +223,23 @@ func (m *Manager) NodeLabelsAffectDeviceCounts(oldLabels, newLabels map[string]s
223223
}
224224

225225
// NodeResourcesAffectDeviceCounts reports whether an allocatable or capacity
226-
// change on a node could affect a device-count class that reads from node status.
226+
// change on a node could affect a device-count class whose CEL expression reads
227+
// from node.status.allocatable or node.status.capacity.
227228
func (m *Manager) NodeResourcesAffectDeviceCounts(oldNode, newNode *corev1.Node) bool {
228229
if !m.Enabled() || oldNode == nil || newNode == nil {
229230
return false
230231
}
231232

232-
statusReferenced := false
233+
resourcesReferenced := false
233234

234235
for _, class := range m.classes {
235-
if class.referencesNodeStatus() {
236-
statusReferenced = true
236+
if class.referencesNodeResources() {
237+
resourcesReferenced = true
237238
break
238239
}
239240
}
240241

241-
if !statusReferenced {
242+
if !resourcesReferenced {
242243
return false
243244
}
244245

@@ -623,12 +624,14 @@ func (class compiledClass) referencesResourceSlices() bool {
623624
return strings.Contains(class.CurrentExpression, "resourceSlices")
624625
}
625626

626-
// referencesNodeStatus is a cheap heuristic mirroring referencesResourceSlices.
627-
// It detects dot-style access (e.g. node.status.allocatable) which covers all
628-
// shipped and documented CEL expression forms. NodeResourcesAffectDeviceCounts
629-
// uses this to decide whether allocatable/capacity changes need reconciliation.
630-
func (class compiledClass) referencesNodeStatus() bool {
631-
return strings.Contains(class.CurrentExpression, "node.status")
627+
// referencesNodeResources is a cheap heuristic mirroring referencesResourceSlices.
628+
// It checks specifically for node.status.allocatable or node.status.capacity
629+
// rather than the broader node.status, so expressions that only reference
630+
// node.status.conditions (noisy with heartbeats) do not trigger unnecessary
631+
// allocatable/capacity comparisons on every node update.
632+
func (class compiledClass) referencesNodeResources() bool {
633+
return strings.Contains(class.CurrentExpression, "node.status.allocatable") ||
634+
strings.Contains(class.CurrentExpression, "node.status.capacity")
632635
}
633636

634637
func matchLabels(actual, expected map[string]string) bool {

labeler/pkg/devicecounts/device_counts_test.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -414,14 +414,14 @@ func TestNodeResourcesAffectDeviceCounts(t *testing.T) {
414414
})
415415
}
416416

417-
func TestReferencesNodeStatus(t *testing.T) {
417+
func TestReferencesNodeResources(t *testing.T) {
418418
t.Run("returns true for allocatable expression", func(t *testing.T) {
419419
class := compiledClass{
420420
ClassConfig: ClassConfig{
421421
CurrentExpression: "int(node.status.allocatable['nvidia.com/mlnxnics'])",
422422
},
423423
}
424-
require.True(t, class.referencesNodeStatus())
424+
require.True(t, class.referencesNodeResources())
425425
})
426426

427427
t.Run("returns true for capacity expression", func(t *testing.T) {
@@ -430,7 +430,7 @@ func TestReferencesNodeStatus(t *testing.T) {
430430
CurrentExpression: "int(node.status.capacity['nvidia.com/mlnxnics'])",
431431
},
432432
}
433-
require.True(t, class.referencesNodeStatus())
433+
require.True(t, class.referencesNodeResources())
434434
})
435435

436436
t.Run("returns false for label expression", func(t *testing.T) {
@@ -439,7 +439,7 @@ func TestReferencesNodeStatus(t *testing.T) {
439439
CurrentExpression: "int(node.metadata.labels['nvidia.com/gpu.count'])",
440440
},
441441
}
442-
require.False(t, class.referencesNodeStatus())
442+
require.False(t, class.referencesNodeResources())
443443
})
444444

445445
t.Run("returns false for resourceSlices expression", func(t *testing.T) {
@@ -448,7 +448,16 @@ func TestReferencesNodeStatus(t *testing.T) {
448448
CurrentExpression: "resourceSlices.size()",
449449
},
450450
}
451-
require.False(t, class.referencesNodeStatus())
451+
require.False(t, class.referencesNodeResources())
452+
})
453+
454+
t.Run("returns false for conditions expression", func(t *testing.T) {
455+
class := compiledClass{
456+
ClassConfig: ClassConfig{
457+
CurrentExpression: "node.status.conditions.exists(c, c.type == 'Ready')",
458+
},
459+
}
460+
require.False(t, class.referencesNodeResources())
452461
})
453462
}
454463

0 commit comments

Comments
 (0)