Skip to content

Commit 950747a

Browse files
committed
Adds predicates to filter Nova reconciliation triggers
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
1 parent d9362aa commit 950747a

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

internal/controller/nova_controller.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ func (r *NovaReconciler) Reconcile(ctx context.Context, req ctrl.Request) (resul
136136
Log.Error(err, "Failed to create lib-common Helper")
137137
return ctrl.Result{}, err
138138
}
139-
Log.Info("Reconciling")
139+
Log.Info("XXX -0 Reconciling")
140140

141141
// Save a copy of the conditions so that we can restore the LastTransitionTime
142142
// when a condition's state doesn't change.
@@ -1824,9 +1824,12 @@ func (r *NovaReconciler) ensureMQ(
18241824
}
18251825

18261826
if k8s_errors.IsNotFound(err) || !transportURL.IsReady() || transportURL.Status.SecretName == "" {
1827+
Log.Info("XXX- 1 EnsureMQ waiting reconciling for transporturl")
18271828
return "", "", false, nova.MQCreating, nil
18281829
}
18291830

1831+
Log.Info("XXX- 1 EnsureMQ READY - transporturl")
1832+
18301833
secretName := types.NamespacedName{Namespace: instance.Namespace, Name: transportURL.Status.SecretName}
18311834

18321835
secret := &corev1.Secret{}
@@ -2341,12 +2344,18 @@ func (r *NovaReconciler) SetupWithManager(mgr ctrl.Manager) error {
23412344
Owns(&mariadbv1.MariaDBDatabase{}).
23422345
Owns(&mariadbv1.MariaDBAccount{}).
23432346
Owns(&keystonev1.KeystoneService{}).
2344-
Owns(&novav1.NovaAPI{}).
2345-
Owns(&novav1.NovaScheduler{}).
2346-
Owns(&novav1.NovaCell{}).
2347-
Owns(&novav1.NovaMetadata{}).
2347+
Owns(&novav1.NovaAPI{},
2348+
builder.WithPredicates(predicate.GenerationChangedPredicate{})).
2349+
Owns(&novav1.NovaScheduler{},
2350+
builder.WithPredicates(predicate.GenerationChangedPredicate{})).
2351+
Owns(&novav1.NovaCell{},
2352+
builder.WithPredicates(predicate.GenerationChangedPredicate{})).
2353+
Owns(&novav1.NovaConductor{},
2354+
builder.WithPredicates(predicate.GenerationChangedPredicate{})).
2355+
Owns(&novav1.NovaMetadata{},
2356+
builder.WithPredicates(predicate.GenerationChangedPredicate{})).
23482357
Owns(&rabbitmqv1.TransportURL{},
2349-
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{})).
2358+
builder.WithPredicates(predicate.GenerationChangedPredicate{})).
23502359
Owns(&batchv1.Job{}).
23512360
Owns(&corev1.ServiceAccount{}).
23522361
Owns(&rbacv1.Role{}).

0 commit comments

Comments
 (0)