@@ -20,13 +20,17 @@ import (
2020 clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2121 crsv1 "sigs.k8s.io/cluster-api/exp/addons/api/v1beta1"
2222 ctrl "sigs.k8s.io/controller-runtime"
23+ "sigs.k8s.io/controller-runtime/pkg/client"
24+ "sigs.k8s.io/controller-runtime/pkg/controller"
2325 "sigs.k8s.io/controller-runtime/pkg/healthz"
2426 "sigs.k8s.io/controller-runtime/pkg/manager"
2527 metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
2628
2729 caaphv1 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/external/sigs.k8s.io/cluster-api-addon-provider-helm/api/v1alpha1"
30+ "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/api/v1alpha1"
2831 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common/pkg/capi/clustertopology/handlers"
2932 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/common/pkg/server"
33+ "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/controllers/namespacesync"
3034 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/handlers/aws"
3135 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/handlers/docker"
3236 "github.com/nutanix-cloud-native/cluster-api-runtime-extensions-nutanix/pkg/handlers/generic"
@@ -95,6 +99,8 @@ func main() {
9599 // It allows to specify configuration under a single variable.
96100 genericMetaHandlers := generic .New ()
97101
102+ namespacesyncOptions := namespacesync.Options {}
103+
98104 // Initialize and parse command line flags.
99105 logs .AddFlags (pflag .CommandLine , logs .SkipLoggingConfigurationFlags ())
100106 logsv1 .AddFlags (logOptions , pflag .CommandLine )
@@ -104,6 +110,7 @@ func main() {
104110 awsMetaHandlers .AddFlags (pflag .CommandLine )
105111 dockerMetaHandlers .AddFlags (pflag .CommandLine )
106112 nutanixMetaHandlers .AddFlags (pflag .CommandLine )
113+ namespacesyncOptions .AddFlags (pflag .CommandLine )
107114 pflag .CommandLine .SetNormalizeFunc (cliflag .WordSepNormalizeFunc )
108115 pflag .CommandLine .AddGoFlagSet (flag .CommandLine )
109116 pflag .Parse ()
@@ -141,6 +148,32 @@ func main() {
141148 os .Exit (1 )
142149 }
143150
151+ unstructuredCachingClient , err := client .New (mgr .GetConfig (), client.Options {
152+ HTTPClient : mgr .GetHTTPClient (),
153+ Cache : & client.CacheOptions {
154+ Reader : mgr .GetCache (),
155+ Unstructured : true ,
156+ },
157+ })
158+ if err != nil {
159+ setupLog .Error (err , "unable to create unstructured caching client" )
160+ os .Exit (1 )
161+ }
162+
163+ if err := (& namespacesync.Reconciler {
164+ Client : mgr .GetClient (),
165+ UnstructuredCachingClient : unstructuredCachingClient ,
166+ SourceClusterClassNamespace : namespacesyncOptions .SourceNamespace ,
167+ TargetNamespaceFilter : namespacesync .NamespaceHasLabelKey (v1alpha1 .NamespaceSyncLabelKey ),
168+ }).SetupWithManager (
169+ signalCtx ,
170+ mgr ,
171+ controller.Options {MaxConcurrentReconciles : namespacesyncOptions .Concurrency },
172+ ); err != nil {
173+ setupLog .Error (err , "unable to create controller" , "controller" , "namespacesync.Reconciler" )
174+ os .Exit (1 )
175+ }
176+
144177 if err := mgr .Start (signalCtx ); err != nil {
145178 setupLog .Error (err , "unable to start controller manager" )
146179 os .Exit (1 )
0 commit comments