@@ -242,32 +242,54 @@ func removeVolumeMount(volumeMounts []v1.VolumeMount, name string) []v1.VolumeMo
242242 return newVolumeMounts
243243}
244244
245- func (c * controller ) UpdateDaemonSet (rawObj client.Object , ds * apps.DaemonSet ) (updated bool ) {
246- dp := rawObj .(* devicepluginv1.GpuDevicePlugin )
247-
248- if ds .Spec .Template .Spec .Containers [0 ].Image != dp .Spec .Image {
249- ds .Spec .Template .Spec .Containers [0 ].Image = dp .Spec .Image
250- updated = true
251- }
245+ func processInitContainer (ds * apps.DaemonSet , dp * devicepluginv1.GpuDevicePlugin ) bool {
246+ initContainers := ds .Spec .Template .Spec .InitContainers
252247
253248 if dp .Spec .InitImage == "" {
254- if ds . Spec . Template . Spec . InitContainers != nil {
249+ if initContainers != nil {
255250 ds .Spec .Template .Spec .InitContainers = nil
256251 ds .Spec .Template .Spec .Volumes = removeVolume (ds .Spec .Template .Spec .Volumes , "nfd-features" )
257- updated = true
252+
253+ return true
258254 }
259- } else {
255+ } else if len ( initContainers ) != 1 || initContainers [ 0 ]. Image != dp . Spec . InitImage {
260256 setInitContainer (& ds .Spec .Template .Spec , dp .Spec .InitImage )
261- updated = true
257+
258+ return true
262259 }
263260
261+ return false
262+ }
263+
264+ func processNodeSelector (ds * apps.DaemonSet , dp * devicepluginv1.GpuDevicePlugin ) bool {
264265 if len (dp .Spec .NodeSelector ) > 0 {
265266 if ! reflect .DeepEqual (ds .Spec .Template .Spec .NodeSelector , dp .Spec .NodeSelector ) {
266267 ds .Spec .Template .Spec .NodeSelector = dp .Spec .NodeSelector
267- updated = true
268+
269+ return true
268270 }
269271 } else if ! reflect .DeepEqual (ds .Spec .Template .Spec .NodeSelector , defaultNodeSelector ) {
270272 ds .Spec .Template .Spec .NodeSelector = defaultNodeSelector
273+
274+ return true
275+ }
276+
277+ return false
278+ }
279+
280+ func (c * controller ) UpdateDaemonSet (rawObj client.Object , ds * apps.DaemonSet ) (updated bool ) {
281+ dp := rawObj .(* devicepluginv1.GpuDevicePlugin )
282+
283+ if ds .Spec .Template .Spec .Containers [0 ].Image != dp .Spec .Image {
284+ ds .Spec .Template .Spec .Containers [0 ].Image = dp .Spec .Image
285+ updated = true
286+ }
287+
288+ if processInitContainer (ds , dp ) {
289+ updated = true
290+ }
291+
292+ if processNodeSelector (ds , dp ) {
271293 updated = true
272294 }
273295
0 commit comments