From 4b2bca00b8afa4c6725ede020e61de6c96a24c2c Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Tue, 29 Oct 2024 06:09:50 +0900 Subject: [PATCH] config: migrate version before merging Prior to this commit, `/etc/containerd/config.toml` with no version was parsed as version 3. Signed-off-by: Akihiro Suda --- cmd/containerd/server/config/config.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/cmd/containerd/server/config/config.go b/cmd/containerd/server/config/config.go index 24687b873..bc1a43b2b 100644 --- a/cmd/containerd/server/config/config.go +++ b/cmd/containerd/server/config/config.go @@ -133,7 +133,12 @@ func (c *Config) ValidateVersion() error { // MigrateConfig will convert the config to the latest version before using func (c *Config) MigrateConfig(ctx context.Context) error { - for c.Version < version.ConfigVersion { + return c.MigrateConfigTo(ctx, version.ConfigVersion) +} + +// MigrateConfigTo will convert the config to the target version before using +func (c *Config) MigrateConfigTo(ctx context.Context, targetVersion int) error { + for c.Version < targetVersion { if m := migrations[c.Version]; m != nil { if err := m(ctx, c); err != nil { return err @@ -297,6 +302,15 @@ func LoadConfig(ctx context.Context, path string, out *Config) error { return err } + switch config.Version { + case 0, 1: + if err := config.MigrateConfigTo(ctx, out.Version); err != nil { + return err + } + default: + // NOP + } + if err := mergeConfig(out, config); err != nil { return err }