@@ -49,13 +49,13 @@ var defaultNodeSelector = deployments.GPUPluginDaemonSet().Spec.Template.Spec.No
4949// +kubebuilder:rbac:groups=deviceplugin.intel.com,resources=gpudeviceplugins/finalizers,verbs=update
5050
5151// SetupReconciler creates a new reconciler for GpuDevicePlugin objects.
52- func SetupReconciler (mgr ctrl.Manager , namespace string , withWebhook bool ) error {
53- c := & controller {scheme : mgr .GetScheme (), ns : namespace }
52+ func SetupReconciler (mgr ctrl.Manager , args controllers. ControllerOptions ) error {
53+ c := & controller {scheme : mgr .GetScheme (), args : args }
5454 if err := controllers .SetupWithManager (mgr , c , devicepluginv1 .GroupVersion .String (), "GpuDevicePlugin" , ownerKey ); err != nil {
5555 return err
5656 }
5757
58- if withWebhook {
58+ if args . WithWebhook {
5959 return (& devicepluginv1.GpuDevicePlugin {}).SetupWebhookWithManager (mgr )
6060 }
6161
@@ -64,7 +64,7 @@ func SetupReconciler(mgr ctrl.Manager, namespace string, withWebhook bool) error
6464
6565type controller struct {
6666 scheme * runtime.Scheme
67- ns string
67+ args controllers. ControllerOptions
6868}
6969
7070func (c * controller ) CreateEmptyObject () client.Object {
@@ -80,7 +80,7 @@ func (c *controller) NewSharedServiceAccount() *v1.ServiceAccount {
8080 return & v1.ServiceAccount {
8181 ObjectMeta : metav1.ObjectMeta {
8282 Name : serviceAccountName ,
83- Namespace : c .ns ,
83+ Namespace : c .args . Namespace ,
8484 },
8585 }
8686}
@@ -89,13 +89,13 @@ func (c *controller) NewSharedClusterRoleBinding() *rbacv1.ClusterRoleBinding {
8989 return & rbacv1.ClusterRoleBinding {
9090 ObjectMeta : metav1.ObjectMeta {
9191 Name : roleBindingName ,
92- Namespace : c .ns ,
92+ Namespace : c .args . Namespace ,
9393 },
9494 Subjects : []rbacv1.Subject {
9595 {
9696 Kind : "ServiceAccount" ,
9797 Name : serviceAccountName ,
98- Namespace : c .ns ,
98+ Namespace : c .args . Namespace ,
9999 },
100100 },
101101 RoleRef : rbacv1.RoleRef {
@@ -140,10 +140,16 @@ func (c *controller) NewDaemonSet(rawObj client.Object) *apps.DaemonSet {
140140 daemonSet .Spec .Template .Spec .Tolerations = devicePlugin .Spec .Tolerations
141141 }
142142
143- daemonSet .ObjectMeta .Namespace = c .ns
143+ daemonSet .ObjectMeta .Namespace = c .args . Namespace
144144 daemonSet .Spec .Template .Spec .Containers [0 ].Args = getPodArgs (devicePlugin )
145145 daemonSet .Spec .Template .Spec .Containers [0 ].Image = devicePlugin .Spec .Image
146146
147+ if len (c .args .ImagePullSecretName ) > 0 {
148+ daemonSet .Spec .Template .Spec .ImagePullSecrets = []v1.LocalObjectReference {
149+ {Name : c .args .ImagePullSecretName },
150+ }
151+ }
152+
147153 if devicePlugin .Spec .InitImage == "" {
148154 daemonSet .Spec .Template .Spec .InitContainers = nil
149155 daemonSet .Spec .Template .Spec .Volumes = removeVolume (daemonSet .Spec .Template .Spec .Volumes , "nfd-features" )
0 commit comments