55 "encoding/json"
66 "errors"
77 "fmt"
8+ "k8s.io/apimachinery/pkg/runtime"
89 "reflect"
910 "sort"
1011 "strings"
@@ -49,6 +50,7 @@ import (
4950 "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/grpc"
5051 "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/reconciler"
5152 "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver"
53+ controllerclient "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/controller-runtime/client"
5254 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/event"
5355 index "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/index"
5456 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
@@ -74,6 +76,7 @@ const (
7476 generatedByKey = "olm.generated-by"
7577 maxInstallPlanCount = 5
7678 maxDeletesPerSweep = 5
79+ RegistryFieldManager = "olm.registry"
7780)
7881
7982// Operator represents a Kubernetes operator that executes InstallPlans by
@@ -107,7 +110,7 @@ type Operator struct {
107110type CatalogSourceSyncFunc func (logger * logrus.Entry , in * v1alpha1.CatalogSource ) (out * v1alpha1.CatalogSource , continueSync bool , syncError error )
108111
109112// NewOperator creates a new Catalog Operator.
110- func NewOperator (ctx context.Context , kubeconfigPath string , clock utilclock.Clock , logger * logrus.Logger , resync time.Duration , configmapRegistryImage , utilImage string , operatorNamespace string ) (* Operator , error ) {
113+ func NewOperator (ctx context.Context , kubeconfigPath string , clock utilclock.Clock , logger * logrus.Logger , resync time.Duration , configmapRegistryImage , utilImage string , operatorNamespace string , scheme * runtime. Scheme ) (* Operator , error ) {
111114 resyncPeriod := queueinformer .ResyncWithJitter (resync , 0.2 )
112115 config , err := clientcmd .BuildConfigFromFlags ("" , kubeconfigPath )
113116 if err != nil {
@@ -142,6 +145,11 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
142145 return nil , err
143146 }
144147
148+ ssaClient , err := controllerclient .NewForConfig (config , scheme , RegistryFieldManager )
149+ if err != nil {
150+ return nil , err
151+ }
152+
145153 // Allocate the new instance of an Operator.
146154 op := & Operator {
147155 Operator : queueOperator ,
@@ -162,9 +170,8 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
162170 clientAttenuator : scoped .NewClientAttenuator (logger , config , opClient , crClient , dynamicClient ),
163171 }
164172 op .sources = grpc .NewSourceStore (logger , 10 * time .Second , 10 * time .Minute , op .syncSourceState )
165- op .reconciler = reconciler .NewRegistryReconcilerFactory (lister , opClient , configmapRegistryImage , op .now )
173+ op .reconciler = reconciler .NewRegistryReconcilerFactory (lister , opClient , configmapRegistryImage , op .now , ssaClient )
166174 res := resolver .NewOperatorStepResolver (lister , crClient , opClient .KubernetesInterface (), operatorNamespace , op .sources , logger )
167- op .resolver = resolver .NewOperatorStepResolver (lister , crClient , opClient .KubernetesInterface (), operatorNamespace , op .sources , logger )
168175 op .resolver = resolver .NewInstrumentedResolver (res , metrics .RegisterDependencyResolutionSuccess , metrics .RegisterDependencyResolutionFailure )
169176
170177 // Wire OLM CR sharedIndexInformers
0 commit comments