@@ -45,10 +45,12 @@ import (
45
45
"github.com/operator-framework/api/pkg/operators/v1alpha1"
46
46
"github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/clientset/versioned"
47
47
"github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions"
48
+ operatorsv1alpha1listers "github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/listers/operators/v1alpha1"
48
49
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/bundle"
49
50
olmerrors "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/errors"
50
51
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install"
51
52
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/catalog/subscription"
53
+ "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/internal/pruning"
52
54
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry"
53
55
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc"
54
56
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/reconciler"
@@ -105,7 +107,6 @@ type Operator struct {
105
107
sourcesLastUpdate sharedtime.SharedTime
106
108
resolver resolver.StepResolver
107
109
reconciler reconciler.RegistryReconcilerFactory
108
- csvProvidedAPIsIndexer map [string ]cache.Indexer
109
110
catalogSubscriberIndexer map [string ]cache.Indexer
110
111
clientAttenuator * scoped.ClientAttenuator
111
112
serviceAccountQuerier * scoped.UserDefinedServiceAccountQuerier
@@ -176,7 +177,6 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
176
177
catsrcQueueSet : queueinformer .NewEmptyResourceQueueSet (),
177
178
subQueueSet : queueinformer .NewEmptyResourceQueueSet (),
178
179
ipQueueSet : queueinformer .NewEmptyResourceQueueSet (),
179
- csvProvidedAPIsIndexer : map [string ]cache.Indexer {},
180
180
catalogSubscriberIndexer : map [string ]cache.Indexer {},
181
181
serviceAccountQuerier : scoped .NewUserDefinedServiceAccountQuerier (logger , crClient ),
182
182
clientAttenuator : scoped .NewClientAttenuator (logger , config , opClient ),
@@ -192,18 +192,41 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
192
192
// Wire OLM CR sharedIndexInformers
193
193
crInformerFactory := externalversions .NewSharedInformerFactoryWithOptions (op .client , resyncPeriod ())
194
194
195
- // Wire CSVs
196
- csvInformer := crInformerFactory .Operators ().V1alpha1 ().ClusterServiceVersions ()
197
- op .lister .OperatorsV1alpha1 ().RegisterClusterServiceVersionLister (metav1 .NamespaceAll , csvInformer .Lister ())
198
- if err := op .RegisterInformer (csvInformer .Informer ()); err != nil {
199
- return nil , err
200
- }
201
-
202
- if err := csvInformer .Informer ().AddIndexers (cache.Indexers {index .ProvidedAPIsIndexFuncKey : index .ProvidedAPIsIndexFunc }); err != nil {
195
+ // Fields are pruned from local copies of the objects managed
196
+ // by this informer in order to reduce cached size.
197
+ prunedCSVInformer := cache .NewSharedIndexInformer (
198
+ pruning .NewListerWatcher (op .client , metav1 .NamespaceAll , func (* metav1.ListOptions ) {}, pruning .PrunerFunc (func (csv * v1alpha1.ClusterServiceVersion ) {
199
+ * csv = v1alpha1.ClusterServiceVersion {
200
+ TypeMeta : csv .TypeMeta ,
201
+ ObjectMeta : metav1.ObjectMeta {
202
+ Name : csv .Name ,
203
+ Namespace : csv .Namespace ,
204
+ Labels : csv .Labels ,
205
+ Annotations : csv .Annotations ,
206
+ },
207
+ Spec : v1alpha1.ClusterServiceVersionSpec {
208
+ CustomResourceDefinitions : csv .Spec .CustomResourceDefinitions ,
209
+ APIServiceDefinitions : csv .Spec .APIServiceDefinitions ,
210
+ Replaces : csv .Spec .Replaces ,
211
+ Version : csv .Spec .Version ,
212
+ },
213
+ Status : v1alpha1.ClusterServiceVersionStatus {
214
+ Phase : csv .Status .Phase ,
215
+ Reason : csv .Status .Reason ,
216
+ },
217
+ }
218
+ })),
219
+ & v1alpha1.ClusterServiceVersion {},
220
+ resyncPeriod (),
221
+ cache.Indexers {
222
+ cache .NamespaceIndex : cache .MetaNamespaceIndexFunc ,
223
+ },
224
+ )
225
+ csvLister := operatorsv1alpha1listers .NewClusterServiceVersionLister (prunedCSVInformer .GetIndexer ())
226
+ op .lister .OperatorsV1alpha1 ().RegisterClusterServiceVersionLister (metav1 .NamespaceAll , csvLister )
227
+ if err := op .RegisterInformer (prunedCSVInformer ); err != nil {
203
228
return nil , err
204
229
}
205
- csvIndexer := csvInformer .Informer ().GetIndexer ()
206
- op .csvProvidedAPIsIndexer [metav1 .NamespaceAll ] = csvIndexer
207
230
208
231
// TODO: Add namespace resolve sync
209
232
@@ -1279,7 +1302,7 @@ func (o *Operator) setSubsCond(subs []*v1alpha1.Subscription, condType v1alpha1.
1279
1302
}
1280
1303
1281
1304
latest .Status = s .Status
1282
- _ , err = o .client .OperatorsV1alpha1 ().Subscriptions (sub .Namespace ).UpdateStatus (context .TODO (), latest , updateOpts )
1305
+ _ , err = o .client .OperatorsV1alpha1 ().Subscriptions (s .Namespace ).UpdateStatus (context .TODO (), latest , updateOpts )
1283
1306
1284
1307
return err
1285
1308
}
0 commit comments