feat(cmd): show progress before waiting for resources

Signed-off-by: Karthik Chowdary <21139050+Karthik-Chowdary@users.noreply.github.com>
pull/32549/head
Karthik Chowdary 4 weeks ago
parent d62bee21c2
commit a2504521ab

@ -38,6 +38,7 @@ import (
"helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/cmd/require"
"helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/downloader"
"helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/getter"
"helm.sh/helm/v4/pkg/kube"
release "helm.sh/helm/v4/pkg/release/v1" release "helm.sh/helm/v4/pkg/release/v1"
) )
@ -157,6 +158,8 @@ func newInstallCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
} }
client.DryRunStrategy = dryRunStrategy client.DryRunStrategy = dryRunStrategy
printWaitMessage(out, outfmt, client.WaitStrategy, client.Timeout)
rel, err := runInstall(args, client, valueOpts, out) rel, err := runInstall(args, client, valueOpts, out)
if err != nil { if err != nil {
return fmt.Errorf("INSTALLATION FAILED: %w", err) return fmt.Errorf("INSTALLATION FAILED: %w", err)
@ -370,6 +373,13 @@ func checkIfInstallable(ch chart.Accessor) error {
return fmt.Errorf("%s charts are not installable", meta["Type"]) return fmt.Errorf("%s charts are not installable", meta["Type"])
} }
func printWaitMessage(out io.Writer, outfmt output.Format, strategy kube.WaitStrategy, timeout time.Duration) {
if outfmt != output.Table || 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 // Provide dynamic auto-completion for the install and template commands
func compInstall(args []string, toComplete string, client *action.Install) ([]string, cobra.ShellCompDirective) { func compInstall(args []string, toComplete string, client *action.Install) ([]string, cobra.ShellCompDirective) {
requiredArgs := 1 requiredArgs := 1

@ -1,3 +1,4 @@
Waiting for resources to become ready (timeout: 5m0s)
NAME: apollo NAME: apollo
LAST DEPLOYED: Fri Sep 2 22:04:05 1977 LAST DEPLOYED: Fri Sep 2 22:04:05 1977
NAMESPACE: default NAMESPACE: default

@ -1,3 +1,4 @@
Waiting for resources to become ready (timeout: 5m0s)
NAME: apollo NAME: apollo
LAST DEPLOYED: Fri Sep 2 22:04:05 1977 LAST DEPLOYED: Fri Sep 2 22:04:05 1977
NAMESPACE: default NAMESPACE: default

@ -1,3 +1,4 @@
Waiting for resources to become ready (timeout: 5m0s)
Release "crazy-bunny" has been upgraded. Happy Helming! Release "crazy-bunny" has been upgraded. Happy Helming!
NAME: crazy-bunny NAME: crazy-bunny
LAST DEPLOYED: Fri Sep 2 22:04:05 1977 LAST DEPLOYED: Fri Sep 2 22:04:05 1977

@ -1,3 +1,4 @@
Waiting for resources to become ready (timeout: 5m0s)
Release "crazy-bunny" has been upgraded. Happy Helming! Release "crazy-bunny" has been upgraded. Happy Helming!
NAME: crazy-bunny NAME: crazy-bunny
LAST DEPLOYED: Fri Sep 2 22:04:05 1977 LAST DEPLOYED: Fri Sep 2 22:04:05 1977

@ -163,6 +163,8 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
instClient.Replace = true instClient.Replace = true
} }
printWaitMessage(out, outfmt, instClient.WaitStrategy, instClient.Timeout)
rel, err := runInstall(args, instClient, valueOpts, out) rel, err := runInstall(args, instClient, valueOpts, out)
if err != nil { if err != nil {
return err return err
@ -257,6 +259,8 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command {
cancel() cancel()
}() }()
printWaitMessage(out, outfmt, client.WaitStrategy, client.Timeout)
rel, err := client.RunWithContext(ctx, args[0], ch, vals) rel, err := client.RunWithContext(ctx, args[0], ch, vals)
if err != nil { if err != nil {
return fmt.Errorf("UPGRADE FAILED: %w", err) return fmt.Errorf("UPGRADE FAILED: %w", err)

Loading…
Cancel
Save