Adds predicates to filter Nova reconciliation triggers#1081
Adds predicates to filter Nova reconciliation triggers#1081auniyal61 wants to merge 2 commits intoopenstack-k8s-operators:mainfrom
Conversation
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: auniyal61 The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
950747a to
f67fb79
Compare
| builder.WithPredicates(predicate.GenerationChangedPredicate{})). | ||
| Owns(&novav1.NovaMetadata{}, | ||
| builder.WithPredicates(predicate.GenerationChangedPredicate{})). | ||
| Owns(&rabbitmqv1.TransportURL{}, |
There was a problem hiding this comment.
Before: 34 lines
2026-03-04T07:51:17-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "bee8b9ef-1ac6-416c-8a15-0bd15a4af2b4", "generation": 6, "observedGeneration": 6, "resourceVersion": "4696654"}
2026-03-04T07:51:17-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "fd804df5-9fa8-450d-877d-ca7d37710c54", "generation": 6, "observedGeneration": 6, "resourceVersion": "4697890"}
2026-03-04T07:51:17-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "d8a1ae80-af52-4c08-a259-c31ac14c0c0a", "generation": 6, "observedGeneration": 6, "resourceVersion": "4697938"}
2026-03-04T07:51:19-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "daaacff1-c169-429d-9c76-32d5eb5c4ae7", "generation": 6, "observedGeneration": 6, "resourceVersion": "4697938"}
2026-03-04T07:51:19-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "78885cf3-467f-4fea-b1be-4e6782942ec3", "generation": 6, "observedGeneration": 6, "resourceVersion": "4697969"}
2026-03-04T07:51:20-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "880a5e19-89c0-444d-abc6-5c633b4632d3", "generation": 6, "observedGeneration": 6, "resourceVersion": "4697969"}
2026-03-04T07:51:20-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "6b20f745-e3a6-4faa-af08-e8980256e439", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698016"}
2026-03-04T07:51:21-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "6baa1a91-1dae-4a2d-9a5e-0eed95dbf603", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698016"}
2026-03-04T07:51:21-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "b613b4ad-5c84-4225-a252-d999123a2a99", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698016"}
2026-03-04T07:51:27-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "52de0243-36fa-4a46-b4bb-633f1f3a01c2", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698016"}
2026-03-04T07:51:28-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "59428a05-77bc-4f09-8f0e-ecf1a3376736", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698016"}
2026-03-04T07:51:28-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "e319323b-f8c3-4a54-a1ae-891c2168ba1c", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698150"}
2026-03-04T07:51:32-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "4a6fec77-a602-4832-b65d-10f3e8d1419b", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698150"}
2026-03-04T07:51:32-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "bcc9346c-f97f-4791-baab-2940bae7dde9", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698193"}
2026-03-04T07:51:42-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "ae7bbe33-de89-4cca-b2a3-7f0d0cf5e699", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698193"}
2026-03-04T07:51:42-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "1387dc59-ff2e-4cf7-9cdb-8f8b3c4977e8", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698289"}
2026-03-04T07:52:03-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "3b700914-81a0-4043-9c88-2c6144253457", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698289"}
2026-03-04T07:52:03-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "6a343610-1fdd-4db4-8f4f-3353131a3dbc", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698289"}
2026-03-04T07:52:03-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "f80e4562-3083-4dce-b07f-b35d3a3ff9a4", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698492"}
2026-03-04T07:52:05-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "64a37d20-8304-4d7d-8dee-5ba7104450bf", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698492"}
2026-03-04T07:52:05-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "46dbc126-198a-4b7d-b8b3-b0554eef6116", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698546"}
2026-03-04T07:52:05-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "c4d9ff42-9b32-4af5-bf32-f8d754da4bb0", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698546"}
2026-03-04T07:52:06-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "279d2a7e-429d-45a2-9ad0-5e00a34c1bf6", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698546"}
2026-03-04T07:52:07-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "5fbc7b64-cd2a-46c1-9a66-67a531971aab", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698546"}
2026-03-04T07:52:13-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "5ed6e6a2-24e5-4dca-9240-d2bc0e0cf461", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698546"}
2026-03-04T07:52:13-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "e3c016bf-b7a7-40c0-b839-c2c9d6a82076", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698704"}
2026-03-04T07:52:15-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "499e75ee-208d-4a9f-b54c-829b1de7c1f8", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698704"}
2026-03-04T07:52:16-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "ccb12aef-3d6b-434d-99f7-0230900e2c6d", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698704"}
2026-03-04T07:52:16-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "85387647-e91a-4d5e-b5ff-be702a83f364", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698728"}
2026-03-04T07:52:17-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "38c5bda5-bd93-45c5-a813-e9d12c6a4341", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698728"}
2026-03-04T07:52:17-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "004cb587-7573-4ac7-bccf-30845bd7ec81", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698749"}
2026-03-04T07:52:29-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "e23f34b3-ba80-4513-8e94-612dde34b8f4", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698749"}
2026-03-04T07:52:29-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "93034723-be6e-4006-8e29-f01daf7c3318", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698860"}
===
After: 8 lines
2026-03-04T07:57:11-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "26bb1975-b6bb-4ede-b53c-e4d2a6b36e9e", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698860"}
2026-03-04T07:57:11-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "d57f16a5-4d34-4c6c-ad01-9febb2dbd2b8", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698860"}
2026-03-04T07:57:32-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "2754d9eb-8e12-4a89-be21-30dc2993e982", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698860"}
2026-03-04T07:57:32-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "ac2210a8-c58c-4a3c-b200-38af0220312e", "generation": 6, "observedGeneration": 6, "resourceVersion": "4698860"}
2026-03-04T07:57:33-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "21378bc5-b425-4162-b9bf-875472e43920", "generation": 6, "observedGeneration": 6, "resourceVersion": "4701492"}
2026-03-04T07:58:20-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "0023fbf7-f822-401f-ba5a-73ed8cd9f489", "generation": 6, "observedGeneration": 6, "resourceVersion": "4701492"}
2026-03-04T07:58:20-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "30fd20f9-b45b-4f43-b42f-bb8b579b1515", "generation": 6, "observedGeneration": 6, "resourceVersion": "4701492"}
2026-03-04T07:58:20-05:00 INFO Controllers.Nova XXX - 0 Reconciling Nova {"controller": "nova", "controllerGroup": "nova.openstack.org", "controllerKind": "Nova", "Nova": {"name":"nova","namespace":"openstack"}, "namespace": "openstack", "name": "nova", "reconcileID": "4dba1154-f269-4015-8d6c-2cfbf1bf93c4", "generation": 6, "observedGeneration": 6, "resourceVersion": "4702068"}
|
Build failed (check pipeline). Post https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/f8907b21b5794fba929086ad233fc133 ✔️ openstack-meta-content-provider SUCCESS in 1h 25m 18s |
When a RabbitMQ notification pod restarts, the operator controller is reconciling lot of times (~40+) due to status-only updates from owned resources without any actual change in Nova CR spec The issues occured because Nova is watching all resources without predicates. this change adds inbuilt GenerationChangedPredicate to child CRs (Nova services only) to only reconcile on spec changes, not status-only updates. Related: #OSPRH-26922
Add tests to verify that GenerationChangedPredicate correctly filters status-only updates and prevents unnecessary Nova reconciliations.
|
@auniyal61: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
|
Suggest to wait for #1077 |
|
Build failed (check pipeline). Post https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/bda4985610b14477b469ff06d85ec308 ✔️ openstack-meta-content-provider SUCCESS in 1h 39m 46s |
When a RabbitMQ notification pod restarts, the operator controller is reconciling lot of times (~40+) due to status-only updates from owned resources without any actual change in Nova CR spec
The issues occured because Nova is watching all resources without predicates. this change adds inbuilt GenerationChangedPredicate to child CRs (Nova services only) to only reconcile on spec changes, not status-only updates.
Related: OSPRH-26922