kubernetes: k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker Index | Files

package libdocker

import "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker"

Index

Package Files

client.go fake_client.go helpers.go instrumented_client.go kube_docker_client.go

Constants

const (
    // https://docs.docker.com/engine/reference/api/docker_remote_api/
    // docker version should be at least 1.13.1
    MinimumDockerAPIVersion = "1.26.0"

    // Status of a container returned by ListContainers.
    StatusRunningPrefix = "Up"
    StatusCreatedPrefix = "Created"
    StatusExitedPrefix  = "Exited"

    // Fake docker endpoint
    FakeDockerEndpoint = "fake://"
)

func GetFakeContainerID Uses

func GetFakeContainerID(name string) string

GetFakeContainerID generates a fake container id from container name with a hash.

func IsContainerNotFoundError Uses

func IsContainerNotFoundError(err error) bool

IsContainerNotFoundError checks whether the error is container not found error.

func IsImageNotFoundError Uses

func IsImageNotFoundError(err error) bool

IsImageNotFoundError checks whether the error is image not found error. This is exposed to share with dockershim.

func ParseDockerTimestamp Uses

func ParseDockerTimestamp(s string) (time.Time, error)

ParseDockerTimestamp parses the timestamp returned by Interface from string to time.Time

type CalledDetail Uses

type CalledDetail struct {
    // contains filtered or unexported fields
}

func NewCalledDetail Uses

func NewCalledDetail(name string, arguments []interface{}) CalledDetail

NewCalledDetail create a new call detail item.

type FakeContainer Uses

type FakeContainer struct {
    ID         string
    Name       string
    Running    bool
    ExitCode   int
    Pid        int
    CreatedAt  time.Time
    StartedAt  time.Time
    FinishedAt time.Time
    Config     *dockercontainer.Config
    HostConfig *dockercontainer.HostConfig
}

Because the new data type returned by engine-api is too complex to manually initialize, we need a fake container which is easier to initialize.

type FakeDockerClient Uses

type FakeDockerClient struct {
    sync.Mutex
    Clock                clock.Clock
    RunningContainerList []dockertypes.Container
    ExitedContainerList  []dockertypes.Container
    ContainerMap         map[string]*dockertypes.ContainerJSON
    ImageInspects        map[string]*dockertypes.ImageInspect
    Images               []dockertypes.ImageSummary
    ImageIDsNeedingAuth  map[string]dockertypes.AuthConfig
    Errors               map[string]error

    EnableTrace   bool
    RandGenerator *rand.Rand

    // Created, Started, Stopped and Removed all contain container docker ID
    Created []string
    Started []string
    Stopped []string
    Removed []string
    // Images pulled by ref (name or ID).
    ImagesPulled []string

    VersionInfo dockertypes.Version
    Information dockertypes.Info
    ExecInspect *dockertypes.ContainerExecInspect

    EnableSleep     bool
    ImageHistoryMap map[string][]dockerimagetypes.HistoryResponseItem
    // contains filtered or unexported fields
}

FakeDockerClient is a simple fake docker client, so that kubelet can be run for testing without requiring a real docker setup.

func NewFakeDockerClient Uses

func NewFakeDockerClient() *FakeDockerClient

func (*FakeDockerClient) AssertCallDetails Uses

func (f *FakeDockerClient) AssertCallDetails(calls ...CalledDetail) (err error)

func (*FakeDockerClient) AssertCalls Uses

func (f *FakeDockerClient) AssertCalls(calls []string) (err error)

func (*FakeDockerClient) AssertCreatedByName Uses

func (f *FakeDockerClient) AssertCreatedByName(created []string) error

func (*FakeDockerClient) AssertCreatedByNameWithOrder Uses

func (f *FakeDockerClient) AssertCreatedByNameWithOrder(created []string) error

func (*FakeDockerClient) AssertImagesPulled Uses

func (f *FakeDockerClient) AssertImagesPulled(pulled []string) error

