Skip to content

Commit

Permalink
Builder.cdiSetupDevicesInSpecdefConfig(): use configured CDI dirs
Browse files Browse the repository at this point in the history
Use the directories configured in containers.conf, now that
containers/common can tell us what they are, and now that it provides a
place to configure defaults for container tools, always override the
library's default set, even if it's empty.

Switch to the default CDI registry instead of the recenty-deprecated
non-global one.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
  • Loading branch information
nalind committed Apr 12, 2024
1 parent 7a36a70 commit 936dc1f
Showing 1 changed file with 10 additions and 17 deletions.
27 changes: 10 additions & 17 deletions run_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,32 +70,25 @@ func setChildProcess() error {

func (b *Builder) cdiSetupDevicesInSpec(deviceSpecs []string, configDir string, spec *specs.Spec) ([]string, error) {
leftoverDevices := deviceSpecs
registry, err := cdi.NewCache()
if err != nil {
return nil, fmt.Errorf("creating CDI registry: %w", err)
}
var configDirs []string
if b.CDIConfigDir != "" {
configDirs = append(configDirs, b.CDIConfigDir)
}
if configDir != "" {
configDirs = append(configDirs, configDir)
}
// TODO: CdiSpecDirs will be in containers/common v0.59.0 or later?
// defConfig, err := config.Default()
// if err != nil {
// return nil, fmt.Errorf("failed to get container config: %w", err)
// }
// configDirs = append(configDirs, defConfig.Engine.CdiSpecDirs.Get()...)
if len(configDirs) > 0 {
if err := registry.Configure(cdi.WithSpecDirs(configDirs...)); err != nil {
return nil, fmt.Errorf("CDI registry ignored configured directories %v: %w", configDirs, err)
}
defConfig, err := config.Default()
if err != nil {
return nil, fmt.Errorf("failed to get container config: %w", err)
}
configDirs = append(configDirs, defConfig.Engine.CdiSpecDirs.Get()...)
if err := cdi.Configure(cdi.WithSpecDirs(configDirs...)); err != nil {
return nil, fmt.Errorf("CDI default registry ignored configured directories %v: %w", configDirs, err)
}
if err := registry.Refresh(); err != nil {
logrus.Warnf("CDI registry refresh: %v", err)
if err := cdi.Refresh(); err != nil {
logrus.Warnf("CDI default registry refresh: %v", err)
} else {
leftoverDevices, err = registry.InjectDevices(spec, deviceSpecs...)
leftoverDevices, err = cdi.InjectDevices(spec, deviceSpecs...)
if err != nil {
logrus.Debugf("CDI device injection: %v, unresolved list %v", err, leftoverDevices)
}
Expand Down

0 comments on commit 936dc1f

Please sign in to comment.