From f8f1e5f7a62db595a22e48bc316df8870419db06 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Wed, 7 Feb 2024 22:19:35 -0800 Subject: [PATCH] Add container monitor plugin type for restart Adds a plugin type for container monitor. Rename the task monitor type to avoid confusion. Add config migration for new plugin types to pass existing migration tests. Signed-off-by: Derek McGowan --- core/metrics/cgroups/cgroups.go | 17 +++++++++++++++++ plugins/restart/monitor.go | 16 +++++++++++++++- plugins/types.go | 4 +++- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/core/metrics/cgroups/cgroups.go b/core/metrics/cgroups/cgroups.go index 604977cf0..972105308 100644 --- a/core/metrics/cgroups/cgroups.go +++ b/core/metrics/cgroups/cgroups.go @@ -19,12 +19,15 @@ package cgroups import ( + "context" + "github.com/containerd/cgroups/v3" v1 "github.com/containerd/containerd/v2/core/metrics/cgroups/v1" v2 "github.com/containerd/containerd/v2/core/metrics/cgroups/v2" "github.com/containerd/containerd/v2/core/runtime" "github.com/containerd/containerd/v2/pkg/events" "github.com/containerd/containerd/v2/plugins" + "github.com/containerd/containerd/v2/version" "github.com/containerd/platforms" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" @@ -45,6 +48,20 @@ func init() { plugins.EventPlugin, }, Config: &Config{}, + ConfigMigration: func(ctx context.Context, configVersion int, pluginConfigs map[string]interface{}) error { + if configVersion >= version.ConfigVersion { + return nil + } + // Previous plugin name + const pluginName = "io.containerd.monitor.v1.cgroups" + c, ok := pluginConfigs[pluginName] + if ok { + pluginConfigs[string(plugins.TaskMonitorPlugin)+".cgroups"] = c + delete(pluginConfigs, pluginName) + } + + return nil + }, }) } diff --git a/plugins/restart/monitor.go b/plugins/restart/monitor.go index 4016159e1..80318c0aa 100644 --- a/plugins/restart/monitor.go +++ b/plugins/restart/monitor.go @@ -28,6 +28,7 @@ import ( "github.com/containerd/containerd/v2/internal/tomlext" "github.com/containerd/containerd/v2/pkg/namespaces" "github.com/containerd/containerd/v2/plugins" + "github.com/containerd/containerd/v2/version" "github.com/containerd/log" "github.com/containerd/plugin" "github.com/containerd/plugin/registry" @@ -41,7 +42,7 @@ type Config struct { func init() { registry.Register(&plugin.Registration{ - Type: plugins.InternalPlugin, + Type: plugins.ContainerMonitorPlugin, Requires: []plugin.Type{ plugins.EventPlugin, plugins.ServicePlugin, @@ -62,6 +63,19 @@ func init() { go m.run(tomlext.ToStdTime(ic.Config.(*Config).Interval)) return m, nil }, + ConfigMigration: func(ctx context.Context, configVersion int, pluginConfigs map[string]interface{}) error { + if configVersion >= version.ConfigVersion { + return nil + } + const pluginName = string(plugins.InternalPlugin) + ".restart" + c, ok := pluginConfigs[pluginName] + if ok { + pluginConfigs[string(plugins.ContainerMonitorPlugin)+".restart"] = c + delete(pluginConfigs, pluginName) + } + + return nil + }, }) } diff --git a/plugins/types.go b/plugins/types.go index c09734443..b0679cbd5 100644 --- a/plugins/types.go +++ b/plugins/types.go @@ -38,7 +38,9 @@ const ( // SnapshotPlugin implements a snapshotter SnapshotPlugin plugin.Type = "io.containerd.snapshotter.v1" // TaskMonitorPlugin implements a task monitor - TaskMonitorPlugin plugin.Type = "io.containerd.monitor.v1" + TaskMonitorPlugin plugin.Type = "io.containerd.monitor.task.v1" + // TaskMonitorPlugin implements a container monitor + ContainerMonitorPlugin plugin.Type = "io.containerd.monitor.container.v1" // DiffPlugin implements a differ DiffPlugin plugin.Type = "io.containerd.differ.v1" // MetadataPlugin implements a metadata store