diff --git a/pkg/kube/client.go b/pkg/kube/client.go index b607ea3ef..e3fdb8b3b 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -107,43 +107,35 @@ func init() { } } -func getStatusWatcher(factory Factory) (watcher.StatusWatcher, error) { - cfg, err := factory.ToRESTConfig() - if err != nil { - return nil, err - } - dynamicClient, err := factory.DynamicClient() - if err != nil { - return nil, err - } - httpClient, err := rest.HTTPClientFor(cfg) - if err != nil { - return nil, err - } - restMapper, err := apiutil.NewDynamicRESTMapper(cfg, httpClient) - if err != nil { - return nil, err - } - sw := watcher.NewDefaultStatusWatcher(dynamicClient, restMapper) - return sw, nil -} - -func NewWaiter(strategy WaitStrategy, factory Factory, log func(string, ...interface{})) (Waiter, error) { +func (c *Client) newWaiter(strategy WaitStrategy) (Waiter, error) { switch strategy { case LegacyWaiterStrategy: - kc, err := factory.KubernetesClientSet() + kc, err := c.Factory.KubernetesClientSet() if err != nil { return nil, err } - return &HelmWaiter{kubeClient: kc, log: log}, nil + return &HelmWaiter{kubeClient: kc, log: c.Log}, nil case StatusWaiterStrategy: - sw, err := getStatusWatcher(factory) + cfg, err := c.Factory.ToRESTConfig() if err != nil { return nil, err } + dynamicClient, err := c.Factory.DynamicClient() + if err != nil { + return nil, err + } + httpClient, err := rest.HTTPClientFor(cfg) + if err != nil { + return nil, err + } + restMapper, err := apiutil.NewDynamicRESTMapper(cfg, httpClient) + if err != nil { + return nil, err + } + sw := watcher.NewDefaultStatusWatcher(dynamicClient, restMapper) return &statusWaiter{ sw: sw, - log: log, + log: c.Log, }, nil default: return nil, errors.New("unknown wait strategy") @@ -156,15 +148,16 @@ func New(getter genericclioptions.RESTClientGetter, ws WaitStrategy) (*Client, e getter = genericclioptions.NewConfigFlags(true) } factory := cmdutil.NewFactory(getter) - waiter, err := NewWaiter(ws, factory, nopLogger) + c := &Client{ + Factory: factory, + Log: nopLogger, + } + var err error + c.Waiter, err = c.newWaiter(ws) if err != nil { return nil, err } - return &Client{ - Factory: factory, - Log: nopLogger, - Waiter: waiter, - }, nil + return c, nil } var nopLogger = func(_ string, _ ...interface{}) {} diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index f63070fe1..cdf75938e 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -512,11 +512,11 @@ func TestWait(t *testing.T) { } }), } - waiter, err := NewWaiter(LegacyWaiterStrategy, c.Factory, c.Log) + var err error + c.Waiter, err = c.newWaiter(LegacyWaiterStrategy) if err != nil { t.Fatal(err) } - c.Waiter = waiter resources, err := c.Build(objBody(&podList), false) if err != nil { t.Fatal(err) @@ -569,11 +569,11 @@ func TestWaitJob(t *testing.T) { } }), } - waiter, err := NewWaiter(LegacyWaiterStrategy, c.Factory, c.Log) + var err error + c.Waiter, err = c.newWaiter(LegacyWaiterStrategy) if err != nil { t.Fatal(err) } - c.Waiter = waiter resources, err := c.Build(objBody(job), false) if err != nil { t.Fatal(err) @@ -628,11 +628,11 @@ func TestWaitDelete(t *testing.T) { } }), } - waiter, err := NewWaiter(LegacyWaiterStrategy, c.Factory, c.Log) + var err error + c.Waiter, err = c.newWaiter(LegacyWaiterStrategy) if err != nil { t.Fatal(err) } - c.Waiter = waiter resources, err := c.Build(objBody(&pod), false) if err != nil { t.Fatal(err)