@@ -47,13 +47,7 @@ func init() {
4747}
4848
4949func main () {
50- var metricsAddr string
51- var enableLeaderElection bool
52- flag .StringVar (& metricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
53- flag .BoolVar (& enableLeaderElection , "enable-leader-election" , false ,
54- "Enable leader election for controller manager. " +
55- "Enabling this will ensure there is only one active controller manager." )
56- flag .Parse ()
50+ config := parseConfiguration ()
5751
5852 // controller-runtime/pkg/log/zap is a wrapper over zap that implements logr
5953 // logr looks quite limited in functionality so we better use Zap directly.
@@ -65,9 +59,9 @@ func main() {
6559
6660 mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
6761 Scheme : scheme ,
68- MetricsBindAddress : metricsAddr ,
62+ MetricsBindAddress : config . MetricsAddr ,
6963 Port : 9443 ,
70- LeaderElection : enableLeaderElection ,
64+ LeaderElection : config . EnableLeaderElection ,
7165 LeaderElectionID : "06d035fb.mongodb.com" ,
7266 })
7367 if err != nil {
@@ -76,18 +70,20 @@ func main() {
7670 }
7771
7872 if err = (& atlascluster.AtlasClusterReconciler {
79- Client : mgr .GetClient (),
80- Log : logger .Named ("controllers" ).Named ("AtlasCluster" ).Sugar (),
81- Scheme : mgr .GetScheme (),
73+ Client : mgr .GetClient (),
74+ Log : logger .Named ("controllers" ).Named ("AtlasCluster" ).Sugar (),
75+ Scheme : mgr .GetScheme (),
76+ AtlasDomain : config .AtlasDomain ,
8277 }).SetupWithManager (mgr ); err != nil {
8378 setupLog .Error (err , "unable to create controller" , "controller" , "AtlasCluster" )
8479 os .Exit (1 )
8580 }
8681
8782 if err = (& atlasproject.AtlasProjectReconciler {
88- Client : mgr .GetClient (),
89- Log : logger .Named ("controllers" ).Named ("AtlasProject" ).Sugar (),
90- Scheme : mgr .GetScheme (),
83+ Client : mgr .GetClient (),
84+ Log : logger .Named ("controllers" ).Named ("AtlasProject" ).Sugar (),
85+ Scheme : mgr .GetScheme (),
86+ AtlasDomain : config .AtlasDomain ,
9187 }).SetupWithManager (mgr ); err != nil {
9288 setupLog .Error (err , "unable to create controller" , "controller" , "AtlasProject" )
9389 os .Exit (1 )
@@ -100,3 +96,22 @@ func main() {
10096 os .Exit (1 )
10197 }
10298}
99+
100+ type Config struct {
101+ AtlasDomain string
102+ EnableLeaderElection bool
103+ MetricsAddr string
104+ }
105+
106+ // ParseConfiguration fills the 'OperatorConfig' from the flags passed to the program
107+ func parseConfiguration () Config {
108+ config := Config {}
109+ flag .StringVar (& config .AtlasDomain , "atlas-domain" , "https://cloud.mongodb.com" , "the Atlas URL domain name (no slash in the end)." )
110+ flag .StringVar (& config .MetricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
111+ flag .BoolVar (& config .EnableLeaderElection , "enable-leader-election" , false ,
112+ "Enable leader election for controller manager. " +
113+ "Enabling this will ensure there is only one active controller manager." )
114+
115+ flag .Parse ()
116+ return config
117+ }
0 commit comments