// FindPort locates the container port for the given pod and portName. If the // targetPort is a number, use that. If the targetPort is a string, look that // string up in all named ports in all containers in the target pod. If no // match is found, fail. func FindPort(pod *v1.Pod, svcPort *v1.ServicePort) (int, error) { … } type ContainerType … const Containers … const InitContainers … const EphemeralContainers … const AllContainers … // AllFeatureEnabledContainers returns a ContainerType mask which includes all container // types except for the ones guarded by feature gate. func AllFeatureEnabledContainers() ContainerType { … } type ContainerVisitor … type Visitor … func skipEmptyNames(visitor Visitor) Visitor { … } // VisitContainers invokes the visitor function with a pointer to every container // spec in the given pod spec with type set in mask. If visitor returns false, // visiting is short-circuited. VisitContainers returns true if visiting completes, // false if visiting was short-circuited. func VisitContainers(podSpec *v1.PodSpec, mask ContainerType, visitor ContainerVisitor) bool { … } // VisitPodSecretNames invokes the visitor function with the name of every secret // referenced by the pod spec. If visitor returns false, visiting is short-circuited. // Transitive references (e.g. pod -> pvc -> pv -> secret) are not visited. // Returns true if visiting completed, false if visiting was short-circuited. func VisitPodSecretNames(pod *v1.Pod, visitor Visitor) bool { … } // visitContainerSecretNames returns true unless the visitor returned false when invoked with a secret reference func visitContainerSecretNames(container *v1.Container, visitor Visitor) bool { … } // VisitPodConfigmapNames invokes the visitor function with the name of every configmap // referenced by the pod spec. If visitor returns false, visiting is short-circuited. // Transitive references (e.g. pod -> pvc -> pv -> secret) are not visited. // Returns true if visiting completed, false if visiting was short-circuited. func VisitPodConfigmapNames(pod *v1.Pod, visitor Visitor) bool { … } // visitContainerConfigmapNames returns true unless the visitor returned false when invoked with a configmap reference func visitContainerConfigmapNames(container *v1.Container, visitor Visitor) bool { … } // GetContainerStatus extracts the status of container "name" from "statuses". // It returns true if "name" exists, else returns false. func GetContainerStatus(statuses []v1.ContainerStatus, name string) (v1.ContainerStatus, bool) { … } // GetExistingContainerStatus extracts the status of container "name" from "statuses", // It also returns if "name" exists. func GetExistingContainerStatus(statuses []v1.ContainerStatus, name string) v1.ContainerStatus { … } // GetIndexOfContainerStatus gets the index of status of container "name" from "statuses", // It returns (index, true) if "name" exists, else returns (0, false). func GetIndexOfContainerStatus(statuses []v1.ContainerStatus, name string) (int, bool) { … } // IsPodAvailable returns true if a pod is available; false otherwise. // Precondition for an available pod is that it must be ready. On top // of that, there are two cases when a pod can be considered available: // 1. minReadySeconds == 0, or // 2. LastTransitionTime (is set) + minReadySeconds < current time func IsPodAvailable(pod *v1.Pod, minReadySeconds int32, now metav1.Time) bool { … } // IsPodReady returns true if a pod is ready; false otherwise. func IsPodReady(pod *v1.Pod) bool { … } // IsPodTerminal returns true if a pod is terminal, all containers are stopped and cannot ever regress. func IsPodTerminal(pod *v1.Pod) bool { … } // IsPodPhaseTerminal returns true if the pod's phase is terminal. func IsPodPhaseTerminal(phase v1.PodPhase) bool { … } // IsPodReadyConditionTrue returns true if a pod is ready; false otherwise. func IsPodReadyConditionTrue(status v1.PodStatus) bool { … } // IsContainersReadyConditionTrue returns true if a pod is ready; false otherwise. func IsContainersReadyConditionTrue(status v1.PodStatus) bool { … } // GetPodReadyCondition extracts the pod ready condition from the given status and returns that. // Returns nil if the condition is not present. func GetPodReadyCondition(status v1.PodStatus) *v1.PodCondition { … } // GetContainersReadyCondition extracts the containers ready condition from the given status and returns that. // Returns nil if the condition is not present. func GetContainersReadyCondition(status v1.PodStatus) *v1.PodCondition { … } // GetPodCondition extracts the provided condition from the given status and returns that. // Returns nil and -1 if the condition is not present, and the index of the located condition. func GetPodCondition(status *v1.PodStatus, conditionType v1.PodConditionType) (int, *v1.PodCondition) { … } // GetPodConditionFromList extracts the provided condition from the given list of condition and // returns the index of the condition and the condition. Returns -1 and nil if the condition is not present. func GetPodConditionFromList(conditions []v1.PodCondition, conditionType v1.PodConditionType) (int, *v1.PodCondition) { … } // UpdatePodCondition updates existing pod condition or creates a new one. Sets LastTransitionTime to now if the // status has changed. // Returns true if pod condition has changed or has been added. func UpdatePodCondition(status *v1.PodStatus, condition *v1.PodCondition) bool { … }