From 1bbfadd74a0ebca34615958fd79d6069e0730335 Mon Sep 17 00:00:00 2001 From: John Lin Date: Wed, 8 Apr 2026 09:42:07 -0700 Subject: [PATCH] Print waiting message when --wait is used for install/upgrade Closes #12710 Signed-off-by: John Lin --- pkg/cmd/install.go | 10 ++++++++++ pkg/cmd/testdata/output/install-with-wait-for-jobs.txt | 1 + pkg/cmd/testdata/output/install-with-wait.txt | 1 + pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt | 1 + pkg/cmd/testdata/output/upgrade-with-wait.txt | 1 + pkg/cmd/upgrade.go | 4 ++++ 6 files changed, 18 insertions(+) diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go index ed10513c9..bcb7ee9e6 100644 --- a/pkg/cmd/install.go +++ b/pkg/cmd/install.go @@ -38,6 +38,7 @@ import ( "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/kube" release "helm.sh/helm/v4/pkg/release/v1" ) @@ -324,6 +325,8 @@ func runInstall(args []string, client *action.Install, valueOpts *values.Options cancel() }() + printWaitMessage(out, client.WaitStrategy, client.Timeout) + ri, err := client.RunWithContext(ctx, chartRequested, vals) rel, rerr := releaserToV1Release(ri) if rerr != nil { @@ -345,6 +348,13 @@ func checkIfInstallable(ch chart.Accessor) error { return fmt.Errorf("%s charts are not installable", meta["Type"]) } +func printWaitMessage(out io.Writer, strategy kube.WaitStrategy, timeout time.Duration) { + if strategy == kube.HookOnlyStrategy { + return + } + fmt.Fprintf(out, "Waiting for resources to become ready (timeout: %s)\n", timeout) +} + // Provide dynamic auto-completion for the install and template commands func compInstall(args []string, toComplete string, client *action.Install) ([]string, cobra.ShellCompDirective) { requiredArgs := 1 diff --git a/pkg/cmd/testdata/output/install-with-wait-for-jobs.txt b/pkg/cmd/testdata/output/install-with-wait-for-jobs.txt index c5676c610..67e223847 100644 --- a/pkg/cmd/testdata/output/install-with-wait-for-jobs.txt +++ b/pkg/cmd/testdata/output/install-with-wait-for-jobs.txt @@ -1,3 +1,4 @@ +Waiting for resources to become ready (timeout: 5m0s) NAME: apollo LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default diff --git a/pkg/cmd/testdata/output/install-with-wait.txt b/pkg/cmd/testdata/output/install-with-wait.txt index c5676c610..67e223847 100644 --- a/pkg/cmd/testdata/output/install-with-wait.txt +++ b/pkg/cmd/testdata/output/install-with-wait.txt @@ -1,3 +1,4 @@ +Waiting for resources to become ready (timeout: 5m0s) NAME: apollo LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default diff --git a/pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt b/pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt index 21784413c..44524d8df 100644 --- a/pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt +++ b/pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt @@ -1,3 +1,4 @@ +Waiting for resources to become ready (timeout: 5m0s) Release "crazy-bunny" has been upgraded. Happy Helming! NAME: crazy-bunny LAST DEPLOYED: Fri Sep 2 22:04:05 1977 diff --git a/pkg/cmd/testdata/output/upgrade-with-wait.txt b/pkg/cmd/testdata/output/upgrade-with-wait.txt index 21784413c..44524d8df 100644 --- a/pkg/cmd/testdata/output/upgrade-with-wait.txt +++ b/pkg/cmd/testdata/output/upgrade-with-wait.txt @@ -1,3 +1,4 @@ +Waiting for resources to become ready (timeout: 5m0s) Release "crazy-bunny" has been upgraded. Happy Helming! NAME: crazy-bunny LAST DEPLOYED: Fri Sep 2 22:04:05 1977 diff --git a/pkg/cmd/upgrade.go b/pkg/cmd/upgrade.go index b71c4ae2d..c3d833632 100644 --- a/pkg/cmd/upgrade.go +++ b/pkg/cmd/upgrade.go @@ -250,6 +250,10 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { cancel() }() + if outfmt == output.Table { + printWaitMessage(out, client.WaitStrategy, client.Timeout) + } + rel, err := client.RunWithContext(ctx, args[0], ch, vals) if err != nil { return fmt.Errorf("UPGRADE FAILED: %w", err)