From a29db95ad3d04fce6664fd7c6693f935ac44b328 Mon Sep 17 00:00:00 2001 From: Dario Tranchitella Date: Thu, 6 Aug 2020 21:50:50 +0200 Subject: [PATCH] Updating tenant after adding/removing Namespace (#43) --- controllers/namespace_controller.go | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/controllers/namespace_controller.go b/controllers/namespace_controller.go index 00a487d4..7cf3c3ff 100644 --- a/controllers/namespace_controller.go +++ b/controllers/namespace_controller.go @@ -141,7 +141,10 @@ func (r NamespaceReconciler) Reconcile(request ctrl.Request) (ctrl.Result, error return reconcile.Result{}, err } - r.updateTenantStatus(ns, t) + if err := r.updateTenantStatus(ns, t); err != nil { + r.Log.Error(err, "cannot update Tenant status") + return reconcile.Result{}, err + } r.Log.Info("Namespace reconciliation processed") return reconcile.Result{}, nil @@ -165,11 +168,15 @@ func (r *NamespaceReconciler) ensureLabel(ns *corev1.Namespace, tenantName strin return nil } -func (r *NamespaceReconciler) updateTenantStatus(ns *corev1.Namespace, tenant *v1alpha1.Tenant) { - switch ns.Status.Phase { - case corev1.NamespaceTerminating: - r.removeNamespace(ns.Name, tenant) - case corev1.NamespaceActive: - r.addNamespace(ns.Name, tenant) - } +func (r *NamespaceReconciler) updateTenantStatus(ns *corev1.Namespace, tenant *v1alpha1.Tenant) error { + return retry.RetryOnConflict(retry.DefaultBackoff, func() error { + switch ns.Status.Phase { + case corev1.NamespaceTerminating: + r.removeNamespace(ns.Name, tenant) + case corev1.NamespaceActive: + r.addNamespace(ns.Name, tenant) + } + + return r.Client.Status().Update(context.TODO(), tenant, &client.UpdateOptions{}) + }) }