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 <derek@mcg.dev>
This commit is contained in:
parent
00fe7a4974
commit
f8f1e5f7a6
@ -19,12 +19,15 @@
|
|||||||
package cgroups
|
package cgroups
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
"github.com/containerd/cgroups/v3"
|
"github.com/containerd/cgroups/v3"
|
||||||
v1 "github.com/containerd/containerd/v2/core/metrics/cgroups/v1"
|
v1 "github.com/containerd/containerd/v2/core/metrics/cgroups/v1"
|
||||||
v2 "github.com/containerd/containerd/v2/core/metrics/cgroups/v2"
|
v2 "github.com/containerd/containerd/v2/core/metrics/cgroups/v2"
|
||||||
"github.com/containerd/containerd/v2/core/runtime"
|
"github.com/containerd/containerd/v2/core/runtime"
|
||||||
"github.com/containerd/containerd/v2/pkg/events"
|
"github.com/containerd/containerd/v2/pkg/events"
|
||||||
"github.com/containerd/containerd/v2/plugins"
|
"github.com/containerd/containerd/v2/plugins"
|
||||||
|
"github.com/containerd/containerd/v2/version"
|
||||||
"github.com/containerd/platforms"
|
"github.com/containerd/platforms"
|
||||||
"github.com/containerd/plugin"
|
"github.com/containerd/plugin"
|
||||||
"github.com/containerd/plugin/registry"
|
"github.com/containerd/plugin/registry"
|
||||||
@ -45,6 +48,20 @@ func init() {
|
|||||||
plugins.EventPlugin,
|
plugins.EventPlugin,
|
||||||
},
|
},
|
||||||
Config: &Config{},
|
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
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
"github.com/containerd/containerd/v2/internal/tomlext"
|
"github.com/containerd/containerd/v2/internal/tomlext"
|
||||||
"github.com/containerd/containerd/v2/pkg/namespaces"
|
"github.com/containerd/containerd/v2/pkg/namespaces"
|
||||||
"github.com/containerd/containerd/v2/plugins"
|
"github.com/containerd/containerd/v2/plugins"
|
||||||
|
"github.com/containerd/containerd/v2/version"
|
||||||
"github.com/containerd/log"
|
"github.com/containerd/log"
|
||||||
"github.com/containerd/plugin"
|
"github.com/containerd/plugin"
|
||||||
"github.com/containerd/plugin/registry"
|
"github.com/containerd/plugin/registry"
|
||||||
@ -41,7 +42,7 @@ type Config struct {
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registry.Register(&plugin.Registration{
|
registry.Register(&plugin.Registration{
|
||||||
Type: plugins.InternalPlugin,
|
Type: plugins.ContainerMonitorPlugin,
|
||||||
Requires: []plugin.Type{
|
Requires: []plugin.Type{
|
||||||
plugins.EventPlugin,
|
plugins.EventPlugin,
|
||||||
plugins.ServicePlugin,
|
plugins.ServicePlugin,
|
||||||
@ -62,6 +63,19 @@ func init() {
|
|||||||
go m.run(tomlext.ToStdTime(ic.Config.(*Config).Interval))
|
go m.run(tomlext.ToStdTime(ic.Config.(*Config).Interval))
|
||||||
return m, nil
|
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
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,9 @@ const (
|
|||||||
// SnapshotPlugin implements a snapshotter
|
// SnapshotPlugin implements a snapshotter
|
||||||
SnapshotPlugin plugin.Type = "io.containerd.snapshotter.v1"
|
SnapshotPlugin plugin.Type = "io.containerd.snapshotter.v1"
|
||||||
// TaskMonitorPlugin implements a task monitor
|
// 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 implements a differ
|
||||||
DiffPlugin plugin.Type = "io.containerd.differ.v1"
|
DiffPlugin plugin.Type = "io.containerd.differ.v1"
|
||||||
// MetadataPlugin implements a metadata store
|
// MetadataPlugin implements a metadata store
|
||||||
|
Loading…
Reference in New Issue
Block a user