Documentation ¶
Overview ¶
The 'engine' package contains code for interacting with container-running backends and handling events from them. It supports Docker as the sole task engine type.
The DockerTaskEngine is an abstraction over the DockerGoClient so that it does not have to know about tasks, only containers
Index ¶
- Constants
- type CannotXContainerError
- type ContainerNotFound
- type ContainerVanishedError
- type DockerClient
- type DockerContainerChangeEvent
- type DockerContainerMetadata
- type DockerGoClient
- func (dg *DockerGoClient) ContainerEvents(ctx context.Context) (<-chan DockerContainerChangeEvent, error)
- func (dg *DockerGoClient) CreateContainer(config *docker.Config, hostConfig *docker.HostConfig, name string) DockerContainerMetadata
- func (dg *DockerGoClient) DescribeContainer(dockerId string) (api.ContainerStatus, DockerContainerMetadata)
- func (dg *DockerGoClient) GetContainerName(id string) (string, error)
- func (dg *DockerGoClient) InspectContainer(dockerId string) (*docker.Container, error)
- func (dg *DockerGoClient) PullImage(image string) DockerContainerMetadata
- func (dg *DockerGoClient) RemoveContainer(dockerId string) error
- func (dg *DockerGoClient) SetGoDockerClient(to dockerclient.Client)
- func (dg *DockerGoClient) StartContainer(id string) DockerContainerMetadata
- func (dg *DockerGoClient) StopContainer(dockerId string) DockerContainerMetadata
- func (dg *DockerGoClient) Version() (string, error)
- type DockerImageResponse
- type DockerStateError
- type DockerTaskEngine
- func (engine *DockerTaskEngine) AddTask(task *api.Task) error
- func (engine *DockerTaskEngine) CheckTaskState(task *api.Task)
- func (engine *DockerTaskEngine) Disable()
- func (engine *DockerTaskEngine) Init() error
- func (engine *DockerTaskEngine) ListTasks() ([]*api.Task, error)
- func (engine *DockerTaskEngine) MarshalJSON() ([]byte, error)
- func (engine *DockerTaskEngine) MustInit()
- func (engine *DockerTaskEngine) SetDockerClient(client DockerClient)
- func (engine *DockerTaskEngine) SetSaver(saver statemanager.Saver)
- func (engine *DockerTaskEngine) Shutdown()
- func (engine *DockerTaskEngine) State() *dockerstate.DockerTaskEngineState
- func (engine *DockerTaskEngine) TaskEvents() (<-chan api.TaskStateChange, <-chan api.ContainerStateChange)
- func (engine *DockerTaskEngine) UnmarshalJSON(data []byte) error
- func (engine *DockerTaskEngine) Version() (string, error)
- type DockerTimeoutError
- type OutOfMemoryError
- type TaskEngine
Constants ¶
const ( DOCKER_ENDPOINT_ENV_VARIABLE = "DOCKER_HOST" DOCKER_DEFAULT_ENDPOINT = "unix:///var/run/docker.sock" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CannotXContainerError ¶ added in v1.1.0
type CannotXContainerError struct {
// contains filtered or unexported fields
}
func (CannotXContainerError) Error ¶ added in v1.1.0
func (err CannotXContainerError) Error() string
func (CannotXContainerError) ErrorName ¶ added in v1.1.0
func (err CannotXContainerError) ErrorName() string
type ContainerNotFound ¶
func (ContainerNotFound) Error ¶
func (cnferror ContainerNotFound) Error() string
type ContainerVanishedError ¶ added in v1.1.0
type ContainerVanishedError struct{}
func (ContainerVanishedError) Error ¶ added in v1.1.0
func (err ContainerVanishedError) Error() string
func (ContainerVanishedError) ErrorName ¶ added in v1.1.0
func (err ContainerVanishedError) ErrorName() string
type DockerClient ¶
type DockerClient interface { ContainerEvents(ctx context.Context) (<-chan DockerContainerChangeEvent, error) PullImage(image string) DockerContainerMetadata CreateContainer(*docker.Config, *docker.HostConfig, string) DockerContainerMetadata StartContainer(string) DockerContainerMetadata StopContainer(string) DockerContainerMetadata DescribeContainer(string) (api.ContainerStatus, DockerContainerMetadata) RemoveContainer(string) error GetContainerName(string) (string, error) InspectContainer(string) (*docker.Container, error) Version() (string, error) }
Interface to make testing it easier
type DockerContainerChangeEvent ¶
type DockerContainerChangeEvent struct { Status api.ContainerStatus DockerContainerMetadata }
type DockerContainerMetadata ¶ added in v1.1.0
type DockerGoClient ¶
type DockerGoClient struct {
// contains filtered or unexported fields
}
Implements DockerClient
func NewDockerGoClient ¶
func NewDockerGoClient() (*DockerGoClient, error)
func (*DockerGoClient) ContainerEvents ¶
func (dg *DockerGoClient) ContainerEvents(ctx context.Context) (<-chan DockerContainerChangeEvent, error)
Listen to the docker event stream for container changes and pass them up
func (*DockerGoClient) CreateContainer ¶
func (dg *DockerGoClient) CreateContainer(config *docker.Config, hostConfig *docker.HostConfig, name string) DockerContainerMetadata
func (*DockerGoClient) DescribeContainer ¶
func (dg *DockerGoClient) DescribeContainer(dockerId string) (api.ContainerStatus, DockerContainerMetadata)
func (*DockerGoClient) GetContainerName ¶
func (dg *DockerGoClient) GetContainerName(id string) (string, error)
func (*DockerGoClient) InspectContainer ¶
func (dg *DockerGoClient) InspectContainer(dockerId string) (*docker.Container, error)
func (*DockerGoClient) PullImage ¶
func (dg *DockerGoClient) PullImage(image string) DockerContainerMetadata
func (*DockerGoClient) RemoveContainer ¶
func (dg *DockerGoClient) RemoveContainer(dockerId string) error
func (*DockerGoClient) SetGoDockerClient ¶ added in v1.1.0
func (dg *DockerGoClient) SetGoDockerClient(to dockerclient.Client)
func (*DockerGoClient) StartContainer ¶
func (dg *DockerGoClient) StartContainer(id string) DockerContainerMetadata
func (*DockerGoClient) StopContainer ¶
func (dg *DockerGoClient) StopContainer(dockerId string) DockerContainerMetadata
func (*DockerGoClient) Version ¶ added in v1.0.0
func (dg *DockerGoClient) Version() (string, error)
type DockerImageResponse ¶
type DockerStateError ¶ added in v1.1.0
type DockerStateError struct {
// contains filtered or unexported fields
}
DockerStateError is a wrapper around the error docker puts in the '.State.Error' field of its inspect output.
func NewDockerStateError ¶ added in v1.1.0
func NewDockerStateError(err string) DockerStateError
func (DockerStateError) Error ¶ added in v1.1.0
func (err DockerStateError) Error() string
func (DockerStateError) ErrorName ¶ added in v1.1.0
func (err DockerStateError) ErrorName() string
type DockerTaskEngine ¶
type DockerTaskEngine struct {
// contains filtered or unexported fields
}
The DockerTaskEngine interacts with docker to implement a task engine
func NewDockerTaskEngine ¶
func NewDockerTaskEngine(cfg *config.Config) *DockerTaskEngine
NewDockerTaskEngine returns a created, but uninitialized, DockerTaskEngine. The distinction between created and initialized is that when created it may be serialized/deserialized, but it will not communicate with docker until it is also initialized.
func (*DockerTaskEngine) CheckTaskState ¶ added in v1.1.0
func (engine *DockerTaskEngine) CheckTaskState(task *api.Task)
CheckTaskState inspects the state of all containers within a task and writes their state to the managed task's container channel.
func (*DockerTaskEngine) Disable ¶ added in v1.0.0
func (engine *DockerTaskEngine) Disable()
Disable prevents this engine from managing any additional tasks.
func (*DockerTaskEngine) Init ¶
func (engine *DockerTaskEngine) Init() error
Init initializes a DockerTaskEngine such that it may communicate with docker and operate normally. This function must be called before any other function, except serializing and deserializing, can succeed without error.
func (*DockerTaskEngine) ListTasks ¶
func (engine *DockerTaskEngine) ListTasks() ([]*api.Task, error)
func (*DockerTaskEngine) MarshalJSON ¶
func (engine *DockerTaskEngine) MarshalJSON() ([]byte, error)
MarshalJSON marshals into state directly
func (*DockerTaskEngine) MustInit ¶
func (engine *DockerTaskEngine) MustInit()
MustInit blocks and retries until an engine can be initialized.
func (*DockerTaskEngine) SetDockerClient ¶ added in v1.1.0
func (engine *DockerTaskEngine) SetDockerClient(client DockerClient)
SetDockerClient provides a way to override the client used for communication with docker as a testing hook.
func (*DockerTaskEngine) SetSaver ¶
func (engine *DockerTaskEngine) SetSaver(saver statemanager.Saver)
func (*DockerTaskEngine) Shutdown ¶ added in v1.1.0
func (engine *DockerTaskEngine) Shutdown()
Shutdown makes a best-effort attempt to cleanup after the task engine. This should not be relied on for anything more complicated than testing.
func (*DockerTaskEngine) State ¶
func (engine *DockerTaskEngine) State() *dockerstate.DockerTaskEngineState
State is a function primarily meant for testing usage; it is explicitly not part of the TaskEngine interface and should not be relied upon. It returns an internal representation of the state of this DockerTaskEngine.
func (*DockerTaskEngine) TaskEvents ¶
func (engine *DockerTaskEngine) TaskEvents() (<-chan api.TaskStateChange, <-chan api.ContainerStateChange)
TaskEvents returns channels to read task and container state changes. These changes should be read as soon as possible as them not being read will block processing the task referenced by the event.
func (*DockerTaskEngine) UnmarshalJSON ¶
func (engine *DockerTaskEngine) UnmarshalJSON(data []byte) error
UnmarshalJSON restores a previously marshaled task-engine state from json
func (*DockerTaskEngine) Version ¶ added in v1.0.0
func (engine *DockerTaskEngine) Version() (string, error)
Version returns the underlying docker version.
type DockerTimeoutError ¶ added in v1.1.0
type DockerTimeoutError struct {
// contains filtered or unexported fields
}
func (*DockerTimeoutError) Error ¶ added in v1.1.0
func (err *DockerTimeoutError) Error() string
func (*DockerTimeoutError) ErrorName ¶ added in v1.1.0
func (err *DockerTimeoutError) ErrorName() string
type OutOfMemoryError ¶ added in v1.1.0
type OutOfMemoryError struct{}
func (OutOfMemoryError) Error ¶ added in v1.1.0
func (err OutOfMemoryError) Error() string
func (OutOfMemoryError) ErrorName ¶ added in v1.1.0
func (err OutOfMemoryError) ErrorName() string
type TaskEngine ¶
type TaskEngine interface { Init() error MustInit() // Disable *must* only be called when this engine will no longer be used // (e.g. right before exiting down the process). It will irreversably stop // this task engine from processing new tasks Disable() TaskEvents() (<-chan api.TaskStateChange, <-chan api.ContainerStateChange) SetSaver(statemanager.Saver) // AddTask adds a new task to the task engine and manages its container's // lifecycle. If it returns an error, the task was not added. AddTask(*api.Task) error ListTasks() ([]*api.Task, error) Version() (string, error) json.Marshaler json.Unmarshaler }
func NewTaskEngine ¶
func NewTaskEngine(cfg *config.Config) TaskEngine
NewTaskEngine returns a default TaskEngine
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package dockerauth handles storing auth configuration information for Docker registries.
|
Package dockerauth handles storing auth configuration information for Docker registries. |
ecs
Package credentialprovider provides a credential provider as defined in Kubernetes's 'credentialprovider' package.
|
Package credentialprovider provides a credential provider as defined in Kubernetes's 'credentialprovider' package. |
Package dockerclient contains code dealing closely with the go-dockerclient package
|
Package dockerclient contains code dealing closely with the go-dockerclient package |
testutils
Package testutils contains files that are used in tests but not elsewhere and thus can be excluded from the final executable.
|
Package testutils contains files that are used in tests but not elsewhere and thus can be excluded from the final executable. |
Package emptyvolume contains some information related to the 'emptyvolumes'
|
Package emptyvolume contains some information related to the 'emptyvolumes' |
Package testutils contains files that are used in tests but not elsewhere and thus can be excluded from the final executable.
|
Package testutils contains files that are used in tests but not elsewhere and thus can be excluded from the final executable. |