@@ -11,7 +11,6 @@ import (
11
11
"sync"
12
12
"time"
13
13
14
- "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/internal/alongside"
15
14
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/labeller"
16
15
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/validatingroundtripper"
17
16
errorwrap "github.com/pkg/errors"
@@ -187,6 +186,11 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
187
186
return nil , err
188
187
}
189
188
189
+ canFilter , err := labeller .Validate (ctx , logger , metadataClient )
190
+ if err != nil {
191
+ return nil , err
192
+ }
193
+
190
194
// Allocate the new instance of an Operator.
191
195
op := & Operator {
192
196
Operator : queueOperator ,
@@ -363,7 +367,14 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
363
367
}
364
368
365
369
// Wire k8s sharedIndexInformers
366
- k8sInformerFactory := informers .NewSharedInformerFactoryWithOptions (op .opClient .KubernetesInterface (), resyncPeriod ())
370
+ k8sInformerFactory := informers .NewSharedInformerFactoryWithOptions (op .opClient .KubernetesInterface (), resyncPeriod (), func () []informers.SharedInformerOption {
371
+ if ! canFilter {
372
+ return nil
373
+ }
374
+ return []informers.SharedInformerOption {informers .WithTweakListOptions (func (options * metav1.ListOptions ) {
375
+ options .LabelSelector = labels .SelectorFromSet (labels.Set {install .OLMManagedLabelKey : install .OLMManagedLabelValue }).String ()
376
+ })}
377
+ }()... )
367
378
sharedIndexInformers := []cache.SharedIndexInformer {}
368
379
369
380
// Wire Roles
@@ -392,8 +403,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
392
403
return nil
393
404
}
394
405
395
- if err := labelObjects (rbacv1 .SchemeGroupVersion .WithResource ("roles" ), roleInformer .Informer (), labeller .ObjectLabeler [* rbacv1.Role , * rbacv1applyconfigurations.RoleApplyConfiguration ](
396
- ctx , op .logger , labeller .HasOLMOwnerRef ,
406
+ rolesgvk := rbacv1 .SchemeGroupVersion .WithResource ("roles" )
407
+ if err := labelObjects (rolesgvk , roleInformer .Informer (), labeller .ObjectLabeler [* rbacv1.Role , * rbacv1applyconfigurations.RoleApplyConfiguration ](
408
+ ctx , op .logger , labeller .Filter (rolesgvk ),
397
409
rbacv1applyconfigurations .Role ,
398
410
func (namespace string , ctx context.Context , cfg * rbacv1applyconfigurations.RoleApplyConfiguration , opts metav1.ApplyOptions ) (* rbacv1.Role , error ) {
399
411
return op .opClient .KubernetesInterface ().RbacV1 ().Roles (namespace ).Apply (ctx , cfg , opts )
@@ -407,8 +419,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
407
419
op .lister .RbacV1 ().RegisterRoleBindingLister (metav1 .NamespaceAll , roleBindingInformer .Lister ())
408
420
sharedIndexInformers = append (sharedIndexInformers , roleBindingInformer .Informer ())
409
421
410
- if err := labelObjects (rbacv1 .SchemeGroupVersion .WithResource ("rolebindings" ), roleBindingInformer .Informer (), labeller .ObjectLabeler [* rbacv1.RoleBinding , * rbacv1applyconfigurations.RoleBindingApplyConfiguration ](
411
- ctx , op .logger , labeller .HasOLMOwnerRef ,
422
+ rolebindingsgvk := rbacv1 .SchemeGroupVersion .WithResource ("rolebindings" )
423
+ if err := labelObjects (rolebindingsgvk , roleBindingInformer .Informer (), labeller .ObjectLabeler [* rbacv1.RoleBinding , * rbacv1applyconfigurations.RoleBindingApplyConfiguration ](
424
+ ctx , op .logger , labeller .Filter (rolebindingsgvk ),
412
425
rbacv1applyconfigurations .RoleBinding ,
413
426
func (namespace string , ctx context.Context , cfg * rbacv1applyconfigurations.RoleBindingApplyConfiguration , opts metav1.ApplyOptions ) (* rbacv1.RoleBinding , error ) {
414
427
return op .opClient .KubernetesInterface ().RbacV1 ().RoleBindings (namespace ).Apply (ctx , cfg , opts )
@@ -422,10 +435,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
422
435
op .lister .CoreV1 ().RegisterServiceAccountLister (metav1 .NamespaceAll , serviceAccountInformer .Lister ())
423
436
sharedIndexInformers = append (sharedIndexInformers , serviceAccountInformer .Informer ())
424
437
425
- if err := labelObjects (corev1 .SchemeGroupVersion .WithResource ("serviceaccounts" ), serviceAccountInformer .Informer (), labeller .ObjectLabeler [* corev1.ServiceAccount , * corev1applyconfigurations.ServiceAccountApplyConfiguration ](
426
- ctx , op .logger , func (object metav1.Object ) bool {
427
- return labeller .HasOLMOwnerRef (object ) || labeller .HasOLMLabel (object )
428
- },
438
+ serviceaccountsgvk := corev1 .SchemeGroupVersion .WithResource ("serviceaccounts" )
439
+ if err := labelObjects (serviceaccountsgvk , serviceAccountInformer .Informer (), labeller .ObjectLabeler [* corev1.ServiceAccount , * corev1applyconfigurations.ServiceAccountApplyConfiguration ](
440
+ ctx , op .logger , labeller .Filter (serviceaccountsgvk ),
429
441
corev1applyconfigurations .ServiceAccount ,
430
442
func (namespace string , ctx context.Context , cfg * corev1applyconfigurations.ServiceAccountApplyConfiguration , opts metav1.ApplyOptions ) (* corev1.ServiceAccount , error ) {
431
443
return op .opClient .KubernetesInterface ().CoreV1 ().ServiceAccounts (namespace ).Apply (ctx , cfg , opts )
@@ -440,8 +452,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
440
452
sharedIndexInformers = append (sharedIndexInformers , serviceInformer .Informer ())
441
453
442
454
// TODO(skuznets): some services don't seem to have any marker to key off of, but they match the operator name
443
- if err := labelObjects (corev1 .SchemeGroupVersion .WithResource ("services" ), serviceInformer .Informer (), labeller .ObjectLabeler [* corev1.Service , * corev1applyconfigurations.ServiceApplyConfiguration ](
444
- ctx , op .logger , labeller .HasOLMOwnerRef ,
455
+ servicesgvk := corev1 .SchemeGroupVersion .WithResource ("services" )
456
+ if err := labelObjects (servicesgvk , serviceInformer .Informer (), labeller .ObjectLabeler [* corev1.Service , * corev1applyconfigurations.ServiceApplyConfiguration ](
457
+ ctx , op .logger , labeller .Filter (servicesgvk ),
445
458
corev1applyconfigurations .Service ,
446
459
func (namespace string , ctx context.Context , cfg * corev1applyconfigurations.ServiceApplyConfiguration , opts metav1.ApplyOptions ) (* corev1.Service , error ) {
447
460
return op .opClient .KubernetesInterface ().CoreV1 ().Services (namespace ).Apply (ctx , cfg , opts )
@@ -464,15 +477,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
464
477
op .lister .CoreV1 ().RegisterPodLister (metav1 .NamespaceAll , csPodInformer .Lister ())
465
478
sharedIndexInformers = append (sharedIndexInformers , csPodInformer .Informer ())
466
479
467
- if err := labelObjects (corev1 .SchemeGroupVersion .WithResource ("pods" ), csPodInformer .Informer (), labeller .ObjectLabeler [* corev1.Pod , * corev1applyconfigurations.PodApplyConfiguration ](
468
- ctx , op .logger , func (object metav1.Object ) bool {
469
- if labels := object .GetLabels (); labels != nil {
470
- if _ , ok := labels [reconciler .CatalogSourceLabelKey ]; ok {
471
- return true
472
- }
473
- }
474
- return false
475
- },
480
+ podsgvk := corev1 .SchemeGroupVersion .WithResource ("pods" )
481
+ if err := labelObjects (podsgvk , csPodInformer .Informer (), labeller .ObjectLabeler [* corev1.Pod , * corev1applyconfigurations.PodApplyConfiguration ](
482
+ ctx , op .logger , labeller .Filter (podsgvk ),
476
483
corev1applyconfigurations .Pod ,
477
484
func (namespace string , ctx context.Context , cfg * corev1applyconfigurations.PodApplyConfiguration , opts metav1.ApplyOptions ) (* corev1.Pod , error ) {
478
485
return op .opClient .KubernetesInterface ().CoreV1 ().Pods (namespace ).Apply (ctx , cfg , opts )
@@ -505,19 +512,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
505
512
jobInformer := k8sInformerFactory .Batch ().V1 ().Jobs ()
506
513
sharedIndexInformers = append (sharedIndexInformers , jobInformer .Informer ())
507
514
508
- if err := labelObjects (batchv1 .SchemeGroupVersion .WithResource ("jobs" ), jobInformer .Informer (), labeller .ObjectLabeler [* batchv1.Job , * batchv1applyconfigurations.JobApplyConfiguration ](
509
- ctx , op .logger , func (object metav1.Object ) bool {
510
- job , ok := object .(* batchv1.Job )
511
- if ! ok {
512
- return false
513
- }
514
- for _ , container := range job .Spec .Template .Spec .Containers {
515
- if strings .Join (container .Command [0 :3 ], " " ) == "opm alpha bundle extract" {
516
- return true
517
- }
518
- }
519
- return false
520
- },
515
+ jobsgvk := batchv1 .SchemeGroupVersion .WithResource ("jobs" )
516
+ if err := labelObjects (jobsgvk , jobInformer .Informer (), labeller .ObjectLabeler [* batchv1.Job , * batchv1applyconfigurations.JobApplyConfiguration ](
517
+ ctx , op .logger , labeller .Filter (jobsgvk ),
521
518
batchv1applyconfigurations .Job ,
522
519
func (namespace string , ctx context.Context , cfg * batchv1applyconfigurations.JobApplyConfiguration , opts metav1.ApplyOptions ) (* batchv1.Job , error ) {
523
520
return op .opClient .KubernetesInterface ().BatchV1 ().Jobs (namespace ).Apply (ctx , cfg , opts )
@@ -590,15 +587,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
590
587
return nil , err
591
588
}
592
589
593
- if err := labelObjects (apiextensionsv1 .SchemeGroupVersion .WithResource ("customresourcedefinitions" ), crdInformer , labeller .ObjectPatchLabeler [* apiextensionsv1.CustomResourceDefinition ](
594
- ctx , op .logger , func (object metav1.Object ) bool {
595
- for key := range object .GetAnnotations () {
596
- if strings .HasPrefix (key , alongside .AnnotationPrefix ) {
597
- return true
598
- }
599
- }
600
- return false
601
- },
590
+ customresourcedefinitionsgvk := apiextensionsv1 .SchemeGroupVersion .WithResource ("customresourcedefinitions" )
591
+ if err := labelObjects (customresourcedefinitionsgvk , crdInformer , labeller .ObjectPatchLabeler [* apiextensionsv1.CustomResourceDefinition ](
592
+ ctx , op .logger , labeller .Filter (customresourcedefinitionsgvk ),
602
593
op .opClient .ApiextensionsInterface ().ApiextensionsV1 ().CustomResourceDefinitions ().Patch ,
603
594
)); err != nil {
604
595
return nil , err
0 commit comments