Fix example shim to actually use its task service

In commit 4b35c3829d, example shim erroneously started to depend on runc, fix that back.

Also, build example shim on all supported platforms to prevent such situations in the future.

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
This commit is contained in:
Marat Radchenko 2023-06-27 13:00:39 +03:00
parent 330273d236
commit 51a1e7f0b2
2 changed files with 29 additions and 23 deletions

View File

@ -1,5 +1,3 @@
//go:build linux
/*
Copyright The containerd Authors.
@ -21,12 +19,11 @@ package main
import (
"context"
_ "github.com/containerd/containerd/runtime/v2/example"
"github.com/containerd/containerd/runtime/v2/runc/manager"
"github.com/containerd/containerd/runtime/v2/example"
"github.com/containerd/containerd/runtime/v2/shim"
)
func main() {
// init and execute the shim
shim.Run(context.Background(), manager.NewShimManager("io.containerd.example.v1"))
shim.Run(context.Background(), example.NewManager("io.containerd.example.v1"))
}

View File

@ -1,5 +1,3 @@
//go:build linux
/*
Copyright The containerd Authors.
@ -28,11 +26,7 @@ import (
"github.com/containerd/containerd/plugin"
ptypes "github.com/containerd/containerd/protobuf/types"
"github.com/containerd/containerd/runtime/v2/shim"
)
var (
// check to make sure the *exampleTaskService implements the GRPC API
_ = (taskAPI.TaskService)(&exampleTaskService{})
"github.com/containerd/ttrpc"
)
func init() {
@ -52,13 +46,32 @@ func init() {
if err != nil {
return nil, err
}
return NewTaskService(ic.Context, pp.(shim.Publisher), ss.(shutdown.Service))
return newTaskService(ic.Context, pp.(shim.Publisher), ss.(shutdown.Service))
},
})
}
// NewTaskService creates a new instance of a task service
func NewTaskService(ctx context.Context, publisher shim.Publisher, sd shutdown.Service) (taskAPI.TaskService, error) {
func NewManager(name string) shim.Manager {
return manager{name: name}
}
type manager struct {
name string
}
func (m manager) Name() string {
return m.name
}
func (m manager) Start(ctx context.Context, id string, opts shim.StartOpts) (string, error) {
return "", errdefs.ErrNotImplemented
}
func (m manager) Stop(ctx context.Context, id string) (shim.StopStatus, error) {
return shim.StopStatus{}, errdefs.ErrNotImplemented
}
func newTaskService(ctx context.Context, publisher shim.Publisher, sd shutdown.Service) (taskAPI.TaskService, error) {
// The shim.Publisher and shutdown.Service are usually useful for your task service,
// but we don't need them in the exampleTaskService.
return &exampleTaskService{}, nil
@ -67,14 +80,10 @@ func NewTaskService(ctx context.Context, publisher shim.Publisher, sd shutdown.S
type exampleTaskService struct {
}
// StartShim is a binary call that executes a new shim returning the address
func (s *exampleTaskService) StartShim(ctx context.Context, opts shim.StartOpts) (string, error) {
return "", nil
}
// Cleanup is a binary call that cleans up any resources used by the shim when the service crashes
func (s *exampleTaskService) Cleanup(ctx context.Context) (*taskAPI.DeleteResponse, error) {
return nil, errdefs.ErrNotImplemented
// RegisterTTRPC allows TTRPC services to be registered with the underlying server
func (s *exampleTaskService) RegisterTTRPC(server *ttrpc.Server) error {
taskAPI.RegisterTaskService(server, s)
return nil
}
// Create a new container