From 62575f6a6d857983de6d448d0eb1b0056eb88dfa Mon Sep 17 00:00:00 2001 From: Nalin Dahyabhai Date: Fri, 12 Apr 2024 10:31:51 -0400 Subject: [PATCH] Builder.cdiSetupDevicesInSpecdefConfig(): use configured CDI dirs 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 --- run_linux.go | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/run_linux.go b/run_linux.go index 300f6590bfc..a5b68ee6b34 100644 --- a/run_linux.go +++ b/run_linux.go @@ -70,10 +70,6 @@ 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) @@ -81,21 +77,18 @@ func (b *Builder) cdiSetupDevicesInSpec(deviceSpecs []string, configDir string, 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) }