mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2025-04-19 13:45:19 +00:00
Merge branch 'ignore-nvidia-visible-devices' into 'master'
Ignore NVIDIA_VISIBLE_DEVICES for containers with insufficent privileges See merge request nvidia/container-toolkit/container-toolkit!25
This commit is contained in:
commit
e8aa3cc8c3
@ -295,8 +295,8 @@ func getDevices(hookConfig *HookConfig, env map[string]string, mounts []Mount, p
|
|||||||
return devices
|
return devices
|
||||||
}
|
}
|
||||||
|
|
||||||
// Error out otherwise
|
configName := hookConfig.getConfigOption("AcceptEnvvarUnprivileged")
|
||||||
log.Panicln("insufficient privileges to read device list from NVIDIA_VISIBLE_DEVICES envvar")
|
log.Printf("Ignoring devices specified in NVIDIA_VISIBLE_DEVICES (privileged=%v, %v=%v) ", privileged, configName, hookConfig.AcceptEnvvarUnprivileged)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -540,7 +540,6 @@ func TestDeviceListSourcePriority(t *testing.T) {
|
|||||||
acceptUnprivileged bool
|
acceptUnprivileged bool
|
||||||
acceptMounts bool
|
acceptMounts bool
|
||||||
expectedDevices *string
|
expectedDevices *string
|
||||||
expectedPanic bool
|
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
description: "Mount devices, unprivileged, no accept unprivileged",
|
description: "Mount devices, unprivileged, no accept unprivileged",
|
||||||
@ -567,7 +566,7 @@ func TestDeviceListSourcePriority(t *testing.T) {
|
|||||||
privileged: false,
|
privileged: false,
|
||||||
acceptUnprivileged: false,
|
acceptUnprivileged: false,
|
||||||
acceptMounts: true,
|
acceptMounts: true,
|
||||||
expectedPanic: true,
|
expectedDevices: nil,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: "No mount devices, privileged, no accept unprivileged",
|
description: "No mount devices, privileged, no accept unprivileged",
|
||||||
@ -621,7 +620,7 @@ func TestDeviceListSourcePriority(t *testing.T) {
|
|||||||
privileged: false,
|
privileged: false,
|
||||||
acceptUnprivileged: false,
|
acceptUnprivileged: false,
|
||||||
acceptMounts: false,
|
acceptMounts: false,
|
||||||
expectedPanic: true,
|
expectedDevices: nil,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, tc := range tests {
|
for _, tc := range tests {
|
||||||
@ -638,12 +637,6 @@ func TestDeviceListSourcePriority(t *testing.T) {
|
|||||||
devices = getDevices(&hookConfig, env, tc.mountDevices, tc.privileged, false)
|
devices = getDevices(&hookConfig, env, tc.mountDevices, tc.privileged, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// For any tests that are expected to panic, make sure they do.
|
|
||||||
if tc.expectedPanic {
|
|
||||||
mustPanic(t, getDevices)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// For all other tests, just grab the devices and check the results
|
// For all other tests, just grab the devices and check the results
|
||||||
getDevices()
|
getDevices()
|
||||||
if !reflect.DeepEqual(devices, tc.expectedDevices) {
|
if !reflect.DeepEqual(devices, tc.expectedDevices) {
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
"github.com/BurntSushi/toml"
|
"github.com/BurntSushi/toml"
|
||||||
)
|
)
|
||||||
@ -86,3 +87,18 @@ func getHookConfig() (config HookConfig) {
|
|||||||
|
|
||||||
return config
|
return config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// getConfigOption returns the toml config option associated with the
|
||||||
|
// specified struct field.
|
||||||
|
func (c HookConfig) getConfigOption(fieldName string) string {
|
||||||
|
t := reflect.TypeOf(c)
|
||||||
|
f, ok := t.FieldByName(fieldName)
|
||||||
|
if !ok {
|
||||||
|
return fieldName
|
||||||
|
}
|
||||||
|
v, ok := f.Tag.Lookup("toml")
|
||||||
|
if !ok {
|
||||||
|
return fieldName
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user