dotcloud/docker

View on GitHub
client/interface.go

Summary

Maintainability
B
4 hrs
Test Coverage
package client // import "github.com/docker/docker/client"

import (
    "context"
    "io"
    "net"
    "net/http"

    "github.com/docker/docker/api/types"
    "github.com/docker/docker/api/types/container"
    "github.com/docker/docker/api/types/events"
    "github.com/docker/docker/api/types/filters"
    "github.com/docker/docker/api/types/image"
    "github.com/docker/docker/api/types/network"
    "github.com/docker/docker/api/types/registry"
    "github.com/docker/docker/api/types/swarm"
    "github.com/docker/docker/api/types/system"
    "github.com/docker/docker/api/types/volume"
    ocispec "github.com/opencontainers/image-spec/specs-go/v1"
)

// CommonAPIClient is the common methods between stable and experimental versions of APIClient.
type CommonAPIClient interface {
    ConfigAPIClient
    ContainerAPIClient
    DistributionAPIClient
    ImageAPIClient
    NodeAPIClient
    NetworkAPIClient
    PluginAPIClient
    ServiceAPIClient
    SwarmAPIClient
    SecretAPIClient
    SystemAPIClient
    VolumeAPIClient
    ClientVersion() string
    DaemonHost() string
    HTTPClient() *http.Client
    ServerVersion(ctx context.Context) (types.Version, error)
    NegotiateAPIVersion(ctx context.Context)
    NegotiateAPIVersionPing(types.Ping)
    DialHijack(ctx context.Context, url, proto string, meta map[string][]string) (net.Conn, error)
    Dialer() func(context.Context) (net.Conn, error)
    Close() error
}

// ContainerAPIClient defines API client methods for the containers
type ContainerAPIClient interface {
    ContainerAttach(ctx context.Context, container string, options container.AttachOptions) (types.HijackedResponse, error)
    ContainerCommit(ctx context.Context, container string, options container.CommitOptions) (types.IDResponse, error)
    ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, platform *ocispec.Platform, containerName string) (container.CreateResponse, error)
    ContainerDiff(ctx context.Context, container string) ([]container.FilesystemChange, error)
    ContainerExecAttach(ctx context.Context, execID string, options container.ExecAttachOptions) (types.HijackedResponse, error)
    ContainerExecCreate(ctx context.Context, container string, options container.ExecOptions) (types.IDResponse, error)
    ContainerExecInspect(ctx context.Context, execID string) (container.ExecInspect, error)
    ContainerExecResize(ctx context.Context, execID string, options container.ResizeOptions) error
    ContainerExecStart(ctx context.Context, execID string, options container.ExecStartOptions) error
    ContainerExport(ctx context.Context, container string) (io.ReadCloser, error)
    ContainerInspect(ctx context.Context, container string) (types.ContainerJSON, error)
    ContainerInspectWithRaw(ctx context.Context, container string, getSize bool) (types.ContainerJSON, []byte, error)
    ContainerKill(ctx context.Context, container, signal string) error
    ContainerList(ctx context.Context, options container.ListOptions) ([]types.Container, error)
    ContainerLogs(ctx context.Context, container string, options container.LogsOptions) (io.ReadCloser, error)
    ContainerPause(ctx context.Context, container string) error
    ContainerRemove(ctx context.Context, container string, options container.RemoveOptions) error
    ContainerRename(ctx context.Context, container, newContainerName string) error
    ContainerResize(ctx context.Context, container string, options container.ResizeOptions) error
    ContainerRestart(ctx context.Context, container string, options container.StopOptions) error
    ContainerStatPath(ctx context.Context, container, path string) (container.PathStat, error)
    ContainerStats(ctx context.Context, container string, stream bool) (container.StatsResponse, error)
    ContainerStatsOneShot(ctx context.Context, container string) (container.StatsResponse, error)
    ContainerStart(ctx context.Context, container string, options container.StartOptions) error
    ContainerStop(ctx context.Context, container string, options container.StopOptions) error
    ContainerTop(ctx context.Context, container string, arguments []string) (container.ContainerTopOKBody, error)
    ContainerUnpause(ctx context.Context, container string) error
    ContainerUpdate(ctx context.Context, container string, updateConfig container.UpdateConfig) (container.ContainerUpdateOKBody, error)
    ContainerWait(ctx context.Context, container string, condition container.WaitCondition) (<-chan container.WaitResponse, <-chan error)
    CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, container.PathStat, error)
    CopyToContainer(ctx context.Context, container, path string, content io.Reader, options container.CopyToContainerOptions) error
    ContainersPrune(ctx context.Context, pruneFilters filters.Args) (container.PruneReport, error)
}

