Skip to content

Commit 3b0be33

Browse files
committed
Add support for * for device name in --device
This takes care of the [issue](docker/cli#2968) from the server side Signed-off-by: Venky Natham <[email protected]>
1 parent d456264 commit 3b0be33

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

oci/devices_linux.go

+20
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,26 @@ func deviceCgroup(d *devices.Device) specs.LinuxDeviceCgroup {
3838
func DevicesFromPath(pathOnHost, pathInContainer, cgroupPermissions string) (devs []specs.LinuxDevice, devPermissions []specs.LinuxDeviceCgroup, err error) {
3939
resolvedPathOnHost := pathOnHost
4040

41+
// Only wildcard * is supported
42+
if strings.HasSuffix(resolvedPathOnHost, "*") {
43+
devicePaths, _ := filepath.Glob(resolvedPathOnHost)
44+
var err error
45+
var dev *devices.Device
46+
for _, devicePath := range devicePaths {
47+
dev, err = devices.DeviceFromPath(devicePath, cgroupPermissions)
48+
if err != nil {
49+
return nil, nil, fmt.Errorf("no device %q %s", devicePath, err)
50+
}
51+
devs = append(devs, Device(dev))
52+
devPermissions = append(devPermissions, deviceCgroup(dev))
53+
}
54+
if len(devs) > 0 {
55+
return devs, devPermissions, nil
56+
} else {
57+
return devs, devPermissions, fmt.Errorf("error gathering device information while adding custom device %q: %s", pathOnHost, err)
58+
}
59+
}
60+
4161
// check if it is a symbolic link
4262
if src, e := os.Lstat(pathOnHost); e == nil && src.Mode()&os.ModeSymlink == os.ModeSymlink {
4363
if linkedPathOnHost, e := filepath.EvalSymlinks(pathOnHost); e == nil {

vendor/github.com/containerd/containerd/oci/utils_unix.go

+20
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)