@@ -18,6 +18,7 @@ import (
1818 "flag"
1919 "os"
2020
21+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122 "k8s.io/apimachinery/pkg/runtime"
2223 clientgoscheme "k8s.io/client-go/kubernetes/scheme"
2324 "k8s.io/klog/v2/klogr"
@@ -51,17 +52,29 @@ func init() {
5152 // +kubebuilder:scaffold:scheme
5253}
5354
55+ type devicePluginControllerAndWebhook map [string ](func (ctrl.Manager , string , bool ) error )
56+
5457func main () {
5558 var metricsAddr string
59+ var devicePluginNamespace string
5660 var enableLeaderElection bool
5761 flag .StringVar (& metricsAddr , "metrics-addr" , ":8080" , "The address the metric endpoint binds to." )
62+ flag .StringVar (& devicePluginNamespace , "deviceplugin-namespace" , metav1 .NamespaceSystem , "The namespace where deviceplugin daemonsets are created" )
5863 flag .BoolVar (& enableLeaderElection , "enable-leader-election" , false ,
5964 "Enable leader election for controller manager. " +
6065 "Enabling this will ensure there is only one active controller manager." )
6166 flag .Parse ()
6267
6368 ctrl .SetLogger (klogr .New ())
6469
70+ setupControllerAndWebhook := devicePluginControllerAndWebhook {
71+ "dsa" : dsa .SetupReconciler ,
72+ "gpu" : gpu .SetupReconciler ,
73+ "fpga" : fpga .SetupReconciler ,
74+ "qat" : qat .SetupReconciler ,
75+ "sgx" : sgx .SetupReconciler ,
76+ }
77+
6578 mgr , err := ctrl .NewManager (ctrl .GetConfigOrDie (), ctrl.Options {
6679 Scheme : scheme ,
6780 MetricsBindAddress : metricsAddr ,
@@ -75,40 +88,19 @@ func main() {
7588 os .Exit (1 )
7689 }
7790
78- if err = dsa .SetupReconciler (mgr ); err != nil {
79- setupLog .Error (err , "unable to create controller" , "controller" , "DsaDevicePlugin" )
80- os .Exit (1 )
81- }
82- if err = (& devicepluginv1.DsaDevicePlugin {}).SetupWebhookWithManager (mgr ); err != nil {
83- setupLog .Error (err , "unable to create webhook" , "webhook" , "DsaDevicePlugin" )
84- os .Exit (1 )
91+ ns := os .Getenv ("DEVICEPLUGIN_NAMESPACE" )
92+ if ns == "" {
93+ ns = devicePluginNamespace
8594 }
8695
87- if err = gpu .SetupReconciler (mgr ); err != nil {
88- setupLog .Error (err , "unable to create controller" , "controller" , "GpuDevicePlugin" )
89- os .Exit (1 )
90- }
91- if err = (& devicepluginv1.GpuDevicePlugin {}).SetupWebhookWithManager (mgr ); err != nil {
92- setupLog .Error (err , "unable to create webhook" , "webhook" , "GpuDevicePlugin" )
93- os .Exit (1 )
94- }
96+ withWebhook := true
9597
96- if err = qat .SetupReconciler (mgr ); err != nil {
97- setupLog .Error (err , "unable to create controller" , "controller" , "QatDevicePlugin" )
98- os .Exit (1 )
99- }
100- if err = (& devicepluginv1.QatDevicePlugin {}).SetupWebhookWithManager (mgr ); err != nil {
101- setupLog .Error (err , "unable to create webhook" , "webhook" , "QatDevicePlugin" )
102- os .Exit (1 )
103- }
104-
105- if err = sgx .SetupReconciler (mgr ); err != nil {
106- setupLog .Error (err , "unable to create controller" , "controller" , "SgxDevicePlugin" )
107- os .Exit (1 )
108- }
109- if err = (& devicepluginv1.SgxDevicePlugin {}).SetupWebhookWithManager (mgr ); err != nil {
110- setupLog .Error (err , "unable to create webhook" , "webhook" , "SgxDevicePlugin" )
111- os .Exit (1 )
98+ // TODO(mythi): add a StringVar flag to select which controllers to enable
99+ for _ , device := range []string {"dsa" , "fpga" , "gpu" , "qat" , "sgx" } {
100+ if err = setupControllerAndWebhook [device ](mgr , ns , withWebhook ); err != nil {
101+ setupLog .Error (err , "unable to initialize controller" , "controller" , device )
102+ os .Exit (1 )
103+ }
112104 }
113105
114106 pm := patcher .NewPatcherManager (mgr .GetLogger ().WithName ("webhooks" ).WithName ("Fpga" ))
@@ -121,15 +113,6 @@ func main() {
121113 Handler : & sgxwebhook.SgxMutator {Client : mgr .GetClient ()},
122114 })
123115
124- if err = fpga .SetupReconciler (mgr ); err != nil {
125- setupLog .Error (err , "unable to create controller" , "controller" , "FpgaDevicePlugin" )
126- os .Exit (1 )
127- }
128- if err = (& devicepluginv1.FpgaDevicePlugin {}).SetupWebhookWithManager (mgr ); err != nil {
129- setupLog .Error (err , "unable to create webhook" , "webhook" , "FpgaDevicePlugin" )
130- os .Exit (1 )
131- }
132-
133116 if err = (& fpgacontroller.AcceleratorFunctionReconciler {
134117 Client : mgr .GetClient (),
135118 Scheme : mgr .GetScheme (),
0 commit comments