Skip to content

Commit f8f1e5f

Browse files
committed
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 <[email protected]>
1 parent 00fe7a4 commit f8f1e5f

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

core/metrics/cgroups/cgroups.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@
1919
package cgroups
2020

2121
import (
22+
"context"
23+
2224
"github.com/containerd/cgroups/v3"
2325
v1 "github.com/containerd/containerd/v2/core/metrics/cgroups/v1"
2426
v2 "github.com/containerd/containerd/v2/core/metrics/cgroups/v2"
2527
"github.com/containerd/containerd/v2/core/runtime"
2628
"github.com/containerd/containerd/v2/pkg/events"
2729
"github.com/containerd/containerd/v2/plugins"
30+
"github.com/containerd/containerd/v2/version"
2831
"github.com/containerd/platforms"
2932
"github.com/containerd/plugin"
3033
"github.com/containerd/plugin/registry"
@@ -45,6 +48,20 @@ func init() {
4548
plugins.EventPlugin,
4649
},
4750
Config: &Config{},
51+
ConfigMigration: func(ctx context.Context, configVersion int, pluginConfigs map[string]interface{}) error {
52+
if configVersion >= version.ConfigVersion {
53+
return nil
54+
}
55+
// Previous plugin name
56+
const pluginName = "io.containerd.monitor.v1.cgroups"
57+
c, ok := pluginConfigs[pluginName]
58+
if ok {
59+
pluginConfigs[string(plugins.TaskMonitorPlugin)+".cgroups"] = c
60+
delete(pluginConfigs, pluginName)
61+
}
62+
63+
return nil
64+
},
4865
})
4966
}
5067

plugins/restart/monitor.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"github.com/containerd/containerd/v2/internal/tomlext"
2929
"github.com/containerd/containerd/v2/pkg/namespaces"
3030
"github.com/containerd/containerd/v2/plugins"
31+
"github.com/containerd/containerd/v2/version"
3132
"github.com/containerd/log"
3233
"github.com/containerd/plugin"
3334
"github.com/containerd/plugin/registry"
@@ -41,7 +42,7 @@ type Config struct {
4142

4243
func init() {
4344
registry.Register(&plugin.Registration{
44-
Type: plugins.InternalPlugin,
45+
Type: plugins.ContainerMonitorPlugin,
4546
Requires: []plugin.Type{
4647
plugins.EventPlugin,
4748
plugins.ServicePlugin,
@@ -62,6 +63,19 @@ func init() {
6263
go m.run(tomlext.ToStdTime(ic.Config.(*Config).Interval))
6364
return m, nil
6465
},
66+
ConfigMigration: func(ctx context.Context, configVersion int, pluginConfigs map[string]interface{}) error {
67+
if configVersion >= version.ConfigVersion {
68+
return nil
69+
}
70+
const pluginName = string(plugins.InternalPlugin) + ".restart"
71+
c, ok := pluginConfigs[pluginName]
72+
if ok {
73+
pluginConfigs[string(plugins.ContainerMonitorPlugin)+".restart"] = c
74+
delete(pluginConfigs, pluginName)
75+
}
76+
77+
return nil
78+
},
6579
})
6680
}
6781

plugins/types.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ const (
3838
// SnapshotPlugin implements a snapshotter
3939
SnapshotPlugin plugin.Type = "io.containerd.snapshotter.v1"
4040
// TaskMonitorPlugin implements a task monitor
41-
TaskMonitorPlugin plugin.Type = "io.containerd.monitor.v1"
41+
TaskMonitorPlugin plugin.Type = "io.containerd.monitor.task.v1"
42+
// TaskMonitorPlugin implements a container monitor
43+
ContainerMonitorPlugin plugin.Type = "io.containerd.monitor.container.v1"
4244
// DiffPlugin implements a differ
4345
DiffPlugin plugin.Type = "io.containerd.differ.v1"
4446
// MetadataPlugin implements a metadata store

0 commit comments

Comments
 (0)