From cfff91f7f4ac8001b98488e2c97dc0b47558d9e7 Mon Sep 17 00:00:00 2001 From: Aleksandr Rybolovlev Date: Mon, 26 Feb 2024 10:41:02 +0100 Subject: [PATCH] Update controller predicates to make them more flexible and independent (#343) --- controllers/agentpool_controller.go | 3 ++- controllers/module_controller.go | 3 ++- controllers/predicates.go | 5 ++++- controllers/project_controller.go | 3 ++- controllers/workspace_controller.go | 3 ++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/controllers/agentpool_controller.go b/controllers/agentpool_controller.go index 446b668c..8f9e3802 100644 --- a/controllers/agentpool_controller.go +++ b/controllers/agentpool_controller.go @@ -22,6 +22,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" "github.com/go-logr/logr" tfc "github.com/hashicorp/go-tfe" @@ -112,7 +113,7 @@ func (r *AgentPoolReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( func (r *AgentPoolReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&appv1alpha2.AgentPool{}). - WithEventFilter(handlePredicates()). + WithEventFilter(predicate.Or(genericPredicates())). Complete(r) } diff --git a/controllers/module_controller.go b/controllers/module_controller.go index 3eceb575..1a57f963 100644 --- a/controllers/module_controller.go +++ b/controllers/module_controller.go @@ -23,6 +23,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" "github.com/go-logr/logr" "github.com/hashicorp/go-slug" @@ -133,7 +134,7 @@ func (r *ModuleReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr func (r *ModuleReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&appv1alpha2.Module{}). - WithEventFilter(handlePredicates()). + WithEventFilter(predicate.Or(genericPredicates())). Complete(r) } diff --git a/controllers/predicates.go b/controllers/predicates.go index 90e78f5c..863bf7f9 100644 --- a/controllers/predicates.go +++ b/controllers/predicates.go @@ -10,7 +10,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/predicate" ) -func handlePredicates() predicate.Predicate { +// genericPredicates return predicates that are common for all controllers. +// Controller specific predicates should be named Predicates. +// For example: workspacePredicates(). +func genericPredicates() predicate.Predicate { return predicate.Funcs{ CreateFunc: func(e event.CreateEvent) bool { return true diff --git a/controllers/project_controller.go b/controllers/project_controller.go index 3dbedbf5..6dec142e 100644 --- a/controllers/project_controller.go +++ b/controllers/project_controller.go @@ -23,6 +23,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" appv1alpha2 "github.com/hashicorp/terraform-cloud-operator/api/v1alpha2" ) @@ -171,7 +172,7 @@ func (r *ProjectReconciler) getTerraformClient(ctx context.Context, p *projectIn func (r *ProjectReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&appv1alpha2.Project{}). - WithEventFilter(handlePredicates()). + WithEventFilter(predicate.Or(genericPredicates())). Complete(r) } diff --git a/controllers/workspace_controller.go b/controllers/workspace_controller.go index f6efe69b..52644884 100644 --- a/controllers/workspace_controller.go +++ b/controllers/workspace_controller.go @@ -21,6 +21,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/predicate" "github.com/go-logr/logr" @@ -119,7 +120,7 @@ func (r *WorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( func (r *WorkspaceReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&appv1alpha2.Workspace{}). - WithEventFilter(handlePredicates()). + WithEventFilter(predicate.Or(genericPredicates())). Complete(r) }