You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add transport URL secret rotation on top of applied-input correlation
Builds on "Correlate Watcher readiness with applied input" (#434), which
adds AppliedInputSecretHash to the sub-CRs and releases the application-
credential consumer finalizer only once every sub-service has provably
rolled out. This commit extends the same guarantee to the RabbitMQ
transport URL and notification transport URL secrets, so infra-operator
cannot revoke a transport credential still in use by running pods.
Changes:
1. Add a openstack.org/watcher-transport-consumer finalizer to the current
transport URL secret (and the notification transport URL secret when
notifications are enabled) early in reconcile, via
object.ManageSecretConsumerFinalizer. Status.TransportURLSecret /
Status.NotificationsTransportURLSecret are set for first-time setup only;
during rotation they are updated solely by FinalizeSecretRotation.
2. At the end of reconcile, release the old secret's finalizer with
object.FinalizeSecretRotation, guarded by the existing allServicesReady
correlation (Generation == ObservedGeneration && AppliedInputSecretHash
matches && sub-CR ready). The transport and AC secrets share the same
guard, so nothing is released until every child is rolled out.
3. When notifications are disabled, remove the finalizer from the tracked
notification secret and clear the status.
4. Use the lib-common statefulset.IsReadyForInput helper in the sub-CR
controllers instead of the local statefulSetReadyForInput, and pin
lib-common to the fork commit carrying IsReadyForInput /
FinalizeSecretRotation while the lib-common PR is in review.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
0 commit comments