summaryrefslogtreecommitdiff
path: root/pkg/specgen
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2022-01-14 15:17:21 +0100
committerGitHub <noreply@github.com>2022-01-14 15:17:21 +0100
commit7ab99227e63bfec734bf2372e80ef5a93dc2ef54 (patch)
tree4d5cc90840d8a13717891aecadf170533830d117 /pkg/specgen
parent9686216f9d44e1d6b4fa60a5c0866746d1afa60b (diff)
parent72ab66d88622eadcf7c603aa5e6c0751d72214dc (diff)
downloadpodman-7ab99227e63bfec734bf2372e80ef5a93dc2ef54.tar.gz
podman-7ab99227e63bfec734bf2372e80ef5a93dc2ef54.tar.bz2
podman-7ab99227e63bfec734bf2372e80ef5a93dc2ef54.zip
Merge pull request #12825 from elezar/update-cdi
Update use of CDI API
Diffstat (limited to 'pkg/specgen')
-rw-r--r--pkg/specgen/generate/container_create.go18
1 files changed, 12 insertions, 6 deletions
diff --git a/pkg/specgen/generate/container_create.go b/pkg/specgen/generate/container_create.go
index 7d792b3b1..dc116d1e6 100644
--- a/pkg/specgen/generate/container_create.go
+++ b/pkg/specgen/generate/container_create.go
@@ -6,7 +6,7 @@ import (
"path/filepath"
"strings"
- cdi "github.com/container-orchestrated-devices/container-device-interface/pkg"
+ cdi "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi"
"github.com/containers/common/libimage"
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/libpod/define"
@@ -199,20 +199,21 @@ func ExecuteCreate(ctx context.Context, rt *libpod.Runtime, runtimeSpec *spec.Sp
return ctr, rt.PrepareVolumeOnCreateContainer(ctx, ctr)
}
+// ExtractCDIDevices process the list of Devices in the spec and determines if any of these are CDI devices.
+// The CDI devices are added to the list of CtrCreateOptions.
+// Note that this may modify the device list associated with the spec, which should then only contain non-CDI devices.
func ExtractCDIDevices(s *specgen.SpecGenerator) []libpod.CtrCreateOption {
devs := make([]spec.LinuxDevice, 0, len(s.Devices))
var cdiDevs []string
var options []libpod.CtrCreateOption
for _, device := range s.Devices {
- isCDIDevice, err := cdi.HasDevice(device.Path)
- if err != nil {
- logrus.Debugf("CDI HasDevice Error: %v", err)
- }
- if err == nil && isCDIDevice {
+ if isCDIDevice(device.Path) {
+ logrus.Debugf("Identified CDI device %v", device.Path)
cdiDevs = append(cdiDevs, device.Path)
continue
}
+ logrus.Debugf("Non-CDI device %v; assuming standard device", device.Path)
devs = append(devs, device)
}
s.Devices = devs
@@ -222,6 +223,11 @@ func ExtractCDIDevices(s *specgen.SpecGenerator) []libpod.CtrCreateOption {
return options
}
+// isCDIDevice checks whether the specified device is a CDI device.
+func isCDIDevice(device string) bool {
+ return cdi.IsQualifiedName(device)
+}
+
func createContainerOptions(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGenerator, pod *libpod.Pod, volumes []*specgen.NamedVolume, overlays []*specgen.OverlayVolume, imageData *libimage.ImageData, command []string, infraVolumes bool, compatibleOptions libpod.InfraInherit) ([]libpod.CtrCreateOption, error) {
var options []libpod.CtrCreateOption
var err error