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:
@@ -1,5 +1,3 @@
|
|||||||
//go:build linux
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The containerd Authors.
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
@@ -21,12 +19,11 @@ package main
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
_ "github.com/containerd/containerd/runtime/v2/example"
|
"github.com/containerd/containerd/runtime/v2/example"
|
||||||
"github.com/containerd/containerd/runtime/v2/runc/manager"
|
|
||||||
"github.com/containerd/containerd/runtime/v2/shim"
|
"github.com/containerd/containerd/runtime/v2/shim"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// init and execute the shim
|
// 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"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
//go:build linux
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Copyright The containerd Authors.
|
Copyright The containerd Authors.
|
||||||
|
|
||||||
@@ -28,11 +26,7 @@ import (
|
|||||||
"github.com/containerd/containerd/plugin"
|
"github.com/containerd/containerd/plugin"
|
||||||
ptypes "github.com/containerd/containerd/protobuf/types"
|
ptypes "github.com/containerd/containerd/protobuf/types"
|
||||||
"github.com/containerd/containerd/runtime/v2/shim"
|
"github.com/containerd/containerd/runtime/v2/shim"
|
||||||
)
|
"github.com/containerd/ttrpc"
|
||||||
|
|
||||||
var (
|
|
||||||
// check to make sure the *exampleTaskService implements the GRPC API
|
|
||||||
_ = (taskAPI.TaskService)(&exampleTaskService{})
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@@ -52,13 +46,32 @@ func init() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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 NewManager(name string) shim.Manager {
|
||||||
func NewTaskService(ctx context.Context, publisher shim.Publisher, sd shutdown.Service) (taskAPI.TaskService, error) {
|
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,
|
// The shim.Publisher and shutdown.Service are usually useful for your task service,
|
||||||
// but we don't need them in the exampleTaskService.
|
// but we don't need them in the exampleTaskService.
|
||||||
return &exampleTaskService{}, nil
|
return &exampleTaskService{}, nil
|
||||||
@@ -67,14 +80,10 @@ func NewTaskService(ctx context.Context, publisher shim.Publisher, sd shutdown.S
|
|||||||
type exampleTaskService struct {
|
type exampleTaskService struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartShim is a binary call that executes a new shim returning the address
|
// RegisterTTRPC allows TTRPC services to be registered with the underlying server
|
||||||
func (s *exampleTaskService) StartShim(ctx context.Context, opts shim.StartOpts) (string, error) {
|
func (s *exampleTaskService) RegisterTTRPC(server *ttrpc.Server) error {
|
||||||
return "", nil
|
taskAPI.RegisterTaskService(server, s)
|
||||||
}
|
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new container
|
// Create a new container
|
||||||
|
|||||||
Reference in New Issue
Block a user