1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Split container backend into several specialized interfaces.

Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
David Calavera 2015-11-24 13:35:02 -05:00
parent 38abba9e2c
commit 85c3c6865e

View file

@ -1,5 +1,3 @@
// +build !windows
package container package container
import ( import (
@ -14,38 +12,63 @@ import (
"github.com/docker/docker/runconfig" "github.com/docker/docker/runconfig"
) )
// Backend is all the methods that need to be implemented to provide // execBackend includes functions to implement to provide exec functionality.
// container specific functionality type execBackend interface {
type Backend interface {
ContainerArchivePath(name string, path string) (content io.ReadCloser, stat *types.ContainerPathStat, err error)
ContainerAttachWithLogs(prefixOrName string, c *daemon.ContainerAttachWithLogsConfig) error
ContainerChanges(name string) ([]archive.Change, error)
ContainerCopy(name string, res string) (io.ReadCloser, error)
ContainerCreate(params *daemon.ContainerCreateConfig) (types.ContainerCreateResponse, error)
ContainerExecCreate(config *runconfig.ExecConfig) (string, error) ContainerExecCreate(config *runconfig.ExecConfig) (string, error)
ContainerExecInspect(id string) (*exec.Config, error) ContainerExecInspect(id string) (*exec.Config, error)
ContainerExecResize(name string, height, width int) error ContainerExecResize(name string, height, width int) error
ContainerExecStart(name string, stdin io.ReadCloser, stdout io.Writer, stderr io.Writer) error ContainerExecStart(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 ContainerExport(name string, out io.Writer) error
ContainerExtractToDir(name, path string, noOverwriteDirNonDir bool, content io.Reader) error ContainerExtractToDir(name, path string, noOverwriteDirNonDir bool, content io.Reader) error
ContainerInspect(name string, size bool, version version.Version) (interface{}, 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(params *daemon.ContainerCreateConfig) (types.ContainerCreateResponse, error)
ContainerKill(name string, sig uint64) error ContainerKill(name string, sig uint64) error
ContainerLogs(containerName string, config *daemon.ContainerLogsConfig) error
ContainerPause(name string) error ContainerPause(name string) error
ContainerRename(oldName, newName string) error ContainerRename(oldName, newName string) error
ContainerResize(name string, height, width int) error ContainerResize(name string, height, width int) error
ContainerRestart(name string, seconds int) error ContainerRestart(name string, seconds int) error
ContainerRm(name string, config *daemon.ContainerRmConfig) error ContainerRm(name string, config *daemon.ContainerRmConfig) error
Containers(config *daemon.ContainersConfig) ([]*types.Container, error)
ContainerStart(name string, hostConfig *runconfig.HostConfig) error ContainerStart(name string, hostConfig *runconfig.HostConfig) error
ContainerStatPath(name string, path string) (stat *types.ContainerPathStat, err error)
ContainerStats(prefixOrName string, config *daemon.ContainerStatsConfig) error
ContainerStop(name string, seconds int) error ContainerStop(name string, seconds int) error
ContainerTop(name string, psArgs string) (*types.ContainerProcessList, error)
ContainerUnpause(name string) error ContainerUnpause(name string) error
ContainerWait(name string, timeout time.Duration) (int, error) ContainerWait(name string, timeout time.Duration) (int, error)
ContainerWsAttachWithLogs(prefixOrName string, c *daemon.ContainerWsAttachWithLogsConfig) error
ExecExists(name string) (bool, error)
Exists(id string) bool Exists(id string) bool
IsPaused(id string) bool IsPaused(id string) bool
} }
// 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 version.Version) (interface{}, error)
ContainerLogs(name string, config *daemon.ContainerLogsConfig) error
ContainerStats(name string, config *daemon.ContainerStatsConfig) error
ContainerTop(name string, psArgs string) (*types.ContainerProcessList, error)
Containers(config *daemon.ContainersConfig) ([]*types.Container, error)
}
// attachBackend includes function to implement to provide container attaching functionality.
type attachBackend interface {
ContainerAttachWithLogs(name string, c *daemon.ContainerAttachWithLogsConfig) error
ContainerWsAttachWithLogs(name string, c *daemon.ContainerWsAttachWithLogsConfig) error
}
// Backend is all the methods that need to be implemented to provide container specific functionality.
type Backend interface {
execBackend
copyBackend
stateBackend
monitorBackend
attachBackend
}