Skip to content

Commit 7825689

Browse files
committed
tasks: emit warning for v1 runtime
Signed-off-by: Samuel Karp <samuelkarp@google.com> (cherry picked from commit 329e1d4) Signed-off-by: Samuel Karp <samuelkarp@google.com>
1 parent 183dbe4 commit 7825689

6 files changed

Lines changed: 32 additions & 9 deletions

File tree

pkg/deprecation/deprecation.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ const (
3535
CRIAPIV1Alpha2 Warning = Prefix + "cri-api-v1alpha2"
3636
// AUFSSnapshotter is a warning for the use of the aufs snapshotter
3737
AUFSSnapshotter Warning = Prefix + "aufs-snapshotter"
38+
// RuntimeV1 is a warning for the io.containerd.runtime.v1.linux runtime
39+
RuntimeV1 Warning = Prefix + "runtime-v1"
3840
)
3941

4042
var messages = map[Warning]string{
@@ -49,6 +51,7 @@ var messages = map[Warning]string{
4951
"Use `config_path` instead.",
5052
CRIAPIV1Alpha2: "CRI API v1alpha2 is deprecated since containerd v1.7 and removed in containerd v2.0. Use CRI API v1 instead.",
5153
AUFSSnapshotter: "The aufs snapshotter is deprecated since containerd v1.5 and removed in containerd v2.0. Use the overlay snapshotter instead.",
54+
RuntimeV1: "The `io.containerd.runtime.v1.linux` runtime is deprecated since containerd v1.4 and removed in containerd v2.0. Use the `io.containerd.runc.v2` runtime instead.",
5255
}
5356

5457
// Valid checks whether a given Warning is valid

services/tasks/local.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ import (
2626
"strings"
2727
"time"
2828

29+
"github.com/containerd/typeurl"
30+
ptypes "github.com/gogo/protobuf/types"
31+
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
32+
"google.golang.org/grpc"
33+
"google.golang.org/grpc/codes"
34+
"google.golang.org/grpc/status"
35+
2936
api "github.com/containerd/containerd/api/services/tasks/v1"
3037
"github.com/containerd/containerd/api/types"
3138
"github.com/containerd/containerd/api/types/task"
@@ -39,18 +46,14 @@ import (
3946
"github.com/containerd/containerd/log"
4047
"github.com/containerd/containerd/metadata"
4148
"github.com/containerd/containerd/mount"
49+
"github.com/containerd/containerd/pkg/deprecation"
4250
"github.com/containerd/containerd/pkg/timeout"
4351
"github.com/containerd/containerd/plugin"
4452
"github.com/containerd/containerd/runtime"
4553
"github.com/containerd/containerd/runtime/linux/runctypes"
4654
"github.com/containerd/containerd/runtime/v2/runc/options"
4755
"github.com/containerd/containerd/services"
48-
"github.com/containerd/typeurl"
49-
ptypes "github.com/gogo/protobuf/types"
50-
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
51-
"google.golang.org/grpc"
52-
"google.golang.org/grpc/codes"
53-
"google.golang.org/grpc/status"
56+
"github.com/containerd/containerd/services/warning"
5457
)
5558

5659
var (
@@ -110,6 +113,11 @@ func initFunc(ic *plugin.InitContext) (interface{}, error) {
110113
monitor = runtime.NewNoopMonitor()
111114
}
112115

116+
w, err := ic.Get(plugin.WarningPlugin)
117+
if err != nil {
118+
return nil, err
119+
}
120+
113121
db := m.(*metadata.DB)
114122
l := &local{
115123
runtimes: runtimes,
@@ -118,6 +126,7 @@ func initFunc(ic *plugin.InitContext) (interface{}, error) {
118126
publisher: ep.(events.Publisher),
119127
monitor: monitor.(runtime.TaskMonitor),
120128
v2Runtime: v2r.(runtime.PlatformRuntime),
129+
warnings: w.(warning.Service),
121130
}
122131
for _, r := range runtimes {
123132
tasks, err := r.Tasks(ic.Context, true)
@@ -151,6 +160,7 @@ type local struct {
151160

152161
monitor runtime.TaskMonitor
153162
v2Runtime runtime.PlatformRuntime
163+
warnings warning.Service
154164
}
155165

156166
func (l *local) Create(ctx context.Context, r *api.CreateTaskRequest, _ ...grpc.CallOption) (*api.CreateTaskResponse, error) {
@@ -209,11 +219,10 @@ func (l *local) Create(ctx context.Context, r *api.CreateTaskRequest, _ ...grpc.
209219
Options: m.Options,
210220
})
211221
}
212-
if strings.HasPrefix(container.Runtime.Name, "io.containerd.runtime.v1.") {
213-
log.G(ctx).Warn("runtime v1 is deprecated since containerd v1.4, consider using runtime v2")
214-
} else if container.Runtime.Name == plugin.RuntimeRuncV1 {
222+
if container.Runtime.Name == plugin.RuntimeRuncV1 {
215223
log.G(ctx).Warnf("%q is deprecated since containerd v1.4, consider using %q", plugin.RuntimeRuncV1, plugin.RuntimeRuncV2)
216224
}
225+
l.emitRuntimeWarning(ctx, container.Runtime.Name)
217226
rtime, err := l.getRuntime(container.Runtime.Name)
218227
if err != nil {
219228
return nil, err
@@ -243,6 +252,13 @@ func (l *local) Create(ctx context.Context, r *api.CreateTaskRequest, _ ...grpc.
243252
}, nil
244253
}
245254

255+
func (l *local) emitRuntimeWarning(ctx context.Context, runtime string) {
256+
switch runtime {
257+
case plugin.RuntimeLinuxV1:
258+
log.G(ctx).Warnf("%q is deprecated since containerd v1.4 and will be removed in containerd v2.0, use %q instead", plugin.RuntimeLinuxV1, plugin.RuntimeRuncV2)
259+
l.warnings.Emit(ctx, deprecation.RuntimeV1)
260+
}
261+
}
246262
func (l *local) Start(ctx context.Context, r *api.StartRequest, _ ...grpc.CallOption) (*api.StartResponse, error) {
247263
t, err := l.getTask(ctx, r.ContainerID)
248264
if err != nil {

services/tasks/local_darwin.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ var tasksServiceRequires = []plugin.Type{
2828
plugin.RuntimePluginV2,
2929
plugin.MetadataPlugin,
3030
plugin.TaskMonitorPlugin,
31+
plugin.WarningPlugin,
3132
}
3233

3334
// loadV1Runtimes on darwin returns an empty map. There are no v1 runtimes

services/tasks/local_freebsd.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var tasksServiceRequires = []plugin.Type{
2626
plugin.RuntimePluginV2,
2727
plugin.MetadataPlugin,
2828
plugin.TaskMonitorPlugin,
29+
plugin.WarningPlugin,
2930
}
3031

3132
// loadV1Runtimes on FreeBSD returns an empty map. There are no v1 runtimes

services/tasks/local_unix.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ var tasksServiceRequires = []plugin.Type{
3333
plugin.RuntimePluginV2,
3434
plugin.MetadataPlugin,
3535
plugin.TaskMonitorPlugin,
36+
plugin.WarningPlugin,
3637
}
3738

3839
func loadV1Runtimes(ic *plugin.InitContext) (map[string]runtime.PlatformRuntime, error) {

services/tasks/local_windows.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var tasksServiceRequires = []plugin.Type{
2626
plugin.RuntimePluginV2,
2727
plugin.MetadataPlugin,
2828
plugin.TaskMonitorPlugin,
29+
plugin.WarningPlugin,
2930
}
3031

3132
// loadV1Runtimes on Windows V2 returns an empty map. There are no v1 runtimes

0 commit comments

Comments
 (0)