From 1153f19351049aa12de35130417ee863e20e6fcc Mon Sep 17 00:00:00 2001 From: Varun Gupta Date: Mon, 3 Mar 2025 13:57:43 -0800 Subject: [PATCH] Add check for containers ready Signed-off-by: Varun Gupta --- pkg/utils/pod.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/utils/pod.go b/pkg/utils/pod.go index 94db8e7a..c412da31 100644 --- a/pkg/utils/pod.go +++ b/pkg/utils/pod.go @@ -39,7 +39,7 @@ func IsPodTerminating(pod *v1.Pod) bool { // IsPodReady returns true if a pod is ready; false otherwise. func IsPodReady(pod *v1.Pod) bool { - return IsPodReadyConditionTrue(pod.Status) + return IsPodReadyConditionTrue(pod.Status) && IsContainerReadyConditionTrue(pod.Status) } // IsPodReadyConditionTrue returns true if a pod is ready; false otherwise. @@ -48,6 +48,12 @@ func IsPodReadyConditionTrue(status v1.PodStatus) bool { return condition != nil && condition.Status == v1.ConditionTrue } +// IsContainerReadyConditionTrue returns true if a containers are ready; false otherwise. +func IsContainerReadyConditionTrue(status v1.PodStatus) bool { + condition := GetContainersReadyCondition(status) + return condition != nil && condition.Status == v1.ConditionTrue +} + // 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 { @@ -55,6 +61,13 @@ func GetPodReadyCondition(status v1.PodStatus) *v1.PodCondition { return condition } +// 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 { + _, condition := GetPodCondition(&status, v1.ContainersReady) + return condition +} + // 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) {