Skip to content

Commit 52d3d4a

Browse files
committed
operator: fix setting QAT provisioning config volumeMount
setInitContainer() adds "init-sriov-numvfs" to initContainers but uses initcontainerName constant to search where to add the QAT configMap volumeMount. Fix by moving all code to use the const. It was also noticed in the controller logs that setting Pod Volumes is not idempotent but broken DaemonSet gets created: ""intel-device-plugins-manager: Reconciler error "err="DaemonSet.apps \"intel-qat-plugin\" is invalid: spec.template.spec.volumes[6].name: Duplicate value: \"qat-config\"" controller="qatdeviceplugin" controllerGroup="deviceplugin.intel.com" Finally, change 'qat-config' to 'intel-qat-config-volume' to better describe that it's a volume. Signed-off-by: Mikko Ylinen <[email protected]>
1 parent a5c6243 commit 52d3d4a

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

pkg/controllers/qat/controller.go

+23-10
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
const (
3838
ownerKey = ".metadata.controller.qat"
3939
initcontainerName = "intel-qat-initcontainer"
40+
qatConfigVolume = "intel-qat-config-volume"
4041
)
4142

4243
var defaultNodeSelector = deployments.QATPluginDaemonSet().Spec.Template.Spec.NodeSelector
@@ -96,10 +97,7 @@ func (c *controller) NewDaemonSet(rawObj client.Object) *apps.DaemonSet {
9697
daemonSet.Spec.Template.Spec.NodeSelector = devicePlugin.Spec.NodeSelector
9798
}
9899

99-
if devicePlugin.Spec.InitImage == "" {
100-
daemonSet.Spec.Template.Spec.InitContainers = nil
101-
daemonSet.Spec.Template.Spec.Volumes = removeVolume(daemonSet.Spec.Template.Spec.Volumes, "sysfs")
102-
} else {
100+
if devicePlugin.Spec.InitImage != "" {
103101
setInitContainer(&daemonSet.Spec.Template.Spec, devicePlugin.Spec)
104102
}
105103

@@ -129,7 +127,7 @@ func (c *controller) UpdateDaemonSet(rawObj client.Object, ds *apps.DaemonSet) (
129127
if ds.Spec.Template.Spec.InitContainers != nil {
130128
ds.Spec.Template.Spec.InitContainers = nil
131129
ds.Spec.Template.Spec.Volumes = removeVolume(ds.Spec.Template.Spec.Volumes, "sysfs")
132-
ds.Spec.Template.Spec.Volumes = removeVolume(ds.Spec.Template.Spec.Volumes, "qat-config")
130+
ds.Spec.Template.Spec.Volumes = removeVolume(ds.Spec.Template.Spec.Volumes, qatConfigVolume)
133131
updated = true
134132
}
135133
} else {
@@ -220,7 +218,7 @@ func setInitContainer(dsSpec *v1.PodSpec, dpSpec devicepluginv1.QatDevicePluginS
220218
{
221219
Image: dpSpec.InitImage,
222220
ImagePullPolicy: "IfNotPresent",
223-
Name: "init-sriov-numvfs",
221+
Name: initcontainerName,
224222
Env: []v1.EnvVar{
225223
{
226224
Name: "ENABLED_QAT_PF_PCIIDS",
@@ -254,20 +252,35 @@ func setInitContainer(dsSpec *v1.PodSpec, dpSpec devicepluginv1.QatDevicePluginS
254252
mode := int32(0440)
255253

256254
if dpSpec.ProvisioningConfig != "" {
257-
dsSpec.Volumes = append(dsSpec.Volumes, v1.Volume{
258-
Name: "qat-config",
255+
qatVol := v1.Volume{
256+
Name: qatConfigVolume,
259257
VolumeSource: v1.VolumeSource{
260258
ConfigMap: &v1.ConfigMapVolumeSource{
261259
LocalObjectReference: v1.LocalObjectReference{Name: dpSpec.ProvisioningConfig},
262260
DefaultMode: &mode,
263261
},
264262
},
265-
})
263+
}
264+
265+
volumeUpdated := false
266+
267+
// update ProvisioningConfig volume
268+
for idx, vol := range dsSpec.Volumes {
269+
if vol.Name == qatConfigVolume {
270+
dsSpec.Volumes[idx] = qatVol
271+
volumeUpdated = true
272+
}
273+
}
274+
275+
// or add if it's completely missing
276+
if !volumeUpdated {
277+
dsSpec.Volumes = append(dsSpec.Volumes, qatVol)
278+
}
266279

267280
for i, initcontainer := range dsSpec.InitContainers {
268281
if initcontainer.Name == initcontainerName {
269282
dsSpec.InitContainers[i].VolumeMounts = append(dsSpec.InitContainers[i].VolumeMounts, v1.VolumeMount{
270-
Name: "qat-config",
283+
Name: qatConfigVolume,
271284
MountPath: "/qat-init/conf",
272285
})
273286
}

test/envtest/qatdeviceplugin_controller_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ var _ = Describe("QatDevicePlugin Controller", func() {
136136
}
137137
mode := int32(0440)
138138
expectedVolume := v1.Volume{
139-
Name: "qat-config",
139+
Name: "intel-qat-config-volume",
140140
VolumeSource: v1.VolumeSource{
141141
ConfigMap: &v1.ConfigMapVolumeSource{
142142
LocalObjectReference: v1.LocalObjectReference{Name: updatedProvisioningConfig},

0 commit comments

Comments
 (0)