From 0610afa19bd652508d80014db29d8089d9c83d9b Mon Sep 17 00:00:00 2001 From: Kjeld Schouten Date: Tue, 12 Nov 2024 14:54:57 +0100 Subject: [PATCH] feat(clustertool): retry helm-install after etcs timeout --- clustertool/pkg/fluxhandler/helm.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/clustertool/pkg/fluxhandler/helm.go b/clustertool/pkg/fluxhandler/helm.go index 3196ed4ca534b..f54cb41dc1e71 100644 --- a/clustertool/pkg/fluxhandler/helm.go +++ b/clustertool/pkg/fluxhandler/helm.go @@ -239,9 +239,23 @@ func HelmInstall(repoURL string, chartName string, releaseName string, namespace } // Install the chart with merged values + log.Debug().Msg("Installing chart...") release, err := client.Run(chart, vals) if err != nil { - return fmt.Errorf("failed to install chart: %w", err) + log.Debug().Msg("Chart install returned an error") + if strings.Contains(err.Error(), "timed out") { + // Wait for 15 seconds and try again + log.Warn().Msg("Chart install recieved a timeout, retrying in 15 seconds...") + time.Sleep(15 * time.Second) + release, err = client.Run(chart, vals) + if err != nil && strings.Contains(err.Error(), "timed out") { + return fmt.Errorf("failed to install chart after retry, with another timeout: %w", err) + } else if err != nil { + return fmt.Errorf("failed to install chart after retry: %w", err) + } + } else { + return fmt.Errorf("failed to install chart: %w", err) + } } if wait {