@@ -37,7 +37,9 @@ func TestGenerateSpec(t *testing.T) {
3737 require .NoError (t , err )
3838
3939 driverRoot := filepath .Join (moduleRoot , "testdata" , "lookup" , "rootfs-1" )
40- disableHook := cli .NewStringSlice ("enable-cuda-compat" , "create-symlinks" , "update-ldcache" )
40+ disableHook1 := cli .NewStringSlice ("enable-cuda-compat" )
41+ disableHook2 := cli .NewStringSlice ("enable-cuda-compat" , "update-ldcache" )
42+ disableHook3 := cli .NewStringSlice ("all" )
4143
4244 logger , _ := testlog .NewNullLogger ()
4345 testCases := []struct {
@@ -117,14 +119,14 @@ containerEdits:
117119` ,
118120 },
119121 {
120- description : "disableHooks " ,
122+ description : "disableHooks1 " ,
121123 options : options {
122124 format : "yaml" ,
123125 mode : "nvml" ,
124126 vendor : "example.com" ,
125127 class : "device" ,
126128 driverRoot : driverRoot ,
127- disableHooks : * disableHook ,
129+ disableHooks : * disableHook1 ,
128130 },
129131 expectedOptions : options {
130132 format : "yaml" ,
@@ -133,7 +135,128 @@ containerEdits:
133135 class : "device" ,
134136 nvidiaCDIHookPath : "/usr/bin/nvidia-cdi-hook" ,
135137 driverRoot : driverRoot ,
136- disableHooks : * disableHook ,
138+ disableHooks : * disableHook1 ,
139+ },
140+ expectedSpec : `---
141+ cdiVersion: 0.5.0
142+ kind: example.com/device
143+ devices:
144+ - name: "0"
145+ containerEdits:
146+ deviceNodes:
147+ - path: /dev/nvidia0
148+ hostPath: {{ .driverRoot }}/dev/nvidia0
149+ - name: all
150+ containerEdits:
151+ deviceNodes:
152+ - path: /dev/nvidia0
153+ hostPath: {{ .driverRoot }}/dev/nvidia0
154+ containerEdits:
155+ env:
156+ - NVIDIA_VISIBLE_DEVICES=void
157+ deviceNodes:
158+ - path: /dev/nvidiactl
159+ hostPath: {{ .driverRoot }}/dev/nvidiactl
160+ hooks:
161+ - hookName: createContainer
162+ path: /usr/bin/nvidia-cdi-hook
163+ args:
164+ - nvidia-cdi-hook
165+ - create-symlinks
166+ - --link
167+ - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so
168+ - hookName: createContainer
169+ path: /usr/bin/nvidia-cdi-hook
170+ args:
171+ - nvidia-cdi-hook
172+ - update-ldcache
173+ - --folder
174+ - /lib/x86_64-linux-gnu
175+ mounts:
176+ - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77
177+ containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77
178+ options:
179+ - ro
180+ - nosuid
181+ - nodev
182+ - bind
183+ ` ,
184+ },
185+ {
186+ description : "disableHooks2" ,
187+ options : options {
188+ format : "yaml" ,
189+ mode : "nvml" ,
190+ vendor : "example.com" ,
191+ class : "device" ,
192+ driverRoot : driverRoot ,
193+ disableHooks : * disableHook2 ,
194+ },
195+ expectedOptions : options {
196+ format : "yaml" ,
197+ mode : "nvml" ,
198+ vendor : "example.com" ,
199+ class : "device" ,
200+ nvidiaCDIHookPath : "/usr/bin/nvidia-cdi-hook" ,
201+ driverRoot : driverRoot ,
202+ disableHooks : * disableHook2 ,
203+ },
204+ expectedSpec : `---
205+ cdiVersion: 0.5.0
206+ kind: example.com/device
207+ devices:
208+ - name: "0"
209+ containerEdits:
210+ deviceNodes:
211+ - path: /dev/nvidia0
212+ hostPath: {{ .driverRoot }}/dev/nvidia0
213+ - name: all
214+ containerEdits:
215+ deviceNodes:
216+ - path: /dev/nvidia0
217+ hostPath: {{ .driverRoot }}/dev/nvidia0
218+ containerEdits:
219+ env:
220+ - NVIDIA_VISIBLE_DEVICES=void
221+ deviceNodes:
222+ - path: /dev/nvidiactl
223+ hostPath: {{ .driverRoot }}/dev/nvidiactl
224+ hooks:
225+ - hookName: createContainer
226+ path: /usr/bin/nvidia-cdi-hook
227+ args:
228+ - nvidia-cdi-hook
229+ - create-symlinks
230+ - --link
231+ - libcuda.so.1::/lib/x86_64-linux-gnu/libcuda.so
232+ mounts:
233+ - hostPath: {{ .driverRoot }}/lib/x86_64-linux-gnu/libcuda.so.999.88.77
234+ containerPath: /lib/x86_64-linux-gnu/libcuda.so.999.88.77
235+ options:
236+ - ro
237+ - nosuid
238+ - nodev
239+ - bind
240+ ` ,
241+ },
242+ {
243+ description : "disableHooksAll" ,
244+ options : options {
245+ format : "yaml" ,
246+ mode : "nvml" ,
247+ vendor : "example.com" ,
248+ class : "device" ,
249+ driverRoot : driverRoot ,
250+ disableHooks : * disableHook3 ,
251+ },
252+ expectedOptions : options {
253+ format : "yaml" ,
254+ mode : "nvml" ,
255+ vendor : "example.com" ,
256+ class : "device" ,
257+ nvidiaCDIHookPath : "/usr/bin/nvidia-cdi-hook" ,
258+ driverRoot : driverRoot ,
259+ disableHooks : * disableHook3 ,
137260 },
138261 expectedSpec : `---
139262cdiVersion: 0.5.0
0 commit comments