Skip to content

Commit 3449222

Browse files
committed
tofix
Signed-off-by: Evan Lezar <[email protected]>
1 parent 5912a7c commit 3449222

File tree

5 files changed

+131
-21
lines changed

5 files changed

+131
-21
lines changed

cmd/nvidia-ctk-installer/container/runtime/containerd/config_test.go

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1777,6 +1777,113 @@ version = 3
17771777

17781778
require.NoFileExists(t, co.DropInConfig)
17791779

1780+
return nil
1781+
},
1782+
},
1783+
{
1784+
description: "setting drop-in-config to empty modifies existing config",
1785+
containerOptions: container.Options{
1786+
TopLevelConfigPath: "{{ .testRoot }}/etc/containerd/config.toml",
1787+
DropInConfig: "",
1788+
RuntimeName: "nvidia",
1789+
RuntimeDir: "/usr/bin",
1790+
SetAsDefault: false,
1791+
RestartMode: "none",
1792+
ExecutablePath: "not-containerd",
1793+
},
1794+
options: Options{
1795+
runtimeType: "io.containerd.runc.v2",
1796+
},
1797+
prepareEnvironment: func(t *testing.T, co *container.Options, o *Options) error {
1798+
require.NoError(t, os.MkdirAll(filepath.Dir(co.TopLevelConfigPath), 0755))
1799+
1800+
initialConfig := `version = 2
1801+
1802+
[plugins]
1803+
[plugins."io.containerd.grpc.v1.cri"]
1804+
[plugins."io.containerd.grpc.v1.cri".containerd]
1805+
default_runtime_name = "runc"
1806+
1807+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
1808+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
1809+
runtime_type = "io.containerd.runc.v2"
1810+
1811+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
1812+
BinaryName = "/usr/bin/runc"
1813+
`
1814+
require.NoError(t, os.WriteFile(co.TopLevelConfigPath, []byte(initialConfig), 0600))
1815+
return nil
1816+
},
1817+
assertSetupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {
1818+
require.FileExists(t, co.TopLevelConfigPath)
1819+
1820+
actual, err := os.ReadFile(co.TopLevelConfigPath)
1821+
require.NoError(t, err)
1822+
1823+
expected := `version = 2
1824+
1825+
[plugins]
1826+
1827+
[plugins."io.containerd.grpc.v1.cri"]
1828+
1829+
[plugins."io.containerd.grpc.v1.cri".containerd]
1830+
default_runtime_name = "runc"
1831+
1832+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
1833+
1834+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
1835+
runtime_type = "io.containerd.runc.v2"
1836+
1837+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
1838+
BinaryName = "/usr/bin/nvidia-container-runtime"
1839+
1840+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi]
1841+
runtime_type = "io.containerd.runc.v2"
1842+
1843+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-cdi.options]
1844+
BinaryName = "/usr/bin/nvidia-container-runtime.cdi"
1845+
1846+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy]
1847+
runtime_type = "io.containerd.runc.v2"
1848+
1849+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia-legacy.options]
1850+
BinaryName = "/usr/bin/nvidia-container-runtime.legacy"
1851+
1852+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
1853+
runtime_type = "io.containerd.runc.v2"
1854+
1855+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
1856+
BinaryName = "/usr/bin/runc"
1857+
`
1858+
require.Equal(t, expected, string(actual))
1859+
1860+
return nil
1861+
},
1862+
assertCleanupPostConditions: func(t *testing.T, co *container.Options, o *Options) error {
1863+
require.FileExists(t, co.TopLevelConfigPath)
1864+
1865+
actual, err := os.ReadFile(co.TopLevelConfigPath)
1866+
require.NoError(t, err)
1867+
1868+
expected := `version = 2
1869+
1870+
[plugins]
1871+
1872+
[plugins."io.containerd.grpc.v1.cri"]
1873+
1874+
[plugins."io.containerd.grpc.v1.cri".containerd]
1875+
default_runtime_name = "runc"
1876+
1877+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
1878+
1879+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
1880+
runtime_type = "io.containerd.runc.v2"
1881+
1882+
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
1883+
BinaryName = "/usr/bin/runc"
1884+
`
1885+
require.Equal(t, expected, string(actual))
1886+
17801887
return nil
17811888
},
17821889
},

cmd/nvidia-ctk-installer/container/runtime/containerd/containerd.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ type Options struct {
5050
ContainerRuntimeModesCDIAnnotationPrefixes []string
5151

5252
runtimeConfigOverrideJSON string
53-
54-
DisableDropInConfig bool
5553
}
5654

