in pkg/cloudmap/instances_health_prober.go [195:226]
func (p *defaultInstancesHealthProber) updateInstanceProbeEntry(ctx context.Context, probeEntry *instanceProbeEntry, healthyStatus bool) (bool, error) {
if probeEntry.lastTransitionTime.IsZero() || probeEntry.lastHealthyStatus != healthyStatus {
probeEntry.lastTransitionTime = time.Now()
probeEntry.lastHealthyStatus = healthyStatus
}
if time.Since(probeEntry.lastTransitionTime) < p.transitionDuration {
return true, nil
}
podHealthyConditionStatus := corev1.ConditionFalse
if healthyStatus {
podHealthyConditionStatus = corev1.ConditionTrue
}
if err := retry.RetryOnConflict(retry.DefaultRetry, func() error {
pod := probeEntry.instanceInfo.pod.DeepCopy()
if err := p.k8sClient.Get(ctx, k8s.NamespacedName(pod), pod); err != nil {
return err
}
oldPod := pod.DeepCopy()
if updated := k8s.UpdatePodCondition(pod, k8s.ConditionAWSCloudMapHealthy, podHealthyConditionStatus, nil, nil); updated {
if err := p.k8sClient.Status().Patch(ctx, pod, client.MergeFrom(oldPod)); err != nil {
return err
}
}
probeEntry.instanceInfo.pod = pod
return nil
}); err != nil {
return false, err
}
return podHealthyConditionStatus != corev1.ConditionTrue, nil
}