From c7b891999b700652f7c7efa8dfcadbdad1bce9f1 Mon Sep 17 00:00:00 2001 From: Marco Vito Moscaritolo Date: Wed, 15 Aug 2018 21:59:03 +0200 Subject: [PATCH] remove code duplicated from hetzner-go package and various clanup --- cmd/config.go | 31 ------------------- pkg/hetzner/hetzner_provider.go | 2 +- pkg/hetzner/util.go | 53 --------------------------------- 3 files changed, 1 insertion(+), 85 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index c0e5c76c..4fc99ab2 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -11,11 +11,8 @@ import ( "os/user" "path/filepath" - "github.com/go-kit/kit/log/term" "github.com/hetznercloud/hcloud-go/hcloud" - "github.com/thcyron/uiprogress" "github.com/xetys/hetzner-kube/pkg/clustermanager" - "github.com/xetys/hetzner-kube/pkg/hetzner" ) // DefaultConfigPath is the path where the default config is located @@ -181,34 +178,6 @@ func (app *AppConfig) DeleteContextByName(name string) error { return fmt.Errorf("context '%s' not found", name) } -// ActionProgress (deprecated) -func (app *AppConfig) ActionProgress(ctx context.Context, action *hcloud.Action) error { - errCh, progressCh := hetzner.WaitAction(ctx, app.Client, action) - - if term.IsTerminal(os.Stdout) { - progress := uiprogress.New() - - progress.Start() - bar := progress.AddBar(100).AppendCompleted().PrependElapsed() - bar.Empty = ' ' - - for { - select { - case err := <-errCh: - if err == nil { - bar.Set(100) - } - progress.Stop() - return err - case p := <-progressCh: - bar.Set(p) - } - } - } else { - return <-errCh - } -} - func (app *AppConfig) assertActiveContext() error { if app.CurrentContext == nil { return errors.New("no context selected") diff --git a/pkg/hetzner/hetzner_provider.go b/pkg/hetzner/hetzner_provider.go index 649b320b..b2dffbfb 100644 --- a/pkg/hetzner/hetzner_provider.go +++ b/pkg/hetzner/hetzner_provider.go @@ -263,7 +263,7 @@ func (provider *Provider) runCreateServer(opts *hcloud.ServerCreateOpts) (*hclou } func (provider *Provider) actionProgress(action *hcloud.Action) error { - errCh, progressCh := WaitAction(provider.context, provider.client, action) + progressCh, errCh := provider.client.Action.WatchProgress(provider.context, action) if term.IsTerminal(os.Stdout) { progress := uiprogress.New() diff --git a/pkg/hetzner/util.go b/pkg/hetzner/util.go index cf6850ac..f7306369 100644 --- a/pkg/hetzner/util.go +++ b/pkg/hetzner/util.go @@ -2,7 +2,6 @@ package hetzner import ( "context" - "time" "github.com/hetznercloud/hcloud-go/hcloud" "github.com/xetys/hetzner-kube/pkg/clustermanager" @@ -17,55 +16,3 @@ func ProviderAndManager(context context.Context, cluster clustermanager.Cluster, return provider, manager } - -// WaitAction is an helper function used to wait for an action -func WaitAction(ctx context.Context, client *hcloud.Client, action *hcloud.Action) (<-chan error, <-chan int) { - errCh := make(chan error, 1) - progressCh := make(chan int) - - go func() { - defer close(errCh) - defer close(progressCh) - - ticker := time.NewTicker(100 * time.Millisecond) - - sendProgress := func(p int) { - select { - case progressCh <- p: - break - default: - break - } - } - - for { - select { - case <-ctx.Done(): - errCh <- ctx.Err() - return - case <-ticker.C: - } - - action, _, err := client.Action.GetByID(ctx, action.ID) - if err != nil { - errCh <- ctx.Err() - return - } - - switch action.Status { - case hcloud.ActionStatusRunning: - sendProgress(action.Progress) - - case hcloud.ActionStatusSuccess: - sendProgress(100) - errCh <- nil - return - case hcloud.ActionStatusError: - errCh <- action.Error() - return - } - } - }() - - return errCh, progressCh -}