2018-03-19 18:56:51 -04:00
|
|
|
package containerizedengine
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"errors"
|
|
|
|
|
|
|
|
"github.com/containerd/containerd"
|
|
|
|
"github.com/containerd/containerd/containers"
|
|
|
|
"github.com/containerd/containerd/content"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2018-09-21 14:01:06 -04:00
|
|
|
containerdSockPath = "/run/containerd/containerd.sock"
|
|
|
|
engineNamespace = "com.docker"
|
2018-09-20 14:02:11 -04:00
|
|
|
|
|
|
|
// runtimeMetadataName is the name of the runtime metadata file
|
|
|
|
// When stored as a label on the container it is prefixed by "com.docker."
|
|
|
|
runtimeMetadataName = "distribution_based_engine"
|
2018-03-19 18:56:51 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
// ErrEngineAlreadyPresent returned when engine already present and should not be
|
|
|
|
ErrEngineAlreadyPresent = errors.New("engine already present, use the update command to change versions")
|
|
|
|
|
|
|
|
// ErrEngineNotPresent returned when the engine is not present and should be
|
|
|
|
ErrEngineNotPresent = errors.New("engine not present")
|
|
|
|
|
|
|
|
// ErrMalformedConfigFileParam returned if the engine config file parameter is malformed
|
|
|
|
ErrMalformedConfigFileParam = errors.New("malformed --config-file param on engine")
|
|
|
|
|
|
|
|
// ErrEngineConfigLookupFailure returned if unable to lookup existing engine configuration
|
|
|
|
ErrEngineConfigLookupFailure = errors.New("unable to lookup existing engine configuration")
|
|
|
|
|
|
|
|
// ErrEngineShutdownTimeout returned if the engine failed to shutdown in time
|
|
|
|
ErrEngineShutdownTimeout = errors.New("timeout waiting for engine to exit")
|
|
|
|
)
|
|
|
|
|
|
|
|
type baseClient struct {
|
|
|
|
cclient containerdClient
|
|
|
|
}
|
|
|
|
|
|
|
|
// containerdClient abstracts the containerd client to aid in testability
|
|
|
|
type containerdClient interface {
|
|
|
|
Containers(ctx context.Context, filters ...string) ([]containerd.Container, error)
|
|
|
|
NewContainer(ctx context.Context, id string, opts ...containerd.NewContainerOpts) (containerd.Container, error)
|
|
|
|
Pull(ctx context.Context, ref string, opts ...containerd.RemoteOpt) (containerd.Image, error)
|
|
|
|
GetImage(ctx context.Context, ref string) (containerd.Image, error)
|
|
|
|
Close() error
|
|
|
|
ContentStore() content.Store
|
|
|
|
ContainerService() containers.Store
|
2018-09-13 12:32:19 -04:00
|
|
|
Install(context.Context, containerd.Image, ...containerd.InstallOpts) error
|
2018-09-14 13:53:56 -04:00
|
|
|
Version(ctx context.Context) (containerd.Version, error)
|
|
|
|
}
|
|
|
|
|
|
|
|
// RuntimeMetadata holds platform information about the daemon
|
|
|
|
type RuntimeMetadata struct {
|
|
|
|
Platform string `json:"platform"`
|
|
|
|
ContainerdMinVersion string `json:"containerd_min_version"`
|
|
|
|
Runtime string `json:"runtime"`
|
2018-03-19 18:56:51 -04:00
|
|
|
}
|