func (*FakeDockerClient) AssertImagesPulledMsgs Uses

func (f *FakeDockerClient) AssertImagesPulledMsgs(expected []string) error

func (*FakeDockerClient) AssertStopped Uses

func (f *FakeDockerClient) AssertStopped(stopped []string) error

func (*FakeDockerClient) AssertStoppedByName Uses

func (f *FakeDockerClient) AssertStoppedByName(stopped []string) error

func (*FakeDockerClient) AttachToContainer Uses

func (f *FakeDockerClient) AttachToContainer(id string, opts dockertypes.ContainerAttachOptions, sopts StreamOptions) error

func (*FakeDockerClient) ClearCalls Uses

func (f *FakeDockerClient) ClearCalls()

func (*FakeDockerClient) ClearErrors Uses

func (f *FakeDockerClient) ClearErrors()

func (*FakeDockerClient) CreateContainer Uses

func (f *FakeDockerClient) CreateContainer(c dockertypes.ContainerCreateConfig) (*dockercontainer.ContainerCreateCreatedBody, error)

CreateContainer is a test-spy implementation of Interface.CreateContainer. It adds an entry "create" to the internal method call record.

func (*FakeDockerClient) CreateExec Uses

func (f *FakeDockerClient) CreateExec(id string, opts dockertypes.ExecConfig) (*dockertypes.IDResponse, error)

func (*FakeDockerClient) GetContainerStats Uses

func (f *FakeDockerClient) GetContainerStats(id string) (*dockertypes.StatsJSON, error)

func (*FakeDockerClient) ImageHistory Uses

func (f *FakeDockerClient) ImageHistory(id string) ([]dockerimagetypes.HistoryResponseItem, error)

func (*FakeDockerClient) Info Uses

func (f *FakeDockerClient) Info() (*dockertypes.Info, error)

func (*FakeDockerClient) InjectError Uses

func (f *FakeDockerClient) InjectError(fn string, err error)

func (*FakeDockerClient) InjectErrors Uses

func (f *FakeDockerClient) InjectErrors(errs map[string]error)

func (*FakeDockerClient) InjectImageHistory Uses

func (f *FakeDockerClient) InjectImageHistory(data map[string][]dockerimagetypes.HistoryResponseItem)

func (*FakeDockerClient) InjectImageInspects Uses

func (f *FakeDockerClient) InjectImageInspects(inspects []dockertypes.ImageInspect)

func (*FakeDockerClient) InjectImages Uses

func (f *FakeDockerClient) InjectImages(images []dockertypes.ImageSummary)

func (*FakeDockerClient) InspectContainer Uses

func (f *FakeDockerClient) InspectContainer(id string) (*dockertypes.ContainerJSON, error)

InspectContainer is a test-spy implementation of Interface.InspectContainer. It adds an entry "inspect" to the internal method call record.

func (*FakeDockerClient) InspectContainerWithSize Uses

func (f *FakeDockerClient) InspectContainerWithSize(id string) (*dockertypes.ContainerJSON, error)

InspectContainerWithSize is a test-spy implementation of Interface.InspectContainerWithSize. It adds an entry "inspect" to the internal method call record.

func (*FakeDockerClient) InspectExec Uses

func (f *FakeDockerClient) InspectExec(id string) (*dockertypes.ContainerExecInspect, error)

func (*FakeDockerClient) InspectImageByID Uses

func (f *FakeDockerClient) InspectImageByID(name string) (*dockertypes.ImageInspect, error)

InspectImageByID is a test-spy implementation of Interface.InspectImageByID. It adds an entry "inspect" to the internal method call record.

func (*FakeDockerClient) InspectImageByRef Uses

func (f *FakeDockerClient) InspectImageByRef(name string) (*dockertypes.ImageInspect, error)

InspectImageByRef is a test-spy implementation of Interface.InspectImageByRef. It adds an entry "inspect" to the internal method call record.

