From 9c61ebeaf93535f3232b55f58479a45c56a29032 Mon Sep 17 00:00:00 2001 From: rongxin Date: Tue, 26 May 2026 10:28:54 +0800 Subject: [PATCH 1/2] fix: update observedGeneration on Gateway-API route status conditions Stamps condition.ObservedGeneration = cp.GetGeneration() inside the four Gateway-API mutator closures (HTTPRoute, UDPRoute, TCPRoute, GRPCRoute) before MergeCondition, mirroring what SetApisixCRDConditionWithGeneration already does for the legacy CRDs. Backport of apache/apisix-ingress-controller#2768 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- internal/provider/apisix/status.go | 4 ++++ test/e2e/gatewayapi/status.go | 1 + 2 files changed, 5 insertions(+) diff --git a/internal/provider/apisix/status.go b/internal/provider/apisix/status.go index 327856ec8..1fced4e80 100644 --- a/internal/provider/apisix/status.go +++ b/internal/provider/apisix/status.go @@ -123,6 +123,7 @@ func (d *apisixProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1.HTTPRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1.HTTPRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs @@ -158,6 +159,7 @@ func (d *apisixProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1alpha2.UDPRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1alpha2.UDPRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs @@ -193,6 +195,7 @@ func (d *apisixProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1alpha2.TCPRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1alpha2.TCPRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs @@ -228,6 +231,7 @@ func (d *apisixProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1.GRPCRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1.GRPCRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs diff --git a/test/e2e/gatewayapi/status.go b/test/e2e/gatewayapi/status.go index 3c50499f3..999ec31cb 100644 --- a/test/e2e/gatewayapi/status.go +++ b/test/e2e/gatewayapi/status.go @@ -173,6 +173,7 @@ spec: And( ContainSubstring(`status: "True"`), ContainSubstring(`reason: Accepted`), + ContainSubstring(`observedGeneration: 1`), ), ) From b8ec12fd0e8e9fc7ee60d3db47d9828a7cda7333 Mon Sep 17 00:00:00 2001 From: rongxin Date: Tue, 26 May 2026 11:34:40 +0800 Subject: [PATCH 2/2] fix: update observedGeneration on Gateway-API route status conditions in api7ee provider --- internal/provider/api7ee/status.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/provider/api7ee/status.go b/internal/provider/api7ee/status.go index 0fc5fb798..9231a8ec7 100644 --- a/internal/provider/api7ee/status.go +++ b/internal/provider/api7ee/status.go @@ -122,6 +122,7 @@ func (d *api7eeProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1.HTTPRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1.HTTPRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs @@ -157,6 +158,7 @@ func (d *api7eeProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1alpha2.UDPRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1alpha2.UDPRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs @@ -192,6 +194,7 @@ func (d *api7eeProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1alpha2.TCPRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1alpha2.TCPRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs @@ -227,6 +230,7 @@ func (d *api7eeProvider) updateStatus(nnk types.NamespacedNameKind, condition me Resource: &gatewayv1.GRPCRoute{}, Mutator: status.MutatorFunc(func(obj client.Object) client.Object { cp := obj.(*gatewayv1.GRPCRoute).DeepCopy() + condition.ObservedGeneration = cp.GetGeneration() gatewayNs := cp.GetNamespace() for i, ref := range cp.Status.Parents { ns := gatewayNs