pod

package
v0.32.0 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2019 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AreAllPodsRunning

func AreAllPodsRunning(podPrefix, namespace string) (bool, error)

AreAllPodsRunning will return true if all pods in a given namespace are in a Running State

func AreAllPodsSucceeded

func AreAllPodsSucceeded(podPrefix, namespace string) (bool, bool, error)

AreAllPodsSucceeded returns true, false if all pods in a given namespace are in a Running State returns false, true if any one pod is in a Failed state

func ReplaceContainerImageFromFile

func ReplaceContainerImageFromFile(filename, containerImage string) (string, error)

ReplaceContainerImageFromFile loads in a YAML, finds the image: line, and replaces it with the value of containerImage

func RunCommandMultipleTimes

func RunCommandMultipleTimes(podRunnerCmd podRunnerCmd, image, name, command string, desiredAttempts int, sleep, duration, timeout time.Duration) (int, error)

RunCommandMultipleTimes runs the same command 'desiredAttempts' times

func WaitOnReady

func WaitOnReady(podPrefix, namespace string, successesNeeded int, sleep, duration time.Duration) (bool, error)

WaitOnReady is used when you dont have a handle on a pod but want to wait until its in a Ready state. successesNeeded is used to make sure we return the correct value even if the pod is in a CrashLoop

func WaitOnSucceeded

func WaitOnSucceeded(podPrefix, namespace string, sleep, duration time.Duration) (bool, error)

WaitOnSucceeded is used when you dont have a handle on a pod but want to wait until its in a Succeeded state.

Types

type Container

type Container struct {
	Image     string    `json:"image"`
	Ports     []Port    `json:"ports"`
	Env       []EnvVar  `json:"env"`
	Resources Resources `json:"resources"`
	Name      string    `json:"name"`
	Args      []string  `json:"args"`
}

Container holds information like image and ports

func (*Container) GetArg added in v0.30.0

func (c *Container) GetArg(argKey string) (string, error)

GetArg returns an arg's value from a container within a pod

func (*Container) GetEnvironmentVariable

func (c *Container) GetEnvironmentVariable(varName string) (string, error)

GetEnvironmentVariable returns an environment variable value from a container within a pod

func (*Container) ValidateResources

func (c *Container) ValidateResources(a api.KubernetesContainerSpec) error

ValidateResources checks that an addon has the expected memory/cpu limits and requests

type ContainerState

type ContainerState struct {
	Terminated TerminatedContainerState `json:"terminated"`
}

ContainerState has state of a container

type ContainerStatus

type ContainerStatus struct {
	ContainerID  string         `json:"containerID"`
	Image        string         `json:"image"`
	ImageID      string         `json:"imageID"`
	Name         string         `json:"name"`
	Ready        bool           `json:"ready"`
	RestartCount int            `json:"restartCount"`
	State        ContainerState `json:"state"`
	LastState    ContainerState `json:"lastState"`
}

ContainerStatus has status of a container

type EnvVar

type EnvVar struct {
	Name  string `json:"name"`
	Value string `json:"value"`
}

EnvVar holds environment variables

type Limits

type Limits struct {
	CPU    string `json:"cpu"`
	Memory string `json:"memory"`
}

Limits represents container resource limits

type List

type List struct {
	Pods []Pod `json:"items"`
}

List is a container that holds all pods returned from doing a kubectl get pods

func GetAll

func GetAll(namespace string) (*List, error)

GetAll will return all pods in a given namespace

type Metadata

type Metadata struct {
	CreatedAt time.Time         `json:"creationTimestamp"`
	Labels    map[string]string `json:"labels"`
	Name      string            `json:"name"`
	Namespace string            `json:"namespace"`
}

Metadata holds information like name, createdat, labels, and namespace

type Pod

type Pod struct {
	Metadata Metadata `json:"metadata"`
	Spec     Spec     `json:"spec"`
	Status   Status   `json:"status"`
}

Pod is used to parse data from kubectl get pods

func CreatePodFromFile

func CreatePodFromFile(filename, name, namespace string, sleep, duration time.Duration) (*Pod, error)

CreatePodFromFile will create a Pod from file with a name

func Get

func Get(podName, namespace string) (*Pod, error)

Get will return a pod with a given name and namespace

func GetAllByPrefix

func GetAllByPrefix(prefix, namespace string) ([]Pod, error)

GetAllByPrefix will return all pods in a given namespace that match a prefix

func GetTerminated

func GetTerminated(podName, namespace string) (*Pod, error)

GetTerminated will return a pod with a given name and namespace, including terminated pods

func GetWithRetry

func GetWithRetry(podPrefix, namespace string, sleep, duration time.Duration) (*Pod, error)

