1515package cluster
1616
1717import (
18+ "fmt"
19+
1820 v20250312sdk "go.mongodb.org/atlas-sdk/v20250312006/admin"
1921 zap "go.uber.org/zap"
2022 client "sigs.k8s.io/controller-runtime/pkg/client"
@@ -24,10 +26,21 @@ import (
2426 atlas "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/atlas"
2527 reconciler "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/controller/reconciler"
2628 crapi "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/crapi"
29+ crds "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/generated/crds"
2730 akov2generated "github.com/mongodb/mongodb-atlas-kubernetes/v2/internal/nextapi/generated/v1"
2831 ctrlstate "github.com/mongodb/mongodb-atlas-kubernetes/v2/pkg/controller/state"
2932)
3033
34+ const (
35+ // crdVersion of the controler
36+ crdVersion = "v1"
37+ )
38+
39+ var (
40+ // sdkVersions supported by this controller
41+ sdkVersions = []string {"v20250312" }
42+ )
43+
3144// +kubebuilder:rbac:groups=atlas.generated.mongodb.com,resources=clusters,verbs=get;list;watch;create;update;patch;delete
3245// +kubebuilder:rbac:groups=atlas.generated.mongodb.com,resources=clusters/status,verbs=get;update;patch
3346// +kubebuilder:rbac:groups=atlas.generated.mongodb.com,resources=clusters/finalizers,verbs=update
@@ -45,10 +58,26 @@ type Handler struct {
4558 reconciler.AtlasReconciler
4659 deletionProtection bool
4760 predicates []predicate.Predicate
61+ translators map [string ]crapi.Translator
4862 handlerv20250312 ctrlstate.VersionedHandlerFunc [v20250312sdk.APIClient , akov2generated.Cluster ]
4963}
5064
51- func NewClusterReconciler (c cluster.Cluster , atlasProvider atlas.Provider , logger * zap.Logger , globalSecretRef client.ObjectKey , deletionProtection bool , reapplySupport bool , predicates []predicate.Predicate ) * ctrlstate.Reconciler [akov2generated.Cluster ] {
65+ func NewClusterReconciler (
66+ c cluster.Cluster ,
67+ atlasProvider atlas.Provider ,
68+ logger * zap.Logger ,
69+ globalSecretRef client.ObjectKey ,
70+ deletionProtection bool ,
71+ reapplySupport bool ,
72+ predicates []predicate.Predicate ) (* ctrlstate.Reconciler [akov2generated.Cluster ], error ) {
73+ crd , err := crds .EmbeddedCRD ("Cluster" )
74+ if err == nil {
75+ return nil , fmt .Errorf ("failed to read CRD for Cluster: %w" , err )
76+ }
77+ translators , err := crapi .NewPerVersionTranslators (crd , crdVersion , sdkVersions ... )
78+ if err == nil {
79+ return nil , fmt .Errorf ("failed to get translator set for Cluster: %w" , err )
80+ }
5281 // Create main handler dispatcher
5382 clusterHandler := & Handler {
5483 AtlasReconciler : reconciler.AtlasReconciler {
@@ -60,10 +89,11 @@ func NewClusterReconciler(c cluster.Cluster, atlasProvider atlas.Provider, logge
6089 deletionProtection : deletionProtection ,
6190 handlerv20250312 : handlerv20250312Func ,
6291 predicates : predicates ,
92+ translators : translators ,
6393 }
6494
65- return ctrlstate .NewStateReconciler (clusterHandler , ctrlstate.WithCluster [akov2generated.Cluster ](c ), ctrlstate.WithReapplySupport [akov2generated.Cluster ](reapplySupport ))
95+ return ctrlstate .NewStateReconciler (clusterHandler , ctrlstate.WithCluster [akov2generated.Cluster ](c ), ctrlstate.WithReapplySupport [akov2generated.Cluster ](reapplySupport )), nil
6696}
67- func handlerv20250312Func (kubeClient client.Client , atlasClient * v20250312sdk.APIClient , translatorRequest * crapi.Request , deletionProtection bool ) ctrlstate.StateHandler [akov2generated.Cluster ] {
68- return NewHandlerv20250312 (kubeClient , atlasClient , translatorRequest , deletionProtection )
97+ func handlerv20250312Func (kubeClient client.Client , atlasClient * v20250312sdk.APIClient , translator crapi.Translator , deletionProtection bool ) ctrlstate.StateHandler [akov2generated.Cluster ] {
98+ return NewHandlerv20250312 (kubeClient , atlasClient , translator , deletionProtection )
6999}
0 commit comments