Remove runtime.Event types

This uses the events service types for runtime events

Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
Michael Crosby
2017-06-28 10:33:36 -07:00
parent 7c8acca29a
commit 040558cf81
15 changed files with 271 additions and 596 deletions

View File

@@ -9,8 +9,9 @@ import (
"sync"
"time"
events "github.com/containerd/containerd/api/services/events/v1"
"github.com/containerd/containerd/log"
"github.com/containerd/containerd/plugin"
"github.com/containerd/containerd/runtime"
"github.com/containerd/containerd/windows/hcs"
specs "github.com/opencontainers/runtime-spec/specs-go"
"github.com/pkg/errors"
@@ -19,7 +20,7 @@ import (
var ErrLoadedContainer = errors.New("loaded container can only be terminated")
type eventCallback func(id string, evType plugin.EventType, pid, exitStatus uint32, exitedAt time.Time)
type eventCallback func(id string, evType events.RuntimeEvent_EventType, pid, exitStatus uint32, exitedAt time.Time)
func loadContainers(ctx context.Context, h *hcs.HCS, sendEvent eventCallback) ([]*container, error) {
hCtr, err := h.LoadContainers(ctx)
@@ -31,7 +32,7 @@ func loadContainers(ctx context.Context, h *hcs.HCS, sendEvent eventCallback) ([
for _, c := range hCtr {
containers = append(containers, &container{
ctr: c,
status: plugin.RunningStatus,
status: runtime.RunningStatus,
sendEvent: sendEvent,
})
}
@@ -39,7 +40,7 @@ func loadContainers(ctx context.Context, h *hcs.HCS, sendEvent eventCallback) ([
return containers, nil
}
func newContainer(ctx context.Context, h *hcs.HCS, id string, spec RuntimeSpec, io plugin.IO, sendEvent eventCallback) (*container, error) {
func newContainer(ctx context.Context, h *hcs.HCS, id string, spec RuntimeSpec, io runtime.IO, sendEvent eventCallback) (*container, error) {
cio, err := hcs.NewIO(io.Stdin, io.Stdout, io.Stderr, io.Terminal)
if err != nil {
return nil, err
@@ -49,11 +50,11 @@ func newContainer(ctx context.Context, h *hcs.HCS, id string, spec RuntimeSpec,
if err != nil {
return nil, err
}
sendEvent(id, plugin.CreateEvent, hcsCtr.Pid(), 0, time.Time{})
sendEvent(id, events.RuntimeEvent_CREATE, hcsCtr.Pid(), 0, time.Time{})
return &container{
ctr: hcsCtr,
status: plugin.CreatedStatus,
status: runtime.CreatedStatus,
sendEvent: sendEvent,
}, nil
}
@@ -62,12 +63,12 @@ type container struct {
sync.Mutex
ctr *hcs.Container
status plugin.Status
status runtime.Status
sendEvent eventCallback
}
func (c *container) Info() plugin.TaskInfo {
return plugin.TaskInfo{
func (c *container) Info() runtime.TaskInfo {
return runtime.TaskInfo{
ID: c.ctr.ID(),
Runtime: runtimeName,
}
@@ -83,8 +84,8 @@ func (c *container) Start(ctx context.Context) error {
return err
}
c.setStatus(plugin.RunningStatus)
c.sendEvent(c.ctr.ID(), plugin.StartEvent, c.ctr.Pid(), 0, time.Time{})
c.setStatus(runtime.RunningStatus)
c.sendEvent(c.ctr.ID(), events.RuntimeEvent_START, c.ctr.Pid(), 0, time.Time{})
// Wait for our process to terminate
go func() {
@@ -92,8 +93,8 @@ func (c *container) Start(ctx context.Context) error {
if err != nil {
log.G(ctx).Debug(err)
}
c.setStatus(plugin.StoppedStatus)
c.sendEvent(c.ctr.ID(), plugin.ExitEvent, c.ctr.Pid(), ec, c.ctr.Processes()[0].ExitedAt())
c.setStatus(runtime.StoppedStatus)
c.sendEvent(c.ctr.ID(), events.RuntimeEvent_EXIT, c.ctr.Pid(), ec, c.ctr.Processes()[0].ExitedAt())
}()
return nil
@@ -113,8 +114,8 @@ func (c *container) Resume(ctx context.Context) error {
return c.ctr.Resume()
}
func (c *container) State(ctx context.Context) (plugin.State, error) {
return plugin.State{
func (c *container) State(ctx context.Context) (runtime.State, error) {
return runtime.State{
Pid: c.Pid(),
Status: c.Status(),
}, nil
@@ -127,7 +128,7 @@ func (c *container) Kill(ctx context.Context, signal uint32, pid uint32, all boo
return c.ctr.Stop(ctx)
}
func (c *container) Exec(ctx context.Context, opts plugin.ExecOpts) (plugin.Process, error) {
func (c *container) Exec(ctx context.Context, opts runtime.ExecOpts) (runtime.Process, error) {
if c.ctr.Pid() == 0 {
return nil, ErrLoadedContainer
}
@@ -152,7 +153,7 @@ func (c *container) Exec(ctx context.Context, opts plugin.ExecOpts) (plugin.Proc
if err != nil {
log.G(ctx).Debug(err)
}
c.sendEvent(c.ctr.ID(), plugin.ExitEvent, p.Pid(), ec, p.ExitedAt())
c.sendEvent(c.ctr.ID(), events.RuntimeEvent_EXEC_ADDED, p.Pid(), ec, p.ExitedAt())
}()
return &process{p}, nil
@@ -162,11 +163,11 @@ func (c *container) CloseIO(ctx context.Context, pid uint32) error {
return c.ctr.CloseIO(ctx, pid)
}
func (c *container) ResizePty(ctx context.Context, pid uint32, size plugin.ConsoleSize) error {
func (c *container) ResizePty(ctx context.Context, pid uint32, size runtime.ConsoleSize) error {
return c.ctr.ResizePty(ctx, pid, size)
}
func (c *container) Status() plugin.Status {
func (c *container) Status() runtime.Status {
return c.getStatus()
}
@@ -192,7 +193,7 @@ func (c *container) Checkpoint(ctx context.Context, _ string, _ map[string]strin
return fmt.Errorf("Windows containers do not support checkpoint")
}
func (c *container) DeleteProcess(ctx context.Context, pid uint32) (*plugin.Exit, error) {
func (c *container) DeleteProcess(ctx context.Context, pid uint32) (*runtime.Exit, error) {
var process *hcs.Process
for _, p := range c.ctr.Processes() {
if p.Pid() == pid {
@@ -208,7 +209,7 @@ func (c *container) DeleteProcess(ctx context.Context, pid uint32) (*plugin.Exit
return nil, err
}
process.Delete()
return &plugin.Exit{
return &runtime.Exit{
Status: ec,
Timestamp: process.ExitedAt(),
}, nil
@@ -218,13 +219,13 @@ func (c *container) Update(ctx context.Context, spec []byte) error {
return fmt.Errorf("Windows containers do not support update")
}
func (c *container) setStatus(status plugin.Status) {
func (c *container) setStatus(status runtime.Status) {
c.Lock()
c.status = status
c.Unlock()
}
func (c *container) getStatus() plugin.Status {
func (c *container) getStatus() runtime.Status {
c.Lock()
defer c.Unlock()
return c.status