dockertools

package
v0.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 30, 2015 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PodInfraContainerName = leaky.PodInfraContainerName
	DockerPrefix          = "docker://"
)

Variables

View Source
var (
	// ErrNoContainersInPod is returned when there are no containers for a given pod
	ErrNoContainersInPod = errors.New("no containers exist for this pod")

	// ErrNoPodInfraContainerInPod is returned when there is no pod infra container for a given pod
	ErrNoPodInfraContainerInPod = errors.New("No pod infra container exists for this pod")

	// ErrContainerCannotRun is returned when a container is created, but cannot run properly
	ErrContainerCannotRun = errors.New("Container cannot run")
)

Functions

func BuildDockerName

func BuildDockerName(dockerName KubeletContainerName, container *api.Container) string

Creates a name which can be reversed to identify both full pod name and container name.

func GetDockerPodStatus added in v0.14.0

func GetDockerPodStatus(client DockerInterface, manifest api.PodSpec, podFullName string, uid types.UID) (*api.PodStatus, error)

GetDockerPodStatus returns docker related status for all containers in the pod/manifest and infrastructure container

func GetKubeletDockerContainerLogs

func GetKubeletDockerContainerLogs(client DockerInterface, containerID, tail string, follow bool, stdout, stderr io.Writer) (err error)

GetKubeletDockerContainerLogs returns logs of specific container By default the function will return snapshot of the container log Log streaming is possible if 'follow' param is set to true Log tailing is possible when number of tailed lines are set and only if 'follow' is false TODO: Make 'RawTerminal' option flagable.

func GetPods added in v0.14.0

func GetPods(client DockerInterface, all bool) ([]*kubecontainer.Pod, error)

func GetRecentDockerContainersWithNameAndUUID

func GetRecentDockerContainersWithNameAndUUID(client DockerInterface, podFullName string, uid types.UID, containerName string) ([]*docker.Container, error)

GetRecentDockerContainersWithNameAndUUID returns a list of dead docker containers which matches the name and uid given.

func GetRunningContainers added in v0.10.1

func GetRunningContainers(client DockerInterface, ids []string) ([]*docker.Container, error)

func HashContainer

func HashContainer(container *api.Container) uint64

func RunContainer added in v0.14.0

func RunContainer(client DockerInterface, container *api.Container, pod *api.Pod, opts *kubecontainer.RunContainerOptions,
	refManager *kubecontainer.RefManager, ref *api.ObjectReference, recorder record.EventRecorder) (string, error)

RunContainer creates and starts a docker container with the required RunContainerOptions. On success it will return the container's ID with nil error. During the process, it will use the reference and event recorder to report the state of the container (e.g. created, started, failed, etc.). TODO(yifan): To use a strong type for the returned container ID.

func StartPty added in v0.12.0

func StartPty(c *exec.Cmd) (*os.File, error)

Types

type ContainerCommandRunner

type ContainerCommandRunner interface {
	RunInContainer(containerID string, cmd []string) ([]byte, error)
	GetDockerServerVersion() ([]uint, error)
	ExecInContainer(containerID string, cmd []string, in io.Reader, out, err io.WriteCloser, tty bool) error
	PortForward(podInfraContainerID string, port uint16, stream io.ReadWriteCloser) error
}

func NewDockerContainerCommandRunner

func NewDockerContainerCommandRunner(client DockerInterface) ContainerCommandRunner

NewDockerContainerCommandRunner creates a ContainerCommandRunner which uses nsinit to run a command inside a container.

type DockerCache added in v0.12.0

type DockerCache interface {
	GetPods() ([]*container.Pod, error)
	ForceUpdateIfOlder(time.Time) error
}

func NewDockerCache added in v0.12.0

func NewDockerCache(client DockerInterface) (DockerCache, error)

func NewFakeDockerCache added in v0.12.0

func NewFakeDockerCache(client DockerInterface) DockerCache

type DockerContainers

type DockerContainers map[DockerID]*docker.APIContainers

DockerContainers is a map of containers

func GetKubeletDockerContainers

func GetKubeletDockerContainers(client DockerInterface, allContainers bool) (DockerContainers, error)

GetKubeletDockerContainers takes client and boolean whether to list all container or just the running ones. Returns a map of docker containers that we manage. The map key is the docker container ID

func (DockerContainers) FindContainersByPod added in v0.13.0

func (c DockerContainers) FindContainersByPod(podUID types.UID, podFullName string) DockerContainers

FindContainersByPod returns the containers that belong to the pod.

func (DockerContainers) FindPodContainer

func (c DockerContainers) FindPodContainer(podFullName string, uid types.UID, containerName string) (*docker.APIContainers, bool, uint64)

func (DockerContainers) RemoveContainerWithID added in v0.13.0

func (c DockerContainers) RemoveContainerWithID(containerID DockerID)

RemoveContainerWithID removes the container with the given containerID.

type DockerID

type DockerID string

DockerID is an ID of docker container. It is a type to make it clear when we're working with docker container Ids

type DockerInterface

