diff --git a/internal/state/driver_test.go b/internal/state/driver_test.go index e42513df4e..1052ef866b 100644 --- a/internal/state/driver_test.go +++ b/internal/state/driver_test.go @@ -497,6 +497,65 @@ func TestDriverGDS(t *testing.T) { require.Equal(t, string(o), actual) } +func TestDriverGDSImagePullPolicy(t *testing.T) { + testCases := []struct { + description string + imagePullPolicy string + expected corev1.PullPolicy + }{ + { + description: "omitted defaults to IfNotPresent", + expected: corev1.PullIfNotPresent, + }, + { + description: "IfNotPresent", + imagePullPolicy: "IfNotPresent", + expected: corev1.PullIfNotPresent, + }, + { + description: "Always", + imagePullPolicy: "Always", + expected: corev1.PullAlways, + }, + { + description: "Never", + imagePullPolicy: "Never", + expected: corev1.PullNever, + }, + } + + state, err := NewStateDriver(nil, "", nil, manifestDir) + require.NoError(t, err) + stateDriver, ok := state.(*stateDriver) + require.True(t, ok) + + for _, tc := range testCases { + t.Run(tc.description, func(t *testing.T) { + renderData := getMinimalDriverRenderData() + renderData.GDS = &gdsDriverSpec{ + ImagePath: "nvcr.io/nvidia/cloud-native/nvidia-fs:2.16.1", + Spec: &nvidiav1alpha1.GPUDirectStorageSpec{ + Enabled: new(true), + ImagePullPolicy: tc.imagePullPolicy, + }, + } + + objs, err := stateDriver.renderer.RenderObjects( + &render.TemplatingData{ + Data: renderData, + }) + require.NoError(t, err) + + ds, err := getDaemonsetFromObjects(objs) + require.NoError(t, err) + + gdsContainer := findContainerByName(ds.Spec.Template.Spec.Containers, "nvidia-fs-ctr") + require.NotNil(t, gdsContainer) + require.Equal(t, tc.expected, gdsContainer.ImagePullPolicy) + }) + } +} + func TestDriverGDRCopy(t *testing.T) { const ( testName = "driver-gdrcopy" diff --git a/manifests/state-driver/0500_daemonset.yaml b/manifests/state-driver/0500_daemonset.yaml index 1532a5ceae..c796d38cbf 100644 --- a/manifests/state-driver/0500_daemonset.yaml +++ b/manifests/state-driver/0500_daemonset.yaml @@ -451,7 +451,7 @@ spec: # GDS and precompiled are enabled {{- if and (.GDS) (deref .GDS.Spec.Enabled) }} - image: {{ .GDS.ImagePath }} - imagePullPolicy: IfNotPresent + imagePullPolicy: {{ default "IfNotPresent" .GDS.Spec.ImagePullPolicy }} name: nvidia-fs-ctr {{- if and (.Openshift) (.Runtime.OpenshiftDriverToolkitEnabled) }} command: ["ocp_dtk_entrypoint"]