// DistributionAPIClient defines API client methods for the registry
type DistributionAPIClient interface {
    DistributionInspect(ctx context.Context, image, encodedRegistryAuth string) (registry.DistributionInspect, error)
}

// ImageAPIClient defines API client methods for the images
type ImageAPIClient interface {
    ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error)
    BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error)
    BuildCancel(ctx context.Context, id string) error
    ImageCreate(ctx context.Context, parentReference string, options image.CreateOptions) (io.ReadCloser, error)
    ImageHistory(ctx context.Context, image string) ([]image.HistoryResponseItem, error)
    ImageImport(ctx context.Context, source image.ImportSource, ref string, options image.ImportOptions) (io.ReadCloser, error)
    ImageInspectWithRaw(ctx context.Context, image string) (types.ImageInspect, []byte, error)
    ImageList(ctx context.Context, options image.ListOptions) ([]image.Summary, error)
    ImageLoad(ctx context.Context, input io.Reader, quiet bool) (image.LoadResponse, error)
    ImagePull(ctx context.Context, ref string, options image.PullOptions) (io.ReadCloser, error)
    ImagePush(ctx context.Context, ref string, options image.PushOptions) (io.ReadCloser, error)
    ImageRemove(ctx context.Context, image string, options image.RemoveOptions) ([]image.DeleteResponse, error)
    ImageSearch(ctx context.Context, term string, options registry.SearchOptions) ([]registry.SearchResult, error)
    ImageSave(ctx context.Context, images []string) (io.ReadCloser, error)
    ImageTag(ctx context.Context, image, ref string) error
    ImagesPrune(ctx context.Context, pruneFilter filters.Args) (image.PruneReport, error)
}

// NetworkAPIClient defines API client methods for the networks
type NetworkAPIClient interface {
    NetworkConnect(ctx context.Context, network, container string, config *network.EndpointSettings) error
    NetworkCreate(ctx context.Context, name string, options network.CreateOptions) (network.CreateResponse, error)
    NetworkDisconnect(ctx context.Context, network, container string, force bool) error
    NetworkInspect(ctx context.Context, network string, options network.InspectOptions) (network.Inspect, error)
    NetworkInspectWithRaw(ctx context.Context, network string, options network.InspectOptions) (network.Inspect, []byte, error)
    NetworkList(ctx context.Context, options network.ListOptions) ([]network.Summary, error)
    NetworkRemove(ctx context.Context, network string) error
    NetworksPrune(ctx context.Context, pruneFilter filters.Args) (network.PruneReport, error)
}

// NodeAPIClient defines API client methods for the nodes
type NodeAPIClient interface {
    NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error)
    NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error)
    NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error
    NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error
}

// PluginAPIClient defines API client methods for the plugins
type PluginAPIClient interface {
    PluginList(ctx context.Context, filter filters.Args) (types.PluginsListResponse, error)
    PluginRemove(ctx context.Context, name string, options types.PluginRemoveOptions) error
    PluginEnable(ctx context.Context, name string, options types.PluginEnableOptions) error
    PluginDisable(ctx context.Context, name string, options types.PluginDisableOptions) error
    PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error)
    PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error)
    PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error)
    PluginSet(ctx context.Context, name string, args []string) error
    PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error)
    PluginCreate(ctx context.Context, createContext io.Reader, options types.PluginCreateOptions) error
}

// ServiceAPIClient defines API client methods for the services
type ServiceAPIClient interface {
    ServiceCreate(ctx context.Context, service swarm.ServiceSpec, options types.ServiceCreateOptions) (swarm.ServiceCreateResponse, error)
    ServiceInspectWithRaw(ctx context.Context, serviceID string, options types.ServiceInspectOptions) (swarm.Service, []byte, error)
    ServiceList(ctx context.Context, options types.ServiceListOptions) ([]swarm.Service, error)
    ServiceRemove(ctx context.Context, serviceID string) error
    ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (swarm.ServiceUpdateResponse, error)
    ServiceLogs(ctx context.Context, serviceID string, options container.LogsOptions) (io.ReadCloser, error)
    TaskLogs(ctx context.Context, taskID string, options container.LogsOptions) (io.ReadCloser, error)
    TaskInspectWithRaw(ctx context.Context, taskID string) (swarm.Task, []byte, error)
    TaskList(ctx context.Context, options types.TaskListOptions) ([]swarm.Task, error)
}

// SwarmAPIClient defines API client methods for the swarm
type SwarmAPIClient interface {
    SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error)
    SwarmJoin(ctx context.Context, req swarm.JoinRequest) error
    SwarmGetUnlockKey(ctx context.Context) (types.SwarmUnlockKeyResponse, error)
    SwarmUnlock(ctx context.Context, req swarm.UnlockRequest) error
    SwarmLeave(ctx context.Context, force bool) error
    SwarmInspect(ctx context.Context) (swarm.Swarm, error)
    SwarmUpdate(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error
}

// SystemAPIClient defines API client methods for the system
type SystemAPIClient interface {
    Events(ctx context.Context, options events.ListOptions) (<-chan events.Message, <-chan error)
    Info(ctx context.Context) (system.Info, error)
    RegistryLogin(ctx context.Context, auth registry.AuthConfig) (registry.AuthenticateOKBody, error)
    DiskUsage(ctx context.Context, options types.DiskUsageOptions) (types.DiskUsage, error)
    Ping(ctx context.Context) (types.Ping, error)
}

// VolumeAPIClient defines API client methods for the volumes
type VolumeAPIClient interface {
    VolumeCreate(ctx context.Context, options volume.CreateOptions) (volume.Volume, error)
    VolumeInspect(ctx context.Context, volumeID string) (volume.Volume, error)
    VolumeInspectWithRaw(ctx context.Context, volumeID string) (volume.Volume, []byte, error)
    VolumeList(ctx context.Context, options volume.ListOptions) (volume.ListResponse, error)
    VolumeRemove(ctx context.Context, volumeID string, force bool) error
    VolumesPrune(ctx context.Context, pruneFilter filters.Args) (volume.PruneReport, error)
    VolumeUpdate(ctx context.Context, volumeID string, version swarm.Version, options volume.UpdateOptions) error
}

// SecretAPIClient defines API client methods for secrets
type SecretAPIClient interface {
    SecretList(ctx context.Context, options types.SecretListOptions) ([]swarm.Secret, error)
    SecretCreate(ctx context.Context, secret swarm.SecretSpec) (types.SecretCreateResponse, error)
    SecretRemove(ctx context.Context, id string) error
    SecretInspectWithRaw(ctx context.Context, name string) (swarm.Secret, []byte, error)
    SecretUpdate(ctx context.Context, id string, version swarm.Version, secret swarm.SecretSpec) error
}

// ConfigAPIClient defines API client methods for configs
type ConfigAPIClient interface {
    ConfigList(ctx context.Context, options types.ConfigListOptions) ([]swarm.Config, error)
    ConfigCreate(ctx context.Context, config swarm.ConfigSpec) (types.ConfigCreateResponse, error)
    ConfigRemove(ctx context.Context, id string) error
    ConfigInspectWithRaw(ctx context.Context, name string) (swarm.Config, []byte, error)
    ConfigUpdate(ctx context.Context, id string, version swarm.Version, config swarm.ConfigSpec) error
}