type DockerInterface interface {
	ListContainers(options docker.ListContainersOptions) ([]docker.APIContainers, error)
	InspectContainer(id string) (*docker.Container, error)
	CreateContainer(docker.CreateContainerOptions) (*docker.Container, error)
	StartContainer(id string, hostConfig *docker.HostConfig) error
	StopContainer(id string, timeout uint) error
	RemoveContainer(opts docker.RemoveContainerOptions) error
	InspectImage(image string) (*docker.Image, error)
	ListImages(opts docker.ListImagesOptions) ([]docker.APIImages, error)
	PullImage(opts docker.PullImageOptions, auth docker.AuthConfiguration) error
	RemoveImage(image string) error
	Logs(opts docker.LogsOptions) error
	Version() (*docker.Env, error)
	CreateExec(docker.CreateExecOptions) (*docker.Exec, error)
	StartExec(string, docker.StartExecOptions) error
}

DockerInterface is an abstract interface for testability. It abstracts the interface of docker.Client.

func ConnectToDockerOrDie added in v0.11.0

func ConnectToDockerOrDie(dockerEndpoint string) DockerInterface

type DockerPuller

type DockerPuller interface {
	Pull(image string) error
	IsImagePresent(image string) (bool, error)
}

DockerPuller is an abstract interface for testability. It abstracts image pull operations.

func NewDockerPuller

func NewDockerPuller(client DockerInterface, qps float32, burst int) DockerPuller

NewDockerPuller creates a new instance of the default implementation of DockerPuller.

type FakeDockerCache added in v0.12.0

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

func (*FakeDockerCache) ForceUpdateIfOlder added in v0.13.0

func (f *FakeDockerCache) ForceUpdateIfOlder(time.Time) error

func (*FakeDockerCache) GetPods added in v0.14.0

func (f *FakeDockerCache) GetPods() ([]*container.Pod, error)

type FakeDockerClient

type FakeDockerClient struct {
	sync.Mutex
	ContainerList []docker.APIContainers
	Container     *docker.Container
	ContainerMap  map[string]*docker.Container
	Image         *docker.Image
	Images        []docker.APIImages
	Err           error

	Stopped []string

	Created       []string
	Removed       []string
	RemovedImages util.StringSet
	VersionInfo   docker.Env
	// 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 (*FakeDockerClient) AssertCalls

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

func (*FakeDockerClient) AssertUnorderedCalls added in v0.14.0

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

func (*FakeDockerClient) ClearCalls added in v0.8.0

func (f *FakeDockerClient) ClearCalls()

func (*FakeDockerClient) CreateContainer

func (f *FakeDockerClient) CreateContainer(c docker.CreateContainerOptions) (*docker.Container, error)

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

func (*FakeDockerClient) CreateExec added in v0.5.1

func (f *FakeDockerClient) CreateExec(_ docker.CreateExecOptions) (*docker.Exec, error)

func (*FakeDockerClient) InspectContainer

func (f *FakeDockerClient) InspectContainer(id string) (*docker.Container, error)

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

func (*FakeDockerClient) InspectImage

func (f *FakeDockerClient) InspectImage(name string) (*docker.Image, error)

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

func (*FakeDockerClient) ListContainers

func (f *FakeDockerClient) ListContainers(options docker.ListContainersOptions) ([]docker.APIContainers, error)

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

func (*FakeDockerClient) ListImages added in v0.8.0

func (f *FakeDockerClient) ListImages(opts docker.ListImagesOptions) ([]docker.APIImages, error)

func (*FakeDockerClient) Logs

func (f *FakeDockerClient) Logs(opts docker.LogsOptions) error

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

func (*FakeDockerClient) PullImage

func (f *FakeDockerClient) PullImage(opts docker.PullImageOptions, auth docker.AuthConfiguration) error

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

func (*FakeDockerClient) RemoveContainer added in v0.4.2

func (f *FakeDockerClient) RemoveContainer(opts docker.RemoveContainerOptions) error

func (*FakeDockerClient) RemoveImage added in v0.8.0

func (f *FakeDockerClient) RemoveImage(image string) error

func (*FakeDockerClient) StartContainer

func (f *FakeDockerClient) StartContainer(id string, hostConfig *docker.HostConfig) error

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

func (*FakeDockerClient) StartExec added in v0.5.1

func (f *FakeDockerClient) StartExec(_ string, _ docker.StartExecOptions) error

func (*FakeDockerClient) StopContainer

func (f *FakeDockerClient) StopContainer(id string, timeout uint) error

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

func (*FakeDockerClient) Version added in v0.5.1

func (f *FakeDockerClient) Version() (*docker.Env, error)

type FakeDockerPuller

type FakeDockerPuller struct {
	sync.Mutex

	HasImages    []string
	ImagesPulled []string

	// Every pull will return the first error here, and then reslice
	// to remove it. Will give nil errors if this slice is empty.
	ErrorsToInject []error
}

FakeDockerPuller is a stub implementation of DockerPuller.

func (*FakeDockerPuller) IsImagePresent

func (f *FakeDockerPuller) IsImagePresent(name string) (bool, error)

func (*FakeDockerPuller) Pull

func (f *FakeDockerPuller) Pull(image string) (err error)

Pull records the image pull attempt, and optionally injects an error.

type KubeletContainerName added in v0.14.0

type KubeletContainerName struct {
	PodFullName   string
	PodUID        types.UID
	ContainerName string
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL