@@ -11,8 +11,6 @@ import (
11
11
"sync"
12
12
"time"
13
13
14
- k8serrors "k8s.io/apimachinery/pkg/api/errors"
15
-
16
14
errorwrap "github.com/pkg/errors"
17
15
"github.com/sirupsen/logrus"
18
16
"google.golang.org/grpc/connectivity"
@@ -23,6 +21,7 @@ import (
23
21
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
24
22
"k8s.io/apiextensions-apiserver/pkg/apiserver/validation"
25
23
extinf "k8s.io/apiextensions-apiserver/pkg/client/informers/externalversions"
24
+ k8serrors "k8s.io/apimachinery/pkg/api/errors"
26
25
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27
26
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
28
27
"k8s.io/apimachinery/pkg/labels"
@@ -48,6 +47,7 @@ import (
48
47
"github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions"
49
48
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/bundle"
50
49
olmerrors "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/errors"
50
+ "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install"
51
51
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/subscription"
52
52
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry"
53
53
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc"
@@ -341,7 +341,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
341
341
sharedIndexInformers = append (sharedIndexInformers , buPodInformer .Informer ())
342
342
343
343
// Wire ConfigMaps
344
- configMapInformer := k8sInformerFactory .Core ().V1 ().ConfigMaps ()
344
+ configMapInformer := informers .NewSharedInformerFactoryWithOptions (op .opClient .KubernetesInterface (), resyncPeriod (), informers .WithTweakListOptions (func (options * metav1.ListOptions ) {
345
+ options .LabelSelector = install .OLMManagedLabelKey
346
+ })).Core ().V1 ().ConfigMaps ()
345
347
op .lister .CoreV1 ().RegisterConfigMapLister (metav1 .NamespaceAll , configMapInformer .Lister ())
346
348
sharedIndexInformers = append (sharedIndexInformers , configMapInformer .Informer ())
347
349
@@ -595,15 +597,31 @@ func (o *Operator) syncConfigMap(logger *logrus.Entry, in *v1alpha1.CatalogSourc
595
597
596
598
logger .Debug ("checking catsrc configmap state" )
597
599
600
+ var updateLabel bool
598
601
// Get the catalog source's config map
599
602
configMap , err := o .lister .CoreV1 ().ConfigMapLister ().ConfigMaps (in .GetNamespace ()).Get (in .Spec .ConfigMap )
603
+ // Attempt to look up the CM via api call if there is a cache miss
604
+ if k8serrors .IsNotFound (err ) {
605
+ configMap , err = o .opClient .KubernetesInterface ().CoreV1 ().ConfigMaps (in .GetNamespace ()).Get (context .TODO (), in .Spec .ConfigMap , metav1.GetOptions {})
606
+ // Found cm in the cluster, add managed label to configmap
607
+ if err == nil {
608
+ labels := configMap .GetLabels ()
609
+ if labels == nil {
610
+ labels = make (map [string ]string )
611
+ }
612
+
613
+ labels [install .OLMManagedLabelKey ] = "false"
614
+ configMap .SetLabels (labels )
615
+ updateLabel = true
616
+ }
617
+ }
600
618
if err != nil {
601
619
syncError = fmt .Errorf ("failed to get catalog config map %s: %s" , in .Spec .ConfigMap , err )
602
620
out .SetError (v1alpha1 .CatalogSourceConfigMapError , syncError )
603
621
return
604
622
}
605
623
606
- if wasOwned := ownerutil .EnsureOwner (configMap , in ); ! wasOwned {
624
+ if wasOwned := ownerutil .EnsureOwner (configMap , in ); ! wasOwned || updateLabel {
607
625
configMap , err = o .opClient .KubernetesInterface ().CoreV1 ().ConfigMaps (configMap .GetNamespace ()).Update (context .TODO (), configMap , metav1.UpdateOptions {})
608
626
if err != nil {
609
627
syncError = fmt .Errorf ("unable to write owner onto catalog source configmap - %v" , err )
0 commit comments