@@ -47,13 +47,7 @@ func init() {
47
47
}
48
48
49
49
func 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 ()
57
51
58
52
// controller-runtime/pkg/log/zap is a wrapper over zap that implements logr
59
53
// logr looks quite limited in functionality so we better use Zap directly.
@@ -65,9 +59,9 @@ func main() {
65
59
66
60
mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
67
61
Scheme : scheme ,
68
- MetricsBindAddress : metricsAddr ,
62
+ MetricsBindAddress : config . MetricsAddr ,
69
63
Port : 9443 ,
70
- LeaderElection : enableLeaderElection ,
64
+ LeaderElection : config . EnableLeaderElection ,
71
65
LeaderElectionID : "06d035fb.mongodb.com" ,
72
66
})
73
67
if err != nil {
@@ -76,18 +70,20 @@ func main() {
76
70
}
77
71
78
72
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 ,
82
77
}).SetupWithManager (mgr ); err != nil {
83
78
setupLog .Error (err , "unable to create controller" , "controller" , "AtlasCluster" )
84
79
os .Exit (1 )
85
80
}
86
81
87
82
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 ,
91
87
}).SetupWithManager (mgr ); err != nil {
92
88
setupLog .Error (err , "unable to create controller" , "controller" , "AtlasProject" )
93
89
os .Exit (1 )
@@ -100,3 +96,22 @@ func main() {
100
96
os .Exit (1 )
101
97
}
102
98
}
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