@@ -28,8 +28,10 @@ import (
2828 configv1 "github.com/openshift/api/config/v1"
2929 routev1 "github.com/openshift/api/route/v1"
3030 monitoringv1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
31+ v1 "k8s.io/api/core/v1"
3132 "k8s.io/client-go/kubernetes"
3233 "sigs.k8s.io/controller-runtime/pkg/cache"
34+ crclient "sigs.k8s.io/controller-runtime/pkg/client"
3335 "sigs.k8s.io/controller-runtime/pkg/client/config"
3436 "sigs.k8s.io/controller-runtime/pkg/manager"
3537 "sigs.k8s.io/controller-runtime/pkg/webhook"
@@ -58,7 +60,10 @@ import (
5860
5961 v1alpha1 "github.com/argoproj-labs/argocd-operator/api/v1alpha1"
6062 v1beta1 "github.com/argoproj-labs/argocd-operator/api/v1beta1"
63+ wc "github.com/argoproj-labs/argocd-operator/pkg/clientwrapper"
6164 "github.com/argoproj-labs/argocd-operator/version"
65+ corev1 "k8s.io/api/core/v1"
66+ toolscache "k8s.io/client-go/tools/cache"
6267 //+kubebuilder:scaffold:imports
6368)
6469
@@ -179,6 +184,12 @@ func main() {
179184 Controller : controllerconfig.Controller {
180185 SkipNameValidation : & skipControllerNameValidation ,
181186 },
187+ Cache : cache.Options {
188+ Scheme : scheme ,
189+ ByObject : map [crclient.Object ]cache.ByObject {
190+ & corev1.Secret {}: {Transform : slimSecret ()},
191+ },
192+ },
182193 }
183194
184195 if watchedNsCache := getDefaultWatchedNamespacesCacheOptions (); watchedNsCache != nil {
@@ -193,6 +204,10 @@ func main() {
193204 os .Exit (1 )
194205 }
195206
207+ liveClient , err := crclient .New (ctrl .GetConfigOrDie (), crclient.Options {Scheme : mgr .GetScheme ()})
208+ client := wc .NewClientWrapper (mgr .GetClient (), liveClient )
209+ //print(client)
210+
196211 setupLog .Info ("Registering Components." )
197212
198213 // Setup Scheme for all resources
@@ -236,7 +251,7 @@ func main() {
236251 os .Exit (1 )
237252 }
238253 if err = (& argocd.ReconcileArgoCD {
239- Client : mgr . GetClient () ,
254+ Client : client ,
240255 Scheme : mgr .GetScheme (),
241256 LabelSelector : labelSelectorFlag ,
242257 K8sClient : k8sClient ,
@@ -248,14 +263,14 @@ func main() {
248263 os .Exit (1 )
249264 }
250265 if err = (& argocdexport.ReconcileArgoCDExport {
251- Client : mgr . GetClient () ,
266+ Client : client ,
252267 Scheme : mgr .GetScheme (),
253268 }).SetupWithManager (mgr ); err != nil {
254269 setupLog .Error (err , "unable to create controller" , "controller" , "ArgoCDExport" )
255270 os .Exit (1 )
256271 }
257272 if err = (& notificationsConfig.NotificationsConfigurationReconciler {
258- Client : mgr . GetClient () ,
273+ Client : client ,
259274 Scheme : mgr .GetScheme (),
260275 }).SetupWithManager (mgr ); err != nil {
261276 setupLog .Error (err , "unable to create controller" , "controller" , "NotificationsConfiguration" )
@@ -338,3 +353,36 @@ func initK8sClient() (*kubernetes.Clientset, error) {
338353
339354 return k8sClient , nil
340355}
356+
357+ func slimSecret () toolscache.TransformFunc {
358+ return func (in interface {}) (interface {}, error ) {
359+ if s , ok := in .(* v1.Secret ); ok {
360+ if isRequiredByOperator (s .Labels ) {
361+ return in , nil
362+ }
363+ out := & v1.Secret {
364+ TypeMeta : s .TypeMeta ,
365+ ObjectMeta : * s .ObjectMeta .DeepCopy (),
366+ Type : s .Type , // keep if you match on it
367+ }
368+ // (Data and StringData intentionally omitted)
369+ // managedFields can also be stripped via DefaultTransform if you set it.
370+ return out , nil
371+ }
372+ return in , nil
373+ }
374+ }
375+
376+ func isRequiredByOperator (labels map [string ]string ) bool {
377+ interestedLabels := []string {
378+ common .ArgoCDTrackedByOperatorLabel ,
379+ common .ArgoCDSecretTypeLabel ,
380+ }
381+
382+ for _ , l := range interestedLabels {
383+ if _ , exists := labels [l ]; exists {
384+ return true
385+ }
386+ }
387+ return false
388+ }
0 commit comments