@@ -49,13 +49,13 @@ var defaultNodeSelector = deployments.GPUPluginDaemonSet().Spec.Template.Spec.No
49
49
// +kubebuilder:rbac:groups=deviceplugin.intel.com,resources=gpudeviceplugins/finalizers,verbs=update
50
50
51
51
// 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 }
54
54
if err := controllers .SetupWithManager (mgr , c , devicepluginv1 .GroupVersion .String (), "GpuDevicePlugin" , ownerKey ); err != nil {
55
55
return err
56
56
}
57
57
58
- if withWebhook {
58
+ if args . WithWebhook {
59
59
return (& devicepluginv1.GpuDevicePlugin {}).SetupWebhookWithManager (mgr )
60
60
}
61
61
@@ -64,7 +64,7 @@ func SetupReconciler(mgr ctrl.Manager, namespace string, withWebhook bool) error
64
64
65
65
type controller struct {
66
66
scheme * runtime.Scheme
67
- ns string
67
+ args controllers. ControllerOptions
68
68
}
69
69
70
70
func (c * controller ) CreateEmptyObject () client.Object {
@@ -80,7 +80,7 @@ func (c *controller) NewSharedServiceAccount() *v1.ServiceAccount {
80
80
return & v1.ServiceAccount {
81
81
ObjectMeta : metav1.ObjectMeta {
82
82
Name : serviceAccountName ,
83
- Namespace : c .ns ,
83
+ Namespace : c .args . Namespace ,
84
84
},
85
85
}
86
86
}
@@ -89,13 +89,13 @@ func (c *controller) NewSharedClusterRoleBinding() *rbacv1.ClusterRoleBinding {
89
89
return & rbacv1.ClusterRoleBinding {
90
90
ObjectMeta : metav1.ObjectMeta {
91
91
Name : roleBindingName ,
92
- Namespace : c .ns ,
92
+ Namespace : c .args . Namespace ,
93
93
},
94
94
Subjects : []rbacv1.Subject {
95
95
{
96
96
Kind : "ServiceAccount" ,
97
97
Name : serviceAccountName ,
98
- Namespace : c .ns ,
98
+ Namespace : c .args . Namespace ,
99
99
},
100
100
},
101
101
RoleRef : rbacv1.RoleRef {
@@ -140,10 +140,16 @@ func (c *controller) NewDaemonSet(rawObj client.Object) *apps.DaemonSet {
140
140
daemonSet .Spec .Template .Spec .Tolerations = devicePlugin .Spec .Tolerations
141
141
}
142
142
143
- daemonSet .ObjectMeta .Namespace = c .ns
143
+ daemonSet .ObjectMeta .Namespace = c .args . Namespace
144
144
daemonSet .Spec .Template .Spec .Containers [0 ].Args = getPodArgs (devicePlugin )
145
145
daemonSet .Spec .Template .Spec .Containers [0 ].Image = devicePlugin .Spec .Image
146
146
147
+ if len (c .args .ImagePullSecretName ) > 0 {
148
+ daemonSet .Spec .Template .Spec .ImagePullSecrets = []v1.LocalObjectReference {
149
+ {Name : c .args .ImagePullSecretName },
150
+ }
151
+ }
152
+
147
153
if devicePlugin .Spec .InitImage == "" {
148
154
daemonSet .Spec .Template .Spec .InitContainers = nil
149
155
daemonSet .Spec .Template .Spec .Volumes = removeVolume (daemonSet .Spec .Template .Spec .Volumes , "nfd-features" )
0 commit comments