mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2025-06-26 18:18:24 +00:00
Use toml representation to get defaults
Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
@@ -66,7 +66,7 @@ func GetConfig() (*Config, error) {
|
||||
|
||||
tomlFile, err := os.Open(configFilePath)
|
||||
if err != nil {
|
||||
return getDefaultConfig(), nil
|
||||
return getDefaultConfig()
|
||||
}
|
||||
defer tomlFile.Close()
|
||||
|
||||
@@ -90,41 +90,53 @@ func loadConfigFrom(reader io.Reader) (*Config, error) {
|
||||
|
||||
// getConfigFrom reads the nvidia container runtime config from the specified toml Tree.
|
||||
func getConfigFrom(toml *toml.Tree) (*Config, error) {
|
||||
cfg := getDefaultConfig()
|
||||
|
||||
if toml == nil {
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
cfg.AcceptEnvvarUnprivileged = toml.GetDefault("accept-nvidia-visible-devices-envvar-when-unprivileged", cfg.AcceptEnvvarUnprivileged).(bool)
|
||||
|
||||
cfg.NVIDIAContainerCLIConfig = *getContainerCLIConfigFrom(toml)
|
||||
cfg.NVIDIACTKConfig = *getCTKConfigFrom(toml)
|
||||
runtimeConfig, err := getRuntimeConfigFrom(toml)
|
||||
cfg, err := getDefaultConfig()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to load nvidia-container-runtime config: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
cfg.NVIDIAContainerRuntimeConfig = *runtimeConfig
|
||||
|
||||
runtimeHookConfig, err := getRuntimeHookConfigFrom(toml)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to load nvidia-container-runtime-hook config: %v", err)
|
||||
if err := toml.Unmarshal(cfg); err != nil {
|
||||
return nil, fmt.Errorf("failed to unmarshal config: %v", err)
|
||||
}
|
||||
cfg.NVIDIAContainerRuntimeHookConfig = *runtimeHookConfig
|
||||
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
// getDefaultConfig defines the default values for the config
|
||||
func getDefaultConfig() *Config {
|
||||
c := Config{
|
||||
AcceptEnvvarUnprivileged: true,
|
||||
NVIDIAContainerCLIConfig: *getDefaultContainerCLIConfig(),
|
||||
NVIDIACTKConfig: *getDefaultCTKConfig(),
|
||||
NVIDIAContainerRuntimeConfig: *GetDefaultRuntimeConfig(),
|
||||
func getDefaultConfig() (*Config, error) {
|
||||
tomlConfig, err := GetDefaultConfigToml()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &c
|
||||
// tomlConfig above includes information about the default values and comments.
|
||||
// we need to marshal it back to a string and then unmarshal it to strip the comments.
|
||||
contents, err := tomlConfig.ToTomlString()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reloaded, err := toml.Load(contents)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
d := Config{}
|
||||
if err := reloaded.Unmarshal(&d); err != nil {
|
||||
return nil, fmt.Errorf("failed to unmarshal config: %v", err)
|
||||
}
|
||||
|
||||
// The default value for the accept-nvidia-visible-devices-envvar-when-unprivileged is non-standard.
|
||||
// As such we explicitly handle it being set here.
|
||||
if reloaded.Get("accept-nvidia-visible-devices-envvar-when-unprivileged") == nil {
|
||||
d.AcceptEnvvarUnprivileged = true
|
||||
}
|
||||
// The default value for the nvidia-container-runtime.debug is non-standard.
|
||||
// As such we explicitly handle it being set here.
|
||||
if reloaded.Get("nvidia-container-runtime.debug") == nil {
|
||||
d.NVIDIAContainerRuntimeConfig.DebugFilePath = "/dev/null"
|
||||
}
|
||||
return &d, nil
|
||||
}
|
||||
|
||||
// GetDefaultConfigToml returns the default config as a toml Tree.
|
||||
|
||||
Reference in New Issue
Block a user