81 lines
2.0 KiB
Go
81 lines
2.0 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
|
||
|
|
}
|
||
|
|
|
||
|
|
// 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
|
||
|
|
}
|
||
|
|
|
||
|
|
// Engine is the smallest container runtime API required by an update executor.
|
||
|
|
type Engine interface {
|
||
|
|
Ping(context.Context) error
|
||
|
|
LoadImage(context.Context, io.Reader) error
|
||
|
|
InspectImage(context.Context, string) (Image, error)
|
||
|
|
CreateContainer(context.Context, ContainerSpec) (Container, error)
|
||
|
|
StartContainer(context.Context, string) error
|
||
|
|
InspectContainer(context.Context, string) (Container, error)
|
||
|
|
RemoveContainer(context.Context, string, bool) error
|
||
|
|
Close() error
|
||
|
|
}
|