From ada504ad8a41aa97d92d71eacbb3560ad8761223 Mon Sep 17 00:00:00 2001 From: Surax98 Date: Tue, 21 May 2024 12:40:08 +0200 Subject: [PATCH] now properly waits for cfgmaps/secrets Signed-off-by: Surax98 --- pkg/virtualkubelet/execute.go | 54 ++++++++++++++-------------- pkg/virtualkubelet/virtualkubelet.go | 4 ++- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/pkg/virtualkubelet/execute.go b/pkg/virtualkubelet/execute.go index 0a12a739..37e220bb 100644 --- a/pkg/virtualkubelet/execute.go +++ b/pkg/virtualkubelet/execute.go @@ -269,20 +269,18 @@ func RemoteExecution(ctx context.Context, config VirtualKubeletConfig, p *Virtua req.Pod = *pod startTime := time.Now() - for { - timeNow := time.Now() - if timeNow.Sub(startTime).Seconds() < time.Hour.Minutes()*5 { - - _, err := p.clientSet.CoreV1().Pods(pod.Namespace).Get(ctx, pod.Name, metav1.GetOptions{}) - if err != nil { - log.G(ctx).Warning("Deleted Pod before actual creation") - return nil - } - - var failed bool + timeNow := time.Now() + _, err := p.clientSet.CoreV1().Pods(pod.Namespace).Get(ctx, pod.Name, metav1.GetOptions{}) + if err != nil { + log.G(ctx).Warning("Deleted Pod before actual creation") + return nil + } - for _, volume := range pod.Spec.Volumes { + var failed bool + for _, volume := range pod.Spec.Volumes { + for { + if timeNow.Sub(startTime).Seconds() < time.Hour.Minutes()*5 { if volume.ConfigMap != nil { cfgmap, err := p.clientSet.CoreV1().ConfigMaps(pod.Namespace).Get(ctx, volume.ConfigMap.Name, metav1.GetOptions{}) if err != nil { @@ -292,8 +290,8 @@ func RemoteExecution(ctx context.Context, config VirtualKubeletConfig, p *Virtua pod.Status.Phase = "Initializing" p.UpdatePod(ctx, pod) } - break } else { + failed = false req.ConfigMaps = append(req.ConfigMaps, *cfgmap) } } else if volume.Secret != nil { @@ -305,29 +303,29 @@ func RemoteExecution(ctx context.Context, config VirtualKubeletConfig, p *Virtua pod.Status.Phase = "Initializing" p.UpdatePod(ctx, pod) } - break } else { + failed = false req.Secrets = append(req.Secrets, *scrt) } } - } - if failed { - time.Sleep(time.Second) - continue + if failed { + time.Sleep(time.Second) + continue + } else { + pod.Status.Phase = v1.PodPending + p.UpdatePod(ctx, pod) + break + } } else { - pod.Status.Phase = v1.PodPending + pod.Status.Phase = v1.PodFailed + pod.Status.Reason = "CFGMaps/Secrets not found" + for i, _ := range pod.Status.ContainerStatuses { + pod.Status.ContainerStatuses[i].Ready = false + } p.UpdatePod(ctx, pod) - break - } - } else { - pod.Status.Phase = v1.PodFailed - pod.Status.Reason = "CFGMaps/Secrets not found" - for i, _ := range pod.Status.ContainerStatuses { - pod.Status.ContainerStatuses[i].Ready = false + return errors.New("unable to retrieve ConfigMaps or Secrets. Check logs") } - p.UpdatePod(ctx, pod) - return errors.New("unable to retrieve ConfigMaps or Secrets. Check logs") } } diff --git a/pkg/virtualkubelet/virtualkubelet.go b/pkg/virtualkubelet/virtualkubelet.go index 625eadc7..efbdf333 100644 --- a/pkg/virtualkubelet/virtualkubelet.go +++ b/pkg/virtualkubelet/virtualkubelet.go @@ -565,7 +565,9 @@ func (p *VirtualKubeletProvider) statusLoop(ctx context.Context) { var podsList []*v1.Pod for _, pod := range p.pods { - podsList = append(podsList, pod) + if pod.Status.Phase != "Initializing" { + podsList = append(podsList, pod) + } } if podsList != nil {