diff --git a/pkg/controllers/projectquota/projectquota_controller.go b/pkg/controllers/projectquota/projectquota_controller.go index 791d86bef7..5ee87ed437 100644 --- a/pkg/controllers/projectquota/projectquota_controller.go +++ b/pkg/controllers/projectquota/projectquota_controller.go @@ -18,6 +18,7 @@ package projectquota import ( "context" + "errors" "fmt" "sort" "strings" @@ -373,17 +374,17 @@ func (r *ProjectQuotaReconciler) SetupWithManager(mgr ctrl.Manager) (*ProjectQuo return r, nil } -func (r *ProjectQuotaReconciler) StartWatcher(rid kmapi.ResourceID) { +func (r *ProjectQuotaReconciler) StartWatcher(rid kmapi.ResourceID) error { r.mu.Lock() defer r.mu.Unlock() if r.ctrl == nil { - klog.Fatalln("ProjectQuota reconciler is not setup yet!") + return errors.New("ProjectQuota reconciler is not setup yet") } gvk := rid.GroupVersionKind() if gvk.Kind == "" { - klog.Fatalln("can't start ProjectQuota reconciler for unknown Kind!") + return fmt.Errorf("can't start ProjectQuota reconciler for unknown Kind of resource %s", rid.GroupResource()) } if api.IsRegistered(gvk) && !r.regTypes[gvk] { @@ -396,10 +397,11 @@ func (r *ProjectQuotaReconciler) StartWatcher(rid kmapi.ResourceID) { handler.EnqueueRequestsFromMapFunc(ProjectQuotaForObjects(r.Client))), ) if err != nil { - klog.Fatalln(err) + return fmt.Errorf("failed to start ProjectQuota watcher for %s: %w", gvk, err) } r.regTypes[gvk] = true } + return nil } // Obj -> ProjectQuota diff --git a/pkg/graph/setup.go b/pkg/graph/setup.go index 21ebc99748..8da6f39acf 100644 --- a/pkg/graph/setup.go +++ b/pkg/graph/setup.go @@ -103,7 +103,9 @@ func PollNewResourceTypes(cfg *restclient.Config, pqr *projectquotacontroller.Pr resourceTracker[gvk] = rid resourceChannel <- rid if pqr != nil { - pqr.StartWatcher(rid) + if err := pqr.StartWatcher(rid); err != nil { + klog.ErrorS(err, "failed to start ProjectQuota watcher", "gvk", gvk) + } } } }