Fix backword-compatibility issue of non-versioned config file
According to the doc about `config.toml` of containerd: ``` If no version number is specified inside the config file then it is assumed to be a version 1 config and parsed as such. ``` However, it's not true recently. This will break the backward-compatibility in some environment. This commit fixes this issue. Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
This commit is contained in:
parent
5c6ea7fdc1
commit
fdb76f55d8
@ -120,7 +120,11 @@ var configCommand = cli.Command{
|
||||
|
||||
func platformAgnosticDefaultConfig() *srvconfig.Config {
|
||||
return &srvconfig.Config{
|
||||
Version: 2,
|
||||
// see: https://github.com/containerd/containerd/blob/5c6ea7fdc1247939edaddb1eba62a94527418687/RELEASES.md#daemon-configuration
|
||||
// this version MUST remain set to 1 until either there exists a means to
|
||||
// override / configure the default at the containerd cli .. or when
|
||||
// version 1 is no longer supported
|
||||
Version: 1,
|
||||
Root: defaults.DefaultRootDir,
|
||||
State: defaults.DefaultStateDir,
|
||||
GRPC: srvconfig.GRPCConfig{
|
||||
|
@ -98,6 +98,7 @@ func (c *Config) ValidateV2() error {
|
||||
version := c.GetVersion()
|
||||
if version < 2 {
|
||||
logrus.Warnf("deprecated version : `%d`, please switch to version `2`", version)
|
||||
return nil
|
||||
}
|
||||
for _, p := range c.DisabledPlugins {
|
||||
if len(strings.Split(p, ".")) < 4 {
|
||||
|
@ -207,3 +207,29 @@ version = 2
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, true, pluginConfig["shim_debug"])
|
||||
}
|
||||
|
||||
// TestDecodePluginInV1Config tests decoding non-versioned
|
||||
// config (should be parsed as V1 config).
|
||||
func TestDecodePluginInV1Config(t *testing.T) {
|
||||
data := `
|
||||
[plugins.linux]
|
||||
shim_debug = true
|
||||
`
|
||||
|
||||
tempDir, err := ioutil.TempDir("", "containerd_")
|
||||
assert.NilError(t, err)
|
||||
defer os.RemoveAll(tempDir)
|
||||
|
||||
path := filepath.Join(tempDir, "config.toml")
|
||||
err = ioutil.WriteFile(path, []byte(data), 0600)
|
||||
assert.NilError(t, err)
|
||||
|
||||
var out Config
|
||||
err = LoadConfig(path, &out)
|
||||
assert.NilError(t, err)
|
||||
|
||||
pluginConfig := map[string]interface{}{}
|
||||
_, err = out.Decode(&plugin.Registration{ID: "linux", Config: &pluginConfig})
|
||||
assert.NilError(t, err)
|
||||
assert.Equal(t, true, pluginConfig["shim_debug"])
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user