diff --git a/policy-controller/k8s/status/src/index.rs b/policy-controller/k8s/status/src/index.rs index 0e5db8ffc4c2d..cb439d29e2a0f 100644 --- a/policy-controller/k8s/status/src/index.rs +++ b/policy-controller/k8s/status/src/index.rs @@ -110,6 +110,7 @@ pub(crate) struct RouteRef { pub(crate) parents: Vec, pub(crate) backends: Vec, pub(crate) statuses: Vec, + pub(crate) generation: Option, } pub(crate) type HTTPRouteRef = RouteRef; @@ -948,6 +949,7 @@ impl Index { let status = gateway::HTTPRouteStatus { parents: all_statuses, + observed_generation: route.generation, }; make_patch(id, status) @@ -1367,6 +1369,7 @@ impl kubert::index::IndexNamespacedResource for Index { parents, backends, statuses: vec![gateway::HTTPRouteStatus { parents: statuses }], + generation: resource.metadata.generation, }; tracing::trace!(?route); // Insert into the index; if the route is already in the index, and it hasn't @@ -1437,6 +1440,7 @@ impl kubert::index::IndexNamespacedResource for Index { parents, backends, statuses: vec![gateway::HTTPRouteStatus { parents: statuses }], + generation: resource.metadata.generation, }; tracing::trace!(?route); // Insert into the index; if the route is already in the index, and it hasn't @@ -1507,6 +1511,7 @@ impl kubert::index::IndexNamespacedResource for Index { parents, backends, statuses: vec![gateway::GRPCRouteStatus { parents: statuses }], + generation: resource.metadata.generation, }; tracing::trace!(?route); // Insert into the index; if the route is already in the index, and it hasn't @@ -1575,6 +1580,7 @@ impl kubert::index::IndexNamespacedResource for Index { let route = RouteRef { parents, backends, + generation: resource.metadata.generation, statuses: vec![gateway::TLSRouteStatus { parents: statuses }], }; tracing::trace!(?route); @@ -1645,6 +1651,7 @@ impl kubert::index::IndexNamespacedResource for Index { parents, backends, statuses: vec![gateway::TCPRouteStatus { parents: statuses }], + generation: resource.metadata.generation, }; tracing::trace!(?route); // Insert into the index; if the route is already in the index, and it hasn't diff --git a/policy-controller/k8s/status/src/tests/conflict.rs b/policy-controller/k8s/status/src/tests/conflict.rs index 87606e2574855..008ee86f1fe62 100644 --- a/policy-controller/k8s/status/src/tests/conflict.rs +++ b/policy-controller/k8s/status/src/tests/conflict.rs @@ -62,6 +62,7 @@ fn grpc_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); index.write().update_http_route( @@ -77,6 +78,7 @@ fn grpc_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); index.write().update_tls_route( @@ -92,6 +94,7 @@ fn grpc_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); index.write().update_tcp_route( @@ -107,6 +110,7 @@ fn grpc_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -143,6 +147,7 @@ fn http_route_conflict_grpc(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -179,6 +184,7 @@ fn http_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); index.write().update_tls_route( @@ -194,6 +200,7 @@ fn http_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); index.write().update_tcp_route( @@ -209,6 +216,7 @@ fn http_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -245,6 +253,7 @@ fn tls_route_conflict_http(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -281,6 +290,7 @@ fn tls_route_conflict_grpc(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -317,6 +327,7 @@ fn tls_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); index.write().update_tcp_route( @@ -332,6 +343,7 @@ fn tls_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -368,6 +380,7 @@ fn tcp_route_conflict_grpc(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -404,6 +417,7 @@ fn tcp_route_conflict_http(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -440,6 +454,7 @@ fn tcp_route_conflict_tls(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, ); @@ -476,6 +491,7 @@ fn tcp_route_no_conflict(p: ParentRefType) { parents: vec![parent.clone()], statuses: vec![], backends: vec![], + generation: None, }, );