Files
yms-daemon/internal/containerengine/engine.go
T

88 lines
2.3 KiB
Go

// Package containerengine defines the container runtime boundary used by update executors.
package containerengine
import (
"context"
"errors"
"io"
)
var ErrNotFound = errors.New("container engine object not found")
// Platform is an explicit OCI operating system and CPU platform.
type Platform struct {
OS string
Architecture string
Variant string
}
// Image is the immutable image information returned by the engine.
type Image struct {
ID string
RepoDigests []string
DescriptorDigest string
Platform Platform
}
// RestartPolicy is passed to the engine without an implicit default.
type RestartPolicy struct {
Name string
MaximumRetryCount int
}
// Mount is one explicit container mount.
type Mount struct {
Type string
Source string
Target string
ReadOnly bool
}
// ContainerSpec contains every property controlled by the backend executor.
type ContainerSpec struct {
Name string
ImageReference string
Platform Platform
Environment []string
Labels map[string]string
NetworkMode string
RestartPolicy RestartPolicy
Mounts []Mount
User string
StopTimeoutSeconds int
}
// Container is the runtime state required for idempotent inspection.
type Container struct {
ID string
Name string
ImageID string
ImageReference string
Platform string
Running bool
Dead bool
Status string
Environment []string
Labels map[string]string
NetworkMode string
RestartPolicy RestartPolicy
Mounts []Mount
User string
StopTimeoutSeconds int
}
// Engine is the smallest container runtime API required by an update executor.
type Engine interface {
Ping(context.Context) error
PullImage(context.Context, string) error
LoadImage(context.Context, io.Reader) error
InspectImage(context.Context, string) (Image, error)
CreateContainer(context.Context, ContainerSpec) (Container, error)
StartContainer(context.Context, string) error
ContainerLogs(context.Context, string) (io.ReadCloser, error)
StopContainer(context.Context, string) error
InspectContainer(context.Context, string) (Container, error)
RemoveContainer(context.Context, string, bool) error
Close() error
}