From 1b171ee34b933e724048639cb69ffdb6d18cf552 Mon Sep 17 00:00:00 2001 From: travisn Date: Fri, 19 Jan 2024 14:49:44 -0700 Subject: [PATCH] exporter: skip reconcile on exporter deletion The exporter pod is ephemeral and frequently being deleted and re-created when ceph daemons are created. Therefore, we need to skip reconciling based on the deletion of the exporter deployment. Signed-off-by: travisn (cherry picked from commit 995a64fb3a2a35e26f6f5d3141ef6e966c2e429c) --- pkg/operator/ceph/controller/predicate.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/pkg/operator/ceph/controller/predicate.go b/pkg/operator/ceph/controller/predicate.go index 4eec479ab..3f633702c 100644 --- a/pkg/operator/ceph/controller/predicate.go +++ b/pkg/operator/ceph/controller/predicate.go @@ -521,8 +521,8 @@ func WatchPredicateForNonCRDObject(owner runtime.Object, scheme *runtime.Scheme) return false } - // If the resource is a canary deployment we don't reconcile because it's ephemeral - if isCanary(e.Object) || isCrashCollector(e.Object) { + // If the resource is a canary, crash collector, or exporter we don't reconcile because it's ephemeral + if isCanary(e.Object) || isCrashCollector(e.Object) || isExporter(e.Object) { return false } @@ -693,6 +693,14 @@ func isCanary(obj runtime.Object) bool { } func isCrashCollector(obj runtime.Object) bool { + return isDeployment(obj, "rook-ceph-crashcollector") +} + +func isExporter(obj runtime.Object) bool { + return isDeployment(obj, "rook-ceph-exporter") +} + +func isDeployment(obj runtime.Object, appName string) bool { // If not a deployment, let's not reconcile d, ok := obj.(*appsv1.Deployment) if !ok { @@ -703,8 +711,8 @@ func isCrashCollector(obj runtime.Object) bool { labels := d.GetLabels() labelVal, labelKeyExist := labels["app"] - if labelKeyExist && labelVal == "rook-ceph-crashcollector" { - logger.Debugf("do not reconcile %q on crash collectors", d.Name) + if labelKeyExist && labelVal == appName { + logger.Debugf("do not reconcile %q on %s", d.Name, appName) return true }