From 0df35a3d3dfa912fcca681885cf9d3c1096e5196 Mon Sep 17 00:00:00 2001 From: Jonathan Innis Date: Thu, 6 Feb 2025 14:47:45 -0800 Subject: [PATCH] Fix daemonset calculation bug --- pkg/controllers/state/cluster.go | 4 ++-- pkg/controllers/state/suite_test.go | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/controllers/state/cluster.go b/pkg/controllers/state/cluster.go index 5126695e71..3c8826b21b 100644 --- a/pkg/controllers/state/cluster.go +++ b/pkg/controllers/state/cluster.go @@ -486,9 +486,9 @@ func (c *Cluster) UpdateDaemonSet(ctx context.Context, daemonset *appsv1.DaemonS if len(pods.Items) == 0 { return nil } - pod := &pods.Items[0] + var pod *corev1.Pod for _, p := range pods.Items { - if metav1.IsControlledBy(&p, daemonset) && p.CreationTimestamp.After(pod.CreationTimestamp.Time) { + if metav1.IsControlledBy(&p, daemonset) && (pod == nil || p.CreationTimestamp.After(pod.CreationTimestamp.Time)) { pod = &p } } diff --git a/pkg/controllers/state/suite_test.go b/pkg/controllers/state/suite_test.go index 9e52e503a3..6f2773221c 100644 --- a/pkg/controllers/state/suite_test.go +++ b/pkg/controllers/state/suite_test.go @@ -1496,6 +1496,22 @@ var _ = Describe("DaemonSet Controller", func() { Expect(cluster.GetDaemonSetPod(daemonset)).To(BeNil()) }) + It("should only return daemonset pods from the daemonset cache", func() { + daemonset := test.DaemonSet( + test.DaemonSetOptions{PodOptions: test.PodOptions{ + ResourceRequirements: corev1.ResourceRequirements{Requests: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("1Gi")}}, + }}, + ) + ExpectApplied(ctx, env.Client, daemonset) + otherPods := test.Pods(1000, test.PodOptions{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: daemonset.Namespace, + }, + }) + ExpectApplied(ctx, env.Client, lo.Map(otherPods, func(p *corev1.Pod, _ int) client.Object { return p })...) + ExpectReconcileSucceeded(ctx, daemonsetController, client.ObjectKeyFromObject(daemonset)) + Expect(cluster.GetDaemonSetPod(daemonset)).To(BeNil()) + }) }) var _ = Describe("Consolidated State", func() {