Documentation
¶
Index ¶
- Constants
- func BuildDockerName(dockerName KubeletContainerName, container *v1.Container) (string, string, string)
- func GetFakeContainerID(name string) string
- func GetKubeletDockerContainers(client Interface, allContainers bool) ([]*dockertypes.Container, error)
- func IsContainerNotFoundError(err error) bool
- func IsImageNotFoundError(err error) bool
- func NewCalledDetail(name string, arguments []interface{}) calledDetail
- func ParseDockerTimestamp(s string) (time.Time, error)
- type FakeContainer
- type FakeDockerClient
- func (f *FakeDockerClient) AssertCallDetails(calls ...calledDetail) (err error)
- func (f *FakeDockerClient) AssertCalls(calls []string) (err error)
- func (f *FakeDockerClient) AssertCreatedByName(created []string) error
- func (f *FakeDockerClient) AssertCreatedByNameWithOrder(created []string) error
- func (f *FakeDockerClient) AssertImagesPulled(pulled []string) error
- func (f *FakeDockerClient) AssertImagesPulledMsgs(expected []string) error
- func (f *FakeDockerClient) AssertStopped(stopped []string) error
- func (f *FakeDockerClient) AssertStoppedByName(stopped []string) error
- func (f *FakeDockerClient) AttachToContainer(id string, opts dockertypes.ContainerAttachOptions, sopts StreamOptions) error
- func (f *FakeDockerClient) ClearCalls()
- func (f *FakeDockerClient) ClearErrors()
- func (f *FakeDockerClient) CreateContainer(c dockertypes.ContainerCreateConfig) (*dockertypes.ContainerCreateResponse, error)
- func (f *FakeDockerClient) CreateExec(id string, opts dockertypes.ExecConfig) (*dockertypes.ContainerExecCreateResponse, error)
- func (f *FakeDockerClient) ImageHistory(id string) ([]dockertypes.ImageHistory, error)
- func (f *FakeDockerClient) Info() (*dockertypes.Info, error)
- func (f *FakeDockerClient) InjectError(fn string, err error)
- func (f *FakeDockerClient) InjectErrors(errs map[string]error)
- func (f *FakeDockerClient) InjectImageHistory(data map[string][]dockertypes.ImageHistory)
- func (f *FakeDockerClient) InjectImageInspects(inspects []dockertypes.ImageInspect)
- func (f *FakeDockerClient) InjectImages(images []dockertypes.Image)
- func (f *FakeDockerClient) InspectContainer(id string) (*dockertypes.ContainerJSON, error)
- func (f *FakeDockerClient) InspectExec(id string) (*dockertypes.ContainerExecInspect, error)
- func (f *FakeDockerClient) InspectImageByID(name string) (*dockertypes.ImageInspect, error)
- func (f *FakeDockerClient) InspectImageByRef(name string) (*dockertypes.ImageInspect, error)
- func (f *FakeDockerClient) ListContainers(options dockertypes.ContainerListOptions) ([]dockertypes.Container, error)
- func (f *FakeDockerClient) ListImages(opts dockertypes.ImageListOptions) ([]dockertypes.Image, error)
- func (f *FakeDockerClient) Logs(id string, opts dockertypes.ContainerLogsOptions, sopts StreamOptions) error
- func (f *FakeDockerClient) MakeImagesPrivate(images []dockertypes.Image, auth dockertypes.AuthConfig)
- func (f *FakeDockerClient) PullImage(image string, auth dockertypes.AuthConfig, opts dockertypes.ImagePullOptions) error
- func (f *FakeDockerClient) RemoveContainer(id string, opts dockertypes.ContainerRemoveOptions) error
- func (f *FakeDockerClient) RemoveImage(image string, opts dockertypes.ImageRemoveOptions) ([]dockertypes.ImageDelete, error)
- func (f *FakeDockerClient) ResetImages()
- func (f *FakeDockerClient) ResizeContainerTTY(id string, height, width int) error
- func (f *FakeDockerClient) ResizeExecTTY(id string, height, width int) error
- func (f *FakeDockerClient) SetFakeContainers(containers []*FakeContainer)
- func (f *FakeDockerClient) SetFakeRunningContainers(containers []*FakeContainer)
- func (f *FakeDockerClient) StartContainer(id string) error
- func (f *FakeDockerClient) StartExec(startExec string, opts dockertypes.ExecStartCheck, sopts StreamOptions) error
- func (f *FakeDockerClient) StopContainer(id string, timeout int) error
- func (f *FakeDockerClient) Version() (*dockertypes.Version, error)
- func (f *FakeDockerClient) WithClock(c clock.Clock) *FakeDockerClient
- func (f *FakeDockerClient) WithTraceDisabled() *FakeDockerClient
- func (f *FakeDockerClient) WithVersion(version, apiVersion string) *FakeDockerClient
- type FakeDockerPuller
- type ImageNotFoundError
- type Interface
- type KubeletContainerName
- type StreamOptions
Constants ¶
const (
// https://docs.docker.com/engine/reference/api/docker_remote_api/
// docker version should be at least 1.10.x
MinimumDockerAPIVersion = "1.22.0"
// Status of a container returned by ListContainers.
StatusRunningPrefix = "Up"
StatusCreatedPrefix = "Created"
StatusExitedPrefix = "Exited"
)
Variables ¶
This section is empty.
Functions ¶
func BuildDockerName ¶
func BuildDockerName(dockerName KubeletContainerName, container *v1.Container) (string, string, string)
Creates a name which can be reversed to identify both full pod name and container name. This function returns stable name, unique name and a unique id. Although rand.Uint32() is not really unique, but it's enough for us because error will only occur when instances of the same container in the same pod have the same UID. The chance is really slim.
func GetFakeContainerID ¶
func GetFakeContainerID(name string) string
GetFakeContainerID generates a fake container id from container name with a hash.
func GetKubeletDockerContainers ¶
func GetKubeletDockerContainers(client Interface, allContainers bool) ([]*dockertypes.Container, error)
GetKubeletDockerContainers lists all container or just the running ones. Returns a list of docker containers that we manage TODO: This function should be deleted after migrating test/e2e_node/garbage_collector_test.go off of it.
func IsContainerNotFoundError ¶
func IsContainerNotFoundError(err error) bool
IsContainerNotFoundError checks whether the error is container not found error.
func IsImageNotFoundError ¶
func IsImageNotFoundError(err error) bool
IsImageNotFoundError checks whether the error is image not found error. This is exposed to share with dockershim.
func NewCalledDetail ¶
func NewCalledDetail(name string, arguments []interface{}) calledDetail
NewCalledDetail create a new call detail item.
func ParseDockerTimestamp ¶
func ParseDockerTimestamp(s string) (time.Time, error)
ParseDockerTimestamp parses the timestamp returned by Interface from string to time.Time
Types ¶
type FakeContainer ¶
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 ¶
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.Image
ImageIDsNeedingAuth map[string]dockertypes.AuthConfig
Errors map[string]error
EnableTrace bool
// 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][]dockertypes.ImageHistory
// 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 ¶
func NewFakeDockerClient() *FakeDockerClient
func (*FakeDockerClient) AssertCallDetails ¶
func (f *FakeDockerClient) AssertCallDetails(calls ...calledDetail) (err error)
func (*FakeDockerClient) AssertCalls ¶
func (f *FakeDockerClient) AssertCalls(calls []string) (err error)
func (*FakeDockerClient) AssertCreatedByName ¶
func (f *FakeDockerClient) AssertCreatedByName(created []string) error
func (*FakeDockerClient) AssertCreatedByNameWithOrder ¶
func (f *FakeDockerClient) AssertCreatedByNameWithOrder(created []string) error
func (*FakeDockerClient) AssertImagesPulled ¶
func (f *FakeDockerClient) AssertImagesPulled(pulled []string) error
func (*FakeDockerClient) AssertImagesPulledMsgs ¶
func (f *FakeDockerClient) AssertImagesPulledMsgs(expected []string) error
func (*FakeDockerClient) AssertStopped ¶
func (f *FakeDockerClient) AssertStopped(stopped []string) error
func (*FakeDockerClient) AssertStoppedByName ¶
func (f *FakeDockerClient) AssertStoppedByName(stopped []string) error
func (*FakeDockerClient) AttachToContainer ¶
func (f *FakeDockerClient) AttachToContainer(id string, opts dockertypes.ContainerAttachOptions, sopts StreamOptions) error
func (*FakeDockerClient) ClearCalls ¶
func (f *FakeDockerClient) ClearCalls()
func (*FakeDockerClient) ClearErrors ¶
func (f *FakeDockerClient) ClearErrors()
func (*FakeDockerClient) CreateContainer ¶
func (f *FakeDockerClient) CreateContainer(c dockertypes.ContainerCreateConfig) (*dockertypes.ContainerCreateResponse, error)
CreateContainer is a test-spy implementation of Interface.CreateContainer. It adds an entry "create" to the internal method call record.
func (*FakeDockerClient) CreateExec ¶
func (f *FakeDockerClient) CreateExec(id string, opts dockertypes.ExecConfig) (*dockertypes.ContainerExecCreateResponse, error)
func (*FakeDockerClient) ImageHistory ¶
func (f *FakeDockerClient) ImageHistory(id string) ([]dockertypes.ImageHistory, error)
func (*FakeDockerClient) InjectError ¶
func (f *FakeDockerClient) InjectError(fn string, err error)
func (*FakeDockerClient) InjectErrors ¶
func (f *FakeDockerClient) InjectErrors(errs map[string]error)
func (*FakeDockerClient) InjectImageHistory ¶
func (f *FakeDockerClient) InjectImageHistory(data map[string][]dockertypes.ImageHistory)
func (*FakeDockerClient) InjectImageInspects ¶
func (f *FakeDockerClient) InjectImageInspects(inspects []dockertypes.ImageInspect)
func (*FakeDockerClient) InjectImages ¶
func (f *FakeDockerClient) InjectImages(images []dockertypes.Image)
func (*FakeDockerClient) InspectContainer ¶
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) InspectExec ¶
func (f *FakeDockerClient) InspectExec(id string) (*dockertypes.ContainerExecInspect, error)
func (*FakeDockerClient) InspectImageByID ¶
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 ¶
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 ¶
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 ¶
func (f *FakeDockerClient) ListImages(opts dockertypes.ImageListOptions) ([]dockertypes.Image, error)
func (*FakeDockerClient) Logs ¶
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 ¶
func (f *FakeDockerClient) MakeImagesPrivate(images []dockertypes.Image, auth dockertypes.AuthConfig)
func (*FakeDockerClient) PullImage ¶
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 ¶
func (f *FakeDockerClient) RemoveContainer(id string, opts dockertypes.ContainerRemoveOptions) error
func (*FakeDockerClient) RemoveImage ¶
func (f *FakeDockerClient) RemoveImage(image string, opts dockertypes.ImageRemoveOptions) ([]dockertypes.ImageDelete, error)
func (*FakeDockerClient) ResetImages ¶
func (f *FakeDockerClient) ResetImages()
func (*FakeDockerClient) ResizeContainerTTY ¶
func (f *FakeDockerClient) ResizeContainerTTY(id string, height, width int) error
func (*FakeDockerClient) ResizeExecTTY ¶
func (f *FakeDockerClient) ResizeExecTTY(id string, height, width int) error
func (*FakeDockerClient) SetFakeContainers ¶
func (f *FakeDockerClient) SetFakeContainers(containers []*FakeContainer)
func (*FakeDockerClient) SetFakeRunningContainers ¶
func (f *FakeDockerClient) SetFakeRunningContainers(containers []*FakeContainer)
func (*FakeDockerClient) StartContainer ¶
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 ¶
func (f *FakeDockerClient) StartExec(startExec string, opts dockertypes.ExecStartCheck, sopts StreamOptions) error
func (*FakeDockerClient) StopContainer ¶
func (f *FakeDockerClient) StopContainer(id string, timeout int) error
StopContainer is a test-spy implementation of Interface.StopContainer. It adds an entry "stop" to the internal method call record.
func (*FakeDockerClient) Version ¶
func (f *FakeDockerClient) Version() (*dockertypes.Version, error)
func (*FakeDockerClient) WithClock ¶
func (f *FakeDockerClient) WithClock(c clock.Clock) *FakeDockerClient
func (*FakeDockerClient) WithTraceDisabled ¶
func (f *FakeDockerClient) WithTraceDisabled() *FakeDockerClient
func (*FakeDockerClient) WithVersion ¶
func (f *FakeDockerClient) WithVersion(version, apiVersion string) *FakeDockerClient
type FakeDockerPuller ¶
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 ¶
func (f *FakeDockerPuller) GetImageRef(image string) (string, error)
type ImageNotFoundError ¶
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.
type Interface ¶
type Interface interface {
ListContainers(options dockertypes.ContainerListOptions) ([]dockertypes.Container, error)
InspectContainer(id string) (*dockertypes.ContainerJSON, error)
CreateContainer(dockertypes.ContainerCreateConfig) (*dockertypes.ContainerCreateResponse, error)
StartContainer(id string) error
StopContainer(id string, timeout int) 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.Image, error)
PullImage(image string, auth dockertypes.AuthConfig, opts dockertypes.ImagePullOptions) error
RemoveImage(image string, opts dockertypes.ImageRemoveOptions) ([]dockertypes.ImageDelete, error)
ImageHistory(id string) ([]dockertypes.ImageHistory, error)
Logs(string, dockertypes.ContainerLogsOptions, StreamOptions) error
Version() (*dockertypes.Version, error)
Info() (*dockertypes.Info, error)
CreateExec(string, dockertypes.ExecConfig) (*dockertypes.ContainerExecCreateResponse, error)
StartExec(string, dockertypes.ExecStartCheck, StreamOptions) error
InspectExec(id string) (*dockertypes.ContainerExecInspect, error)
AttachToContainer(string, dockertypes.ContainerAttachOptions, StreamOptions) error
ResizeContainerTTY(id string, height, width int) error
ResizeExecTTY(id string, height, width int) error
}
Interface is an abstract interface for testability. It abstracts the interface of docker client.
func ConnectToDockerOrDie ¶
func ConnectToDockerOrDie(dockerEndpoint string, requestTimeout, imagePullProgressDeadline time.Duration) 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 ¶
func NewInstrumentedInterface(dockerClient Interface) Interface
Creates an instrumented Interface from an existing Interface.
type KubeletContainerName ¶
type KubeletContainerName struct {
PodFullName string
PodUID types.UID
ContainerName string
}
KubeletContainerName encapsulates a pod name and a Kubernetes container name.
func ParseDockerName ¶
func ParseDockerName(name string) (dockerName *KubeletContainerName, hash uint64, err error)
Unpacks a container name, returning the pod full name and container name we would have used to construct the docker name. If we are unable to parse the name, an error is returned.
type StreamOptions ¶
type StreamOptions struct {
RawTerminal bool
InputStream io.Reader
OutputStream io.Writer
ErrorStream io.Writer
}
StreamOptions are the options used to configure the stream redirection