@@ -15,24 +15,16 @@ import (
1515 ctrl "sigs.k8s.io/controller-runtime"
1616 "sigs.k8s.io/controller-runtime/pkg/cache"
1717 "sigs.k8s.io/controller-runtime/pkg/client"
18+ "sigs.k8s.io/controller-runtime/pkg/cluster"
1819 "sigs.k8s.io/controller-runtime/pkg/healthz"
1920 ctrzap "sigs.k8s.io/controller-runtime/pkg/log/zap"
2021 "sigs.k8s.io/controller-runtime/pkg/manager"
2122 metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
2223 "sigs.k8s.io/controller-runtime/pkg/predicate"
2324 "sigs.k8s.io/controller-runtime/pkg/webhook"
2425
26+ "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller"
2527 "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlas"
26- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasbackupcompliancepolicy"
27- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlascustomrole"
28- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasdatabaseuser"
29- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasdatafederation"
30- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasdeployment"
31- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasfederatedauth"
32- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasprivateendpoint"
33- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasproject"
34- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlassearchindexconfig"
35- "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlasstream"
3628 "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/connectionsecret"
3729 "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/watch"
3830 "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/featureflags"
@@ -159,8 +151,8 @@ func (b *Builder) WithSkipNameValidation(skip bool) *Builder {
159151 return b
160152}
161153
162- // Build builds the controller manager and configure operator controllers
163- func (b * Builder ) Build (ctx context.Context ) (manager. Manager , error ) {
154+ // Build builds the cluster object and configures operator controllers
155+ func (b * Builder ) Build (ctx context.Context ) (cluster. Cluster , error ) {
164156 mergeDefaults (b )
165157
166158 if b .independentSyncPeriod < b .minimumIndependentSyncPeriod {
@@ -186,6 +178,8 @@ func (b *Builder) Build(ctx context.Context) (manager.Manager, error) {
186178 }
187179 }
188180
181+ controllerRegistry := controller .NewRegistry (b .predicates , b .deletionProtection , b .logger , b .independentSyncPeriod , b .featureFlags )
182+
189183 mgr , err := b .managerProvider .New (
190184 b .config ,
191185 ctrl.Options {
@@ -213,137 +207,16 @@ func (b *Builder) Build(ctx context.Context) (manager.Manager, error) {
213207 return nil , err
214208 }
215209
216- if err = indexer .RegisterAll (ctx , mgr , b .logger ); err != nil {
217- return nil , fmt .Errorf ("unable to create indexers: %w" , err )
218- }
219-
220210 if b .atlasProvider == nil {
221211 b .atlasProvider = atlas .NewProductionProvider (b .atlasDomain , b .apiSecret , mgr .GetClient (), nil )
222212 }
223213
224- projectReconciler := atlasproject .NewAtlasProjectReconciler (
225- mgr ,
226- b .predicates ,
227- b .atlasProvider ,
228- b .deletionProtection ,
229- b .logger ,
230- )
231- if err = projectReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
232- return nil , fmt .Errorf ("unable to create controller AtlasProject: %w" , err )
233- }
234-
235- deploymentReconciler := atlasdeployment .NewAtlasDeploymentReconciler (
236- mgr ,
237- b .predicates ,
238- b .atlasProvider ,
239- b .deletionProtection ,
240- b .independentSyncPeriod ,
241- b .logger ,
242- )
243- if err = deploymentReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
244- return nil , fmt .Errorf ("unable to create controller AtlasDeployment: %w" , err )
245- }
246-
247- dbUserReconciler := atlasdatabaseuser .NewAtlasDatabaseUserReconciler (
248- mgr ,
249- b .predicates ,
250- b .atlasProvider ,
251- b .deletionProtection ,
252- b .independentSyncPeriod ,
253- b .featureFlags ,
254- b .logger ,
255- )
256- if err = dbUserReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
257- return nil , fmt .Errorf ("unable to create controller AtlasDatabaseUser: %w" , err )
258- }
259-
260- dataFedReconciler := atlasdatafederation .NewAtlasDataFederationReconciler (
261- mgr ,
262- b .predicates ,
263- b .atlasProvider ,
264- b .deletionProtection ,
265- b .logger ,
266- )
267- if err = dataFedReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
268- return nil , fmt .Errorf ("unable to create controller AtlasDataFederation: %w" , err )
269- }
270-
271- fedAuthReconciler := atlasfederatedauth .NewAtlasFederatedAuthReconciler (
272- mgr ,
273- b .predicates ,
274- b .atlasProvider ,
275- b .deletionProtection ,
276- b .logger ,
277- )
278- if err = fedAuthReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
279- return nil , fmt .Errorf ("unable to create controller AtlasFederatedAuth: %w" , err )
280- }
281-
282- streamsInstanceReconciler := atlasstream .NewAtlasStreamsInstanceReconciler (
283- mgr ,
284- b .predicates ,
285- b .atlasProvider ,
286- b .deletionProtection ,
287- b .logger ,
288- )
289- if err = streamsInstanceReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
290- return nil , fmt .Errorf ("unable to create controller AtlasStreamsInstance: %w" , err )
291- }
292-
293- streamsConnReconciler := atlasstream .NewAtlasStreamsConnectionReconciler (
294- mgr ,
295- b .predicates ,
296- b .atlasProvider ,
297- b .deletionProtection ,
298- b .logger ,
299- )
300- if err = streamsConnReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
301- return nil , fmt .Errorf ("unable to create controller AtlasStreamsConnection: %w" , err )
302- }
303-
304- searchIndexConfigReconciler := atlassearchindexconfig .NewAtlasSearchIndexConfigReconciler (
305- mgr ,
306- b .predicates ,
307- b .atlasProvider ,
308- b .deletionProtection ,
309- b .logger ,
310- )
311- if err = searchIndexConfigReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
312- return nil , fmt .Errorf ("unable to create controller AtlasSearchIndexConfig: %w" , err )
313- }
314-
315- bcpReconciler := atlasbackupcompliancepolicy .NewAtlasBackupCompliancePolicyReconciler (
316- mgr ,
317- b .predicates ,
318- b .atlasProvider ,
319- b .deletionProtection ,
320- b .logger ,
321- )
322- if err = bcpReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
323- return nil , fmt .Errorf ("unable to create controller AtlasBackupCompliancePolicy: %w" , err )
324- }
325-
326- customRolesReconciler := atlascustomrole .NewAtlasCustomRoleReconciler (
327- mgr ,
328- b .predicates ,
329- b .atlasProvider ,
330- b .deletionProtection ,
331- b .independentSyncPeriod ,
332- b .logger ,
333- )
334- if err = customRolesReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
335- return nil , fmt .Errorf ("unable to create controller AtlasCustomRole: %w" , err )
214+ if err := controllerRegistry .RegisterWithManager (mgr , b .skipNameValidation , b .atlasProvider ); err != nil {
215+ return nil , err
336216 }
337217
338- peReconciler := atlasprivateendpoint .NewAtlasPrivateEndpointReconciler (
339- mgr ,
340- b .predicates ,
341- b .atlasProvider ,
342- b .deletionProtection ,
343- b .logger ,
344- )
345- if err = peReconciler .SetupWithManager (mgr , b .skipNameValidation ); err != nil {
346- return nil , fmt .Errorf ("unable to create controller AtlasPrivateEndpoint: %w" , err )
218+ if err := indexer .RegisterAll (ctx , mgr , b .logger ); err != nil {
219+ return nil , fmt .Errorf ("unable to create indexers: %w" , err )
347220 }
348221
349222 return mgr , nil
0 commit comments