GetWithRetry gets a pod, allowing for retries

func RunLinuxPod

func RunLinuxPod(image, name, namespace, command string, printOutput bool, sleep, duration, timeout time.Duration) (*Pod, error)

RunLinuxPod will create a pod that runs a bash command --overrides := `"spec": {"nodeSelector":{"beta.kubernetes.io/os":"windows"}}}`

func RunWindowsPod

func RunWindowsPod(image, name, namespace, command string, printOutput bool, sleep, duration time.Duration, timeout time.Duration) (*Pod, error)

RunWindowsPod will create a pod that runs a powershell command --overrides := `"spec": {"nodeSelector":{"beta.kubernetes.io/os":"windows"}}}`

func (*Pod) CheckLinuxOutboundConnection

func (p *Pod) CheckLinuxOutboundConnection(sleep, duration time.Duration) (bool, error)

CheckLinuxOutboundConnection will keep retrying the check if an error is received until the timeout occurs or it passes. This helps us when DNS may not be available for some time after a pod starts.

func (*Pod) CheckWindowsOutboundConnection

func (p *Pod) CheckWindowsOutboundConnection(url string, sleep, duration time.Duration) (bool, error)

CheckWindowsOutboundConnection will keep retrying the check if an error is received until the timeout occurs or it passes. This helps us when DNS may not be available for some time after a pod starts.

func (*Pod) Delete

func (p *Pod) Delete(retries int) error

Delete will delete a Pod in a given namespace

func (*Pod) Exec

func (p *Pod) Exec(c ...string) ([]byte, error)

Exec will execute the given command in the pod

func (*Pod) Logs added in v0.30.0

func (p *Pod) Logs() error

Logs will get logs from all containers in a pod

func (*Pod) ValidateAzureFile

func (p *Pod) ValidateAzureFile(mountPath string, sleep, duration time.Duration) (bool, error)

ValidateAzureFile will keep retrying the check if azure file is mounted in Pod

func (*Pod) ValidateCurlConnection

func (p *Pod) ValidateCurlConnection(uri string, sleep, duration time.Duration) (bool, error)

ValidateCurlConnection connects to a URI on TCP 80

func (*Pod) ValidateHostPort

func (p *Pod) ValidateHostPort(check string, attempts int, sleep time.Duration, master, sshKeyPath string) bool

ValidateHostPort will attempt to run curl against the POD's hostIP and hostPort

func (*Pod) ValidateOmsAgentLogs

func (p *Pod) ValidateOmsAgentLogs(execCmdString string, sleep, duration time.Duration) (bool, error)

ValidateOmsAgentLogs validates omsagent logs

func (*Pod) ValidatePVC

func (p *Pod) ValidatePVC(mountPath string, sleep, duration time.Duration) (bool, error)

ValidatePVC will keep retrying the check if azure disk is mounted in Pod

func (*Pod) WaitOnReady

func (p *Pod) WaitOnReady(sleep, duration time.Duration) (bool, error)

WaitOnReady will call the static method WaitOnReady passing in p.Metadata.Name and p.Metadata.Namespace

func (*Pod) WaitOnSucceeded

func (p *Pod) WaitOnSucceeded(sleep, duration time.Duration) (bool, error)

WaitOnSucceeded will call the static method WaitOnSucceeded passing in p.Metadata.Name and p.Metadata.Namespace

type Port

type Port struct {
	ContainerPort int `json:"containerPort"`
	HostPort      int `json:"hostPort"`
}

Port represents a container port definition

type Requests

type Requests struct {
	CPU    string `json:"cpu"`
	Memory string `json:"memory"`
}

Requests represents container resource requests

type Resources

type Resources struct {
	Requests Requests `json:"requests"`
	Limits   Limits   `json:"limits"`
}

Resources represents a container resources definition

type Spec

type Spec struct {
	Containers []Container `json:"containers"`
	NodeName   string      `json:"nodeName"`
}

Spec holds information like containers

type Status

type Status struct {
	HostIP            string            `json:"hostIP"`
	Phase             string            `json:"phase"`
	PodIP             string            `json:"podIP"`
	StartTime         time.Time         `json:"startTime"`
	ContainerStatuses []ContainerStatus `json:"containerStatuses"`
}

Status holds information like hostIP and phase

type TerminatedContainerState

type TerminatedContainerState struct {
	ContainerID string `json:"containerID"`
	ExitCode    int    `json:"exitCode"`
	FinishedAt  string `json:"finishedAt"`
	Reason      string `json:"reason"`
	StartedAt   string `json:"startedAt"`
}

TerminatedContainerState shows terminated state of a container

Jump to

Keyboard shortcuts

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