diff --git a/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_controller.go b/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_controller.go index 526b1059c8..2b6a64ca13 100644 --- a/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_controller.go +++ b/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_controller.go @@ -35,7 +35,7 @@ type InfisicalPushSecretReconciler struct { Scheme *runtime.Scheme } -var resourceVariablesMap map[string]util.ResourceVariables +var infisicalPushSecretResourceVariablesMap map[string]util.ResourceVariables = make(map[string]util.ResourceVariables) func (r *InfisicalPushSecretReconciler) GetLogger(req ctrl.Request) logr.Logger { return r.BaseLogger.WithValues("infisicalpushsecret", req.NamespacedName) @@ -61,10 +61,6 @@ func (r *InfisicalPushSecretReconciler) Reconcile(ctx context.Context, req ctrl. var infisicalPushSecretCR secretsv1alpha1.InfisicalPushSecret requeueTime := time.Minute // seconds - if resourceVariablesMap == nil { - resourceVariablesMap = make(map[string]util.ResourceVariables) - } - err := r.Get(ctx, req.NamespacedName, &infisicalPushSecretCR) if err != nil { if errors.IsNotFound(err) { @@ -185,10 +181,30 @@ func (r *InfisicalPushSecretReconciler) SetupWithManager(mgr ctrl.Manager) error specChangeOrDelete := predicate.Funcs{ UpdateFunc: func(e event.UpdateEvent) bool { // Only reconcile if spec/generation changed - return e.ObjectOld.GetGeneration() != e.ObjectNew.GetGeneration() + + isSpecOrGenerationChange := e.ObjectOld.GetGeneration() != e.ObjectNew.GetGeneration() + + if isSpecOrGenerationChange { + if infisicalPushSecretResourceVariablesMap != nil { + if rv, ok := infisicalPushSecretResourceVariablesMap[string(e.ObjectNew.GetUID())]; ok { + rv.CancelCtx() + delete(infisicalPushSecretResourceVariablesMap, string(e.ObjectNew.GetUID())) + } + } + } + + return isSpecOrGenerationChange }, DeleteFunc: func(e event.DeleteEvent) bool { // Always reconcile on deletion + + if infisicalPushSecretResourceVariablesMap != nil { + if rv, ok := infisicalPushSecretResourceVariablesMap[string(e.Object.GetUID())]; ok { + rv.CancelCtx() + delete(infisicalPushSecretResourceVariablesMap, string(e.Object.GetUID())) + } + } + return true }, CreateFunc: func(e event.CreateEvent) bool { diff --git a/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_helper.go b/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_helper.go index a13452b692..0ab0ab876b 100644 --- a/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_helper.go +++ b/k8-operator/controllers/infisicalpushsecret/infisicalpushsecret_helper.go @@ -71,7 +71,7 @@ func (r *InfisicalPushSecretReconciler) getResourceVariables(infisicalPushSecret var resourceVariables util.ResourceVariables - if _, ok := resourceVariablesMap[string(infisicalPushSecret.UID)]; !ok { + if _, ok := infisicalPushSecretResourceVariablesMap[string(infisicalPushSecret.UID)]; !ok { ctx, cancel := context.WithCancel(context.Background()) @@ -81,16 +81,16 @@ func (r *InfisicalPushSecretReconciler) getResourceVariables(infisicalPushSecret UserAgent: api.USER_AGENT_NAME, }) - resourceVariablesMap[string(infisicalPushSecret.UID)] = util.ResourceVariables{ + infisicalPushSecretResourceVariablesMap[string(infisicalPushSecret.UID)] = util.ResourceVariables{ InfisicalClient: client, CancelCtx: cancel, AuthDetails: util.AuthenticationDetails{}, } - resourceVariables = resourceVariablesMap[string(infisicalPushSecret.UID)] + resourceVariables = infisicalPushSecretResourceVariablesMap[string(infisicalPushSecret.UID)] } else { - resourceVariables = resourceVariablesMap[string(infisicalPushSecret.UID)] + resourceVariables = infisicalPushSecretResourceVariablesMap[string(infisicalPushSecret.UID)] } return resourceVariables @@ -98,7 +98,7 @@ func (r *InfisicalPushSecretReconciler) getResourceVariables(infisicalPushSecret } func (r *InfisicalPushSecretReconciler) updateResourceVariables(infisicalPushSecret v1alpha1.InfisicalPushSecret, resourceVariables util.ResourceVariables) { - resourceVariablesMap[string(infisicalPushSecret.UID)] = resourceVariables + infisicalPushSecretResourceVariablesMap[string(infisicalPushSecret.UID)] = resourceVariables } func (r *InfisicalPushSecretReconciler) ReconcileInfisicalPushSecret(ctx context.Context, logger logr.Logger, infisicalPushSecret v1alpha1.InfisicalPushSecret) error { diff --git a/k8-operator/controllers/infisicalsecret/infisicalsecret_controller.go b/k8-operator/controllers/infisicalsecret/infisicalsecret_controller.go index 8b55088581..97d13c6891 100644 --- a/k8-operator/controllers/infisicalsecret/infisicalsecret_controller.go +++ b/k8-operator/controllers/infisicalsecret/infisicalsecret_controller.go @@ -27,7 +27,13 @@ type InfisicalSecretReconciler struct { Scheme *runtime.Scheme } -var resourceVariablesMap map[string]util.ResourceVariables = make(map[string]util.ResourceVariables) +const FINALIZER_NAME = "secrets.finalizers.infisical.com" + +var infisicalSecretResourceVariablesMap map[string]util.ResourceVariables = make(map[string]util.ResourceVariables) + +func (r *InfisicalSecretReconciler) GetLogger(req ctrl.Request) logr.Logger { + return r.BaseLogger.WithValues("infisicalsecret", req.NamespacedName) +} //+kubebuilder:rbac:groups=secrets.infisical.com,resources=infisicalsecrets,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=secrets.infisical.com,resources=infisicalsecrets/status,verbs=get;update;patch @@ -42,15 +48,6 @@ var resourceVariablesMap map[string]util.ResourceVariables = make(map[string]uti // For more details, check Reconcile and its Result here: // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.13.1/pkg/reconcile -const FINALIZER_NAME = "secrets.finalizers.infisical.com" - -// Maps the infisicalSecretCR.UID to a infisicalSdk.InfisicalClientInterface and AuthenticationDetails. -// var resourceVariablesMap = make(map[string]ResourceVariables) - -func (r *InfisicalSecretReconciler) GetLogger(req ctrl.Request) logr.Logger { - return r.BaseLogger.WithValues("infisicalsecret", req.NamespacedName) -} - func (r *InfisicalSecretReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { logger := r.GetLogger(req) @@ -58,10 +55,6 @@ func (r *InfisicalSecretReconciler) Reconcile(ctx context.Context, req ctrl.Requ var infisicalSecretCR secretsv1alpha1.InfisicalSecret requeueTime := time.Minute // seconds - if resourceVariablesMap == nil { - resourceVariablesMap = make(map[string]util.ResourceVariables) - } - err := r.Get(ctx, req.NamespacedName, &infisicalSecretCR) if err != nil { if errors.IsNotFound(err) { @@ -163,19 +156,19 @@ func (r *InfisicalSecretReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&secretsv1alpha1.InfisicalSecret{}, builder.WithPredicates(predicate.Funcs{ UpdateFunc: func(e event.UpdateEvent) bool { - if resourceVariablesMap != nil { - if rv, ok := resourceVariablesMap[string(e.ObjectNew.GetUID())]; ok { + if infisicalSecretResourceVariablesMap != nil { + if rv, ok := infisicalSecretResourceVariablesMap[string(e.ObjectNew.GetUID())]; ok { rv.CancelCtx() - delete(resourceVariablesMap, string(e.ObjectNew.GetUID())) + delete(infisicalSecretResourceVariablesMap, string(e.ObjectNew.GetUID())) } } return true }, DeleteFunc: func(e event.DeleteEvent) bool { - if resourceVariablesMap != nil { - if rv, ok := resourceVariablesMap[string(e.Object.GetUID())]; ok { + if infisicalSecretResourceVariablesMap != nil { + if rv, ok := infisicalSecretResourceVariablesMap[string(e.Object.GetUID())]; ok { rv.CancelCtx() - delete(resourceVariablesMap, string(e.Object.GetUID())) + delete(infisicalSecretResourceVariablesMap, string(e.Object.GetUID())) } } return true diff --git a/k8-operator/controllers/infisicalsecret/infisicalsecret_helper.go b/k8-operator/controllers/infisicalsecret/infisicalsecret_helper.go index 7b9f8be933..28a9843c90 100644 --- a/k8-operator/controllers/infisicalsecret/infisicalsecret_helper.go +++ b/k8-operator/controllers/infisicalsecret/infisicalsecret_helper.go @@ -296,7 +296,7 @@ func (r *InfisicalSecretReconciler) getResourceVariables(infisicalSecret v1alpha var resourceVariables util.ResourceVariables - if _, ok := resourceVariablesMap[string(infisicalSecret.UID)]; !ok { + if _, ok := infisicalSecretResourceVariablesMap[string(infisicalSecret.UID)]; !ok { ctx, cancel := context.WithCancel(context.Background()) @@ -306,16 +306,16 @@ func (r *InfisicalSecretReconciler) getResourceVariables(infisicalSecret v1alpha UserAgent: api.USER_AGENT_NAME, }) - resourceVariablesMap[string(infisicalSecret.UID)] = util.ResourceVariables{ + infisicalSecretResourceVariablesMap[string(infisicalSecret.UID)] = util.ResourceVariables{ InfisicalClient: client, CancelCtx: cancel, AuthDetails: util.AuthenticationDetails{}, } - resourceVariables = resourceVariablesMap[string(infisicalSecret.UID)] + resourceVariables = infisicalSecretResourceVariablesMap[string(infisicalSecret.UID)] } else { - resourceVariables = resourceVariablesMap[string(infisicalSecret.UID)] + resourceVariables = infisicalSecretResourceVariablesMap[string(infisicalSecret.UID)] } return resourceVariables @@ -323,7 +323,7 @@ func (r *InfisicalSecretReconciler) getResourceVariables(infisicalSecret v1alpha } func (r *InfisicalSecretReconciler) updateResourceVariables(infisicalSecret v1alpha1.InfisicalSecret, resourceVariables util.ResourceVariables) { - resourceVariablesMap[string(infisicalSecret.UID)] = resourceVariables + infisicalSecretResourceVariablesMap[string(infisicalSecret.UID)] = resourceVariables } func (r *InfisicalSecretReconciler) ReconcileInfisicalSecret(ctx context.Context, logger logr.Logger, infisicalSecret v1alpha1.InfisicalSecret) error {