// 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 StopContainer(context.Context, string) error InspectContainer(context.Context, string) (Container, error) RemoveContainer(context.Context, string, bool) error Close() error }