5755
func Flags(opts *Options) []cli.Flag {
@@ -84,12 +82,6 @@ func Flags(opts *Options) []cli.Flag {
8482
Value: "{}",
8583
Sources: cli.EnvVars("RUNTIME_CONFIG_OVERRIDE", "CONTAINERD_RUNTIME_CONFIG_OVERRIDE"),
8684
},
87-
&cli.BoolFlag{
88-
Name: "disable-drop-in-config",
89-
Usage: "Disable the use of drop-in config files. NVIDIA runtimes will be added to the top-level config file instead.",
90-
Destination: &opts.DisableDropInConfig,
91-
Sources: cli.EnvVars("CONTAINERD_DISABLE_DROP_IN_CONFIG"),
92-
},
9385
}
9486

9587
return flags
@@ -191,7 +183,7 @@ func getRuntimeConfig(o *container.Options, co *Options) (engine.Interface, erro
191183
containerd.WithRuntimeType(co.runtimeType),
192184
containerd.WithUseLegacyConfig(co.useLegacyConfig),
193185
containerd.WithContainerAnnotations(co.containerAnnotationsFromCDIPrefixes()...),
194-
containerd.WithDisableDropInConfig(co.DisableDropInConfig),
186+
containerd.WithDisableDropInConfig(o.DropInConfig == ""),
195187
}
196188
if o.DropInConfigHostPath != "" && o.DropInConfig != "" {
197189
options = append(options,

cmd/nvidia-ctk-installer/container/runtime/runtime.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func Flags(opts *Options) []cli.Flag {
5656
},
5757
&cli.StringFlag{
5858
Name: "drop-in-config",
59-
Usage: "Path to the NVIDIA-specific drop-in config file",
59+
Usage: "Path to the NVIDIA-specific drop-in config file. If this is empty, the top-level config is modified directly.",
6060
Value: runtimeSpecificDefault,
6161
Destination: &opts.DropInConfig,
6262
Sources: cli.EnvVars("RUNTIME_DROP_IN_CONFIG"),
@@ -145,9 +145,6 @@ func (opts *Options) Validate(logger logger.Interface, c *cli.Command, runtime s
145145
opts.DropInConfig = ""
146146
}
147147
case containerd.Name:
148-
if opts.containerdOptions.DisableDropInConfig {
149-
opts.DropInConfig = ""
150-
}
151148
case crio.Name:
152149
if err := opts.crioOptions.Validate(logger, c); err != nil {
153150
return fmt.Errorf("invalid cri-o config: %w", err)

pkg/config/engine/crio/crio.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,22 @@ func New(opts ...Option) (engine.Interface, error) {
6262
b.configSource = toml.FromFile(b.topLevelConfigPath)
6363
}
6464

65-
sourceConfig, err := b.configSource.Load()
65+
sourceConfigTree, err := b.configSource.Load()
6666
if err != nil {
6767
return nil, err
6868
}
6969

70+
sourceConfig := &Config{
71+
Tree: sourceConfigTree,
72+
Logger: b.logger,
73+
}
74+
75+
if b.disableDropInConfig {
76+
return sourceConfig, nil
77+
}
78+
7079
cfg := &engine.Config{
71-
Source: &Config{
72-
Tree: sourceConfig,
73-
Logger: b.logger,
74-
},
80+
Source: sourceConfig,
7581
Destination: &Config{
7682
Tree: toml.NewEmpty(),
7783
Logger: b.logger,

pkg/config/engine/crio/option.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,22 @@ import (
2222
)
2323

2424
type builder struct {
25-
logger logger.Interface
26-
configSource toml.Loader
27-
topLevelConfigPath string
25+
logger logger.Interface
26+
configSource toml.Loader
27+
topLevelConfigPath string
28+
disableDropInConfig bool
2829
}
2930

3031
// Option defines a function that can be used to configure the config builder
3132
type Option func(*builder)
3233

34+
// WithDisableDropInConfig disables the use of drop-in config files
35+
func WithDisableDropInConfig(disable bool) Option {
36+
return func(b *builder) {
37+
b.disableDropInConfig = disable
38+
}
39+
}
40+
3341
// WithLogger sets the logger for the config builder
3442
func WithLogger(logger logger.Interface) Option {
3543
return func(b *builder) {

0 commit comments

Comments
 (0)