func (*FakeDockerClient) ListContainers Uses

func (f *FakeDockerClient) ListContainers(options dockertypes.ContainerListOptions) ([]dockertypes.Container, error)

ListContainers is a test-spy implementation of Interface.ListContainers. It adds an entry "list" to the internal method call record.

func (*FakeDockerClient) ListImages Uses

func (f *FakeDockerClient) ListImages(opts dockertypes.ImageListOptions) ([]dockertypes.ImageSummary, error)

func (*FakeDockerClient) Logs Uses

func (f *FakeDockerClient) Logs(id string, opts dockertypes.ContainerLogsOptions, sopts StreamOptions) error

Logs is a test-spy implementation of Interface.Logs. It adds an entry "logs" to the internal method call record.

func (*FakeDockerClient) MakeImagesPrivate Uses

func (f *FakeDockerClient) MakeImagesPrivate(images []dockertypes.ImageSummary, auth dockertypes.AuthConfig)

func (*FakeDockerClient) PullImage Uses

func (f *FakeDockerClient) PullImage(image string, auth dockertypes.AuthConfig, opts dockertypes.ImagePullOptions) error

PullImage is a test-spy implementation of Interface.PullImage. It adds an entry "pull" to the internal method call record.

func (*FakeDockerClient) RemoveContainer Uses

func (f *FakeDockerClient) RemoveContainer(id string, opts dockertypes.ContainerRemoveOptions) error

func (*FakeDockerClient) RemoveImage Uses

func (f *FakeDockerClient) RemoveImage(image string, opts dockertypes.ImageRemoveOptions) ([]dockertypes.ImageDeleteResponseItem, error)

func (*FakeDockerClient) ResetImages Uses

func (f *FakeDockerClient) ResetImages()

func (*FakeDockerClient) ResizeContainerTTY Uses

func (f *FakeDockerClient) ResizeContainerTTY(id string, height, width uint) error

func (*FakeDockerClient) ResizeExecTTY Uses

func (f *FakeDockerClient) ResizeExecTTY(id string, height, width uint) error

func (*FakeDockerClient) SetFakeContainers Uses

func (f *FakeDockerClient) SetFakeContainers(containers []*FakeContainer)

func (*FakeDockerClient) SetFakeRunningContainers Uses

func (f *FakeDockerClient) SetFakeRunningContainers(containers []*FakeContainer)

func (*FakeDockerClient) StartContainer Uses

func (f *FakeDockerClient) StartContainer(id string) error

StartContainer is a test-spy implementation of Interface.StartContainer. It adds an entry "start" to the internal method call record.

func (*FakeDockerClient) StartExec Uses

func (f *FakeDockerClient) StartExec(startExec string, opts dockertypes.ExecStartCheck, sopts StreamOptions) error

func (*FakeDockerClient) StopContainer Uses

func (f *FakeDockerClient) StopContainer(id string, timeout time.Duration) error

StopContainer is a test-spy implementation of Interface.StopContainer. It adds an entry "stop" to the internal method call record.

func (*FakeDockerClient) UpdateContainerResources Uses

func (f *FakeDockerClient) UpdateContainerResources(id string, updateConfig dockercontainer.UpdateConfig) error

func (*FakeDockerClient) Version Uses

func (f *FakeDockerClient) Version() (*dockertypes.Version, error)

func (*FakeDockerClient) WithClock Uses

func (f *FakeDockerClient) WithClock(c clock.Clock) *FakeDockerClient

func (*FakeDockerClient) WithRandSource Uses

func (f *FakeDockerClient) WithRandSource(source rand.Source) *FakeDockerClient

func (*FakeDockerClient) WithTraceDisabled Uses

func (f *FakeDockerClient) WithTraceDisabled() *FakeDockerClient

func (*FakeDockerClient) WithVersion Uses

func (f *FakeDockerClient) WithVersion(version, apiVersion string) *FakeDockerClient

