Refactor container logs system to make communicating log messages internally much simpler. Move responsibility for marshalling log messages into the REST server. Support TTY logs. Pave the way for fixing the ambiguous bytestream format. Pave the way for fixing details. Signed-off-by: Drew Erny <drew.erny@docker.com> Upstream-commit: 1044093bb0aa12eb8972361a93b9bc8c4ddd857b Component: engine
80 lines
3.4 KiB
Go
80 lines
3.4 KiB
Go
package container
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
|
|
"golang.org/x/net/context"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/api/types/backend"
|
|
"github.com/docker/docker/api/types/container"
|
|
"github.com/docker/docker/api/types/filters"
|
|
"github.com/docker/docker/pkg/archive"
|
|
)
|
|
|
|
// execBackend includes functions to implement to provide exec functionality.
|
|
type execBackend interface {
|
|
ContainerExecCreate(name string, config *types.ExecConfig) (string, error)
|
|
ContainerExecInspect(id string) (*backend.ExecInspect, error)
|
|
ContainerExecResize(name string, height, width int) error
|
|
ContainerExecStart(ctx context.Context, name string, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) error
|
|
ExecExists(name string) (bool, error)
|
|
}
|
|
|
|
// copyBackend includes functions to implement to provide container copy functionality.
|
|
type copyBackend interface {
|
|
ContainerArchivePath(name string, path string) (content io.ReadCloser, stat *types.ContainerPathStat, err error)
|
|
ContainerCopy(name string, res string) (io.ReadCloser, error)
|
|
ContainerExport(name string, out io.Writer) error
|
|
ContainerExtractToDir(name, path string, noOverwriteDirNonDir bool, content io.Reader) error
|
|
ContainerStatPath(name string, path string) (stat *types.ContainerPathStat, err error)
|
|
}
|
|
|
|
// stateBackend includes functions to implement to provide container state lifecycle functionality.
|
|
type stateBackend interface {
|
|
ContainerCreate(config types.ContainerCreateConfig) (container.ContainerCreateCreatedBody, error)
|
|
ContainerKill(name string, sig uint64) error
|
|
ContainerPause(name string) error
|
|
ContainerRename(oldName, newName string) error
|
|
ContainerResize(name string, height, width int) error
|
|
ContainerRestart(name string, seconds *int) error
|
|
ContainerRm(name string, config *types.ContainerRmConfig) error
|
|
ContainerStart(name string, hostConfig *container.HostConfig, checkpoint string, checkpointDir string) error
|
|
ContainerStop(name string, seconds *int) error
|
|
ContainerUnpause(name string) error
|
|
ContainerUpdate(name string, hostConfig *container.HostConfig) (container.ContainerUpdateOKBody, error)
|
|
ContainerWait(name string, timeout time.Duration) (int, error)
|
|
}
|
|
|
|
// monitorBackend includes functions to implement to provide containers monitoring functionality.
|
|
type monitorBackend interface {
|
|
ContainerChanges(name string) ([]archive.Change, error)
|
|
ContainerInspect(name string, size bool, version string) (interface{}, error)
|
|
ContainerLogs(ctx context.Context, name string, config *types.ContainerLogsOptions) (<-chan *backend.LogMessage, error)
|
|
ContainerStats(ctx context.Context, name string, config *backend.ContainerStatsConfig) error
|
|
ContainerTop(name string, psArgs string) (*container.ContainerTopOKBody, error)
|
|
|
|
Containers(config *types.ContainerListOptions) ([]*types.Container, error)
|
|
}
|
|
|
|
// attachBackend includes function to implement to provide container attaching functionality.
|
|
type attachBackend interface {
|
|
ContainerAttach(name string, c *backend.ContainerAttachConfig) error
|
|
}
|
|
|
|
// systemBackend includes functions to implement to provide system wide containers functionality
|
|
type systemBackend interface {
|
|
ContainersPrune(pruneFilters filters.Args) (*types.ContainersPruneReport, error)
|
|
}
|
|
|
|
// Backend is all the methods that need to be implemented to provide container specific functionality.
|
|
type Backend interface {
|
|
execBackend
|
|
copyBackend
|
|
stateBackend
|
|
monitorBackend
|
|
attachBackend
|
|
systemBackend
|
|
}
|