Skip to content

Commit 3a95a08

Browse files
committed
add support for CDI device request using devices
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
1 parent f794c79 commit 3a95a08

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ require (
5757
google.golang.org/grpc v1.62.0
5858
gopkg.in/yaml.v3 v3.0.1
5959
gotest.tools/v3 v3.5.1
60+
tags.cncf.io/container-device-interface v0.8.0
6061
)
6162

6263
require (
@@ -190,5 +191,4 @@ require (
190191
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
191192
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
192193
sigs.k8s.io/yaml v1.3.0 // indirect
193-
tags.cncf.io/container-device-interface v0.8.0 // indirect
194194
)

pkg/compose/create.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import (
4848
"github.com/docker/docker/errdefs"
4949
"github.com/docker/go-connections/nat"
5050
"github.com/sirupsen/logrus"
51+
cdi "tags.cncf.io/container-device-interface/pkg/parser"
5152
)
5253

5354
type createOptions struct {
@@ -645,14 +646,28 @@ func getDeployResources(s types.ServiceConfig) container.Resources {
645646
setReservations(s.Deploy.Resources.Reservations, &resources)
646647
}
647648

649+
var cdiDeviceNames []string
648650
for _, device := range s.Devices {
651+
652+
if device.Source == device.Target && cdi.IsQualifiedName(device.Source) {
653+
cdiDeviceNames = append(cdiDeviceNames, device.Source)
654+
continue
655+
}
656+
649657
resources.Devices = append(resources.Devices, container.DeviceMapping{
650658
PathOnHost: device.Source,
651659
PathInContainer: device.Target,
652660
CgroupPermissions: device.Permissions,
653661
})
654662
}
655663

664+
if len(cdiDeviceNames) > 0 {
665+
resources.DeviceRequests = append(resources.DeviceRequests, container.DeviceRequest{
666+
Driver: "cdi",
667+
DeviceIDs: cdiDeviceNames,
668+
})
669+
}
670+
656671
ulimits := toUlimits(s.Ulimits)
657672
resources.Ulimits = ulimits
658673
return resources

0 commit comments

Comments
 (0)