Merge branch 'CNT-3297/cdi-config' into 'main'

Add runtime config option for CDI spec dirs

See merge request nvidia/container-toolkit/container-toolkit!190
This commit is contained in:
Evan Lezar 2022-07-13 09:36:33 +00:00
commit eb85d45137
2 changed files with 18 additions and 4 deletions

View File

@ -44,6 +44,12 @@ type RuntimeConfig struct {
// modesConfig defines (optional) per-mode configs
type modesConfig struct {
CSV csvModeConfig `toml:"csv"`
CDI cdiModeConfig `toml:"cdi"`
}
type cdiModeConfig struct {
// SpecDirs allows for the default spec dirs for CDI to be overridden
SpecDirs []string `toml:"spec-dirs"`
}
type csvModeConfig struct {

View File

@ -29,8 +29,9 @@ import (
)
type cdiModifier struct {
logger *logrus.Logger
devices []string
logger *logrus.Logger
specDirs []string
devices []string
}
// NewCDIModifier creates an OCI spec modifier that determines the modifications to make based on the
@ -46,9 +47,15 @@ func NewCDIModifier(logger *logrus.Logger, cfg *config.Config, ociSpec oci.Spec)
return nil, nil
}
specDirs := cdi.DefaultSpecDirs
if len(cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.SpecDirs) > 0 {
specDirs = cfg.NVIDIAContainerRuntimeConfig.Modes.CDI.SpecDirs
}
m := cdiModifier{
logger: logger,
devices: devices,
logger: logger,
specDirs: specDirs,
devices: devices,
}
return m, nil
@ -91,6 +98,7 @@ func getDevicesFromSpec(ociSpec oci.Spec) ([]string, error) {
// Modify loads the CDI registry and injects the specified CDI devices into the OCI runtime specification.
func (m cdiModifier) Modify(spec *specs.Spec) error {
registry := cdi.GetRegistry(
cdi.WithSpecDirs(m.specDirs...),
cdi.WithAutoRefresh(false),
)
if errs := registry.GetErrors(); len(errs) > 0 {