type FakeDockerPuller Uses

type FakeDockerPuller struct {
    // contains filtered or unexported fields
}

FakeDockerPuller is meant to be a simple wrapper around FakeDockerClient. Please do not add more functionalities to it.

func (*FakeDockerPuller) GetImageRef Uses

func (f *FakeDockerPuller) GetImageRef(image string) (string, error)

func (*FakeDockerPuller) Pull Uses

func (f *FakeDockerPuller) Pull(image string, _ []v1.Secret) error

type ImageNotFoundError Uses

type ImageNotFoundError struct {
    ID string
}

ImageNotFoundError is the error returned by InspectImage when image not found. Expose this to inject error in dockershim for testing.

func (ImageNotFoundError) Error Uses

func (e ImageNotFoundError) Error() string

type Interface Uses

type Interface interface {
    ListContainers(options dockertypes.ContainerListOptions) ([]dockertypes.Container, error)
    InspectContainer(id string) (*dockertypes.ContainerJSON, error)
    InspectContainerWithSize(id string) (*dockertypes.ContainerJSON, error)
    CreateContainer(dockertypes.ContainerCreateConfig) (*dockercontainer.ContainerCreateCreatedBody, error)
    StartContainer(id string) error
    StopContainer(id string, timeout time.Duration) error
    UpdateContainerResources(id string, updateConfig dockercontainer.UpdateConfig) error
    RemoveContainer(id string, opts dockertypes.ContainerRemoveOptions) error
    InspectImageByRef(imageRef string) (*dockertypes.ImageInspect, error)
    InspectImageByID(imageID string) (*dockertypes.ImageInspect, error)
    ListImages(opts dockertypes.ImageListOptions) ([]dockertypes.ImageSummary, error)
    PullImage(image string, auth dockertypes.AuthConfig, opts dockertypes.ImagePullOptions) error
    RemoveImage(image string, opts dockertypes.ImageRemoveOptions) ([]dockertypes.ImageDeleteResponseItem, error)
    ImageHistory(id string) ([]dockerimagetypes.HistoryResponseItem, error)
    Logs(string, dockertypes.ContainerLogsOptions, StreamOptions) error
    Version() (*dockertypes.Version, error)
    Info() (*dockertypes.Info, error)
    CreateExec(string, dockertypes.ExecConfig) (*dockertypes.IDResponse, error)
    StartExec(string, dockertypes.ExecStartCheck, StreamOptions) error
    InspectExec(id string) (*dockertypes.ContainerExecInspect, error)
    AttachToContainer(string, dockertypes.ContainerAttachOptions, StreamOptions) error
    ResizeContainerTTY(id string, height, width uint) error
    ResizeExecTTY(id string, height, width uint) error
    GetContainerStats(id string) (*dockertypes.StatsJSON, error)
}

Interface is an abstract interface for testability. It abstracts the interface of docker client.

func ConnectToDockerOrDie Uses

func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration,
    withTraceDisabled bool, enableSleep bool) Interface

ConnectToDockerOrDie creates docker client connecting to docker daemon. If the endpoint passed in is "fake://", a fake docker client will be returned. The program exits if error occurs. The requestTimeout is the timeout for docker requests. If timeout is exceeded, the request will be cancelled and throw out an error. If requestTimeout is 0, a default value will be applied.

func NewInstrumentedInterface Uses

func NewInstrumentedInterface(dockerClient Interface) Interface

NewInstrumentedInterface creates an instrumented Interface from an existing Interface.

type StreamOptions Uses

type StreamOptions struct {
    RawTerminal  bool
    InputStream  io.Reader
    OutputStream io.Writer
    ErrorStream  io.Writer
    ExecStarted  chan struct{}
}

StreamOptions are the options used to configure the stream redirection

Package libdocker imports 29 packages (graph) and is imported by 55 packages. Updated 2019-07-11. Refresh now. Tools for package owners.