From 206baddbc9c0365d5d5cb7554bdba51b39666aed Mon Sep 17 00:00:00 2001 From: Kyle Wuolle Date: Thu, 30 Jan 2025 14:29:30 -0800 Subject: [PATCH] Fixed an issue where the provider templates depend on the management object and the management object depends on the provider templates making it impossible to deploy kcm with the create management flag set to false. Resolves issue https://github.com/k0rdent/kcm/issues/940 --- cmd/main.go | 5 +++-- internal/controller/release_controller.go | 5 +---- internal/controller/template_controller.go | 17 +++-------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 81a624e7..b24de47c 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -219,8 +219,9 @@ func main() { currentNamespace := utils.CurrentNamespace() templateReconciler := controller.TemplateReconciler{ - Client: mgr.GetClient(), - SystemNamespace: currentNamespace, + Client: mgr.GetClient(), + CreateManagement: createManagement, + SystemNamespace: currentNamespace, DefaultRegistryConfig: helm.DefaultRegistryConfig{ URL: defaultRegistryURL, RepoType: determinedRepositoryType, diff --git a/internal/controller/release_controller.go b/internal/controller/release_controller.go index f7675503..0ba5df3c 100644 --- a/internal/controller/release_controller.go +++ b/internal/controller/release_controller.go @@ -389,10 +389,7 @@ func (r *ReleaseReconciler) SetupWithManager(mgr ctrl.Manager) error { if err != nil { return err } - // - if !r.CreateManagement { - return nil - } + // There's no Release objects created yet and we need to trigger reconcile initChannel := make(chan event.GenericEvent, 1) initChannel <- event.GenericEvent{Object: &kcm.Release{}} diff --git a/internal/controller/template_controller.go b/internal/controller/template_controller.go index 70238f3a..b2f665ec 100644 --- a/internal/controller/template_controller.go +++ b/internal/controller/template_controller.go @@ -52,6 +52,7 @@ type TemplateReconciler struct { SystemNamespace string DefaultRegistryConfig helm.DefaultRegistryConfig + CreateManagement bool } type ClusterTemplateReconciler struct { @@ -83,10 +84,6 @@ func (r *ClusterTemplateReconciler) Reconcile(ctx context.Context, req ctrl.Requ management, err := r.getManagement(ctx, clusterTemplate) if err != nil { - if apierrors.IsNotFound(err) { - l.Info("Management is not created yet, retrying") - return ctrl.Result{RequeueAfter: defaultRequeueTime}, nil - } return ctrl.Result{}, err } if !management.DeletionTimestamp.IsZero() { @@ -137,10 +134,6 @@ func (r *ServiceTemplateReconciler) Reconcile(ctx context.Context, req ctrl.Requ management, err := r.getManagement(ctx, serviceTemplate) if err != nil { - if apierrors.IsNotFound(err) { - l.Info("Management is not created yet, retrying") - return ctrl.Result{RequeueAfter: defaultRequeueTime}, nil - } return ctrl.Result{}, err } if !management.DeletionTimestamp.IsZero() { @@ -174,14 +167,10 @@ func (r *ProviderTemplateReconciler) Reconcile(ctx context.Context, req ctrl.Req } management, err := r.getManagement(ctx, providerTemplate) - if err != nil { - if apierrors.IsNotFound(err) { - l.Info("Management is not created yet, retrying") - return ctrl.Result{RequeueAfter: defaultRequeueTime}, nil - } + if r.CreateManagement && err != nil { return ctrl.Result{}, err } - if !management.DeletionTimestamp.IsZero() { + if management != nil && !management.DeletionTimestamp.IsZero() { l.Info("Management is being deleted, skipping ProviderTemplate reconciliation") return ctrl.Result{}, nil }