mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-22 00:08:11 +00:00
Ensure default config comments are consistent
Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
parent
e51621aa7f
commit
ec63533eb1
@ -18,7 +18,8 @@ package config
|
||||
|
||||
// ContainerCLIConfig stores the options for the nvidia-container-cli
|
||||
type ContainerCLIConfig struct {
|
||||
Root string `toml:"root"`
|
||||
LoadKmods bool `toml:"load-kmods"`
|
||||
Ldconfig string `toml:"ldconfig"`
|
||||
Root string `toml:"root"`
|
||||
LoadKmods bool `toml:"load-kmods"`
|
||||
Ldconfig string `toml:"ldconfig"`
|
||||
Environment []string `toml:"environment"`
|
||||
}
|
||||
|
@ -57,6 +57,7 @@ var (
|
||||
// Config represents the contents of the config.toml file for the NVIDIA Container Toolkit
|
||||
// Note: This is currently duplicated by the HookConfig in cmd/nvidia-container-toolkit/hook_config.go
|
||||
type Config struct {
|
||||
DisableRequire bool `toml:"disable-require"`
|
||||
AcceptEnvvarUnprivileged bool `toml:"accept-nvidia-visible-devices-envvar-when-unprivileged"`
|
||||
|
||||
NVIDIAContainerCLIConfig ContainerCLIConfig `toml:"nvidia-container-cli"`
|
||||
@ -279,25 +280,26 @@ func (c Config) asCommentedToml() (*toml.Tree, error) {
|
||||
}
|
||||
for k, v := range commentedDefaults {
|
||||
set := asToml.Get(k)
|
||||
fmt.Printf("k=%v v=%+v set=%+v\n", k, v, set)
|
||||
if !shouldComment(k, v, set) {
|
||||
continue
|
||||
}
|
||||
fmt.Printf("set=%+v v=%+v\n", set, v)
|
||||
asToml.SetWithComment(k, "", true, v)
|
||||
}
|
||||
|
||||
return asToml, nil
|
||||
}
|
||||
|
||||
func shouldComment(key string, value interface{}, set interface{}) bool {
|
||||
func shouldComment(key string, defaultValue interface{}, setTo interface{}) bool {
|
||||
if key == "nvidia-container-cli.root" && setTo == "" {
|
||||
return true
|
||||
}
|
||||
if key == "nvidia-container-cli.user" && !getCommentedUserGroup() {
|
||||
return false
|
||||
}
|
||||
if key == "nvidia-container-runtime.debug" && set == "/dev/null" {
|
||||
if key == "nvidia-container-runtime.debug" && setTo == "/dev/null" {
|
||||
return true
|
||||
}
|
||||
if set == nil || value == set {
|
||||
if setTo == nil || defaultValue == setTo {
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@ -234,3 +235,47 @@ func TestGetConfig(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfigDefault(t *testing.T) {
|
||||
config, err := getDefault()
|
||||
require.NoError(t, err)
|
||||
|
||||
buffer := new(bytes.Buffer)
|
||||
_, err = config.Save(buffer)
|
||||
require.NoError(t, err)
|
||||
|
||||
var lines []string
|
||||
for _, l := range strings.Split(buffer.String(), "\n") {
|
||||
l = strings.TrimSpace(l)
|
||||
if strings.HasPrefix(l, "# ") {
|
||||
l = "#" + strings.TrimPrefix(l, "# ")
|
||||
}
|
||||
lines = append(lines, l)
|
||||
}
|
||||
|
||||
// We take the lines from the config that was included in previous packages.
|
||||
expectedLines := []string{
|
||||
"disable-require = false",
|
||||
"#swarm-resource = \"DOCKER_RESOURCE_GPU\"",
|
||||
"#accept-nvidia-visible-devices-envvar-when-unprivileged = true",
|
||||
"#accept-nvidia-visible-devices-as-volume-mounts = false",
|
||||
|
||||
"#root = \"/run/nvidia/driver\"",
|
||||
"#path = \"/usr/bin/nvidia-container-cli\"",
|
||||
"environment = []",
|
||||
"#debug = \"/var/log/nvidia-container-toolkit.log\"",
|
||||
"#ldcache = \"/etc/ld.so.cache\"",
|
||||
"load-kmods = true",
|
||||
"#no-cgroups = false",
|
||||
"#user = \"root:video\"",
|
||||
|
||||
"[nvidia-container-runtime]",
|
||||
"#debug = \"/var/log/nvidia-container-runtime.log\"",
|
||||
"log-level = \"info\"",
|
||||
"mode = \"auto\"",
|
||||
|
||||
"mount-spec-path = \"/etc/nvidia-container-runtime/host-files-for-container.d\"",
|
||||
}
|
||||
|
||||
require.Subset(t, lines, expectedLines)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user