set waiter in functions

Signed-off-by: Austin Abro <AustinAbro321@gmail.com>
pull/13604/head
Austin Abro 7 months ago
parent 978d5a3318
commit 7fde4962a8
No known key found for this signature in database
GPG Key ID: 92EB5159E403F9D6

@ -371,7 +371,7 @@ func (cfg *Configuration) recordRelease(r *release.Release) {
// Init initializes the action configuration
func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog) error {
kc, err := kube.New(getter, kube.StatusWatcherStrategy)
kc, err := kube.New(getter)
if err != nil {
return err
}

@ -157,10 +157,6 @@ func (i *Install) GetRegistryClient() *registry.Client {
return i.ChartPathOptions.registryClient
}
func (i *Install) shouldWait() bool {
return i.Wait != ""
}
func (i *Install) installCRDs(crds []chart.CRD) error {
// We do these one file at a time in the order they were read.
totalItems := []*resource.Info{}
@ -298,6 +294,9 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma
i.Wait = kube.StatusWatcherStrategy
}
}
if err := i.cfg.KubeClient.SetWaiter(i.Wait); err != nil {
return nil, fmt.Errorf("failed to set kube client waiter: %w", err)
}
caps, err := i.cfg.getCapabilities()
if err != nil {

@ -61,6 +61,10 @@ func (r *Rollback) Run(name string) error {
return err
}
if err := r.cfg.KubeClient.SetWaiter(r.Wait); err != nil {
return fmt.Errorf("failed to set kube client waiter: %w", err)
}
r.cfg.Releases.MaxHistory = r.MaxHistory
r.cfg.Log("preparing rollback of %s", name)
@ -90,10 +94,6 @@ func (r *Rollback) Run(name string) error {
return nil
}
func (r *Rollback) shouldWait() bool {
return !(r.Wait == "")
}
// prepareRollback finds the previous release and prepares a new release object with
// the previous release's configuration
func (r *Rollback) prepareRollback(name string) (*release.Release, *release.Release, error) {

@ -17,6 +17,7 @@ limitations under the License.
package action
import (
"fmt"
"strings"
"time"
@ -60,6 +61,10 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error)
return nil, err
}
if err := u.cfg.KubeClient.SetWaiter(u.Wait); err != nil {
return nil, fmt.Errorf("failed to set kube client waiter: %w", err)
}
if u.DryRun {
// In the dry run case, just see if the release exists
r, err := u.cfg.releaseContent(name, 0)

@ -160,6 +160,9 @@ func (u *Upgrade) RunWithContext(ctx context.Context, name string, chart *chart.
u.Wait = kube.StatusWatcherStrategy
}
}
if err := u.cfg.KubeClient.SetWaiter(u.Wait); err != nil {
return nil, fmt.Errorf("failed to set kube client waiter: %w", err)
}
if err := chartutil.ValidateReleaseName(name); err != nil {
return nil, errors.Errorf("release name is invalid: %s", name)
@ -528,6 +531,11 @@ func (u *Upgrade) failRelease(rel *release.Release, created kube.ResourceList, e
if u.Wait == kube.HookOnlyStrategy {
rollin.Wait = kube.StatusWatcherStrategy
}
// TODO pretty sure this is unnecessary as the waiter is already set if atomic at the start of upgrade
werr := u.cfg.KubeClient.SetWaiter(u.Wait)
if werr != nil {
return rel, errors.Wrapf(herr, "an error occurred while creating the waiter. original upgrade error: %s", err)
}
rollin.WaitForJobs = u.WaitForJobs
rollin.DisableHooks = u.DisableHooks
rollin.Recreate = u.Recreate

@ -144,8 +144,17 @@ func (c *Client) newWaiter(strategy WaitStrategy) (Waiter, error) {
}
}
func (c *Client) SetWaiter(ws WaitStrategy) error {
var err error
c.Waiter, err = c.newWaiter(ws)
if err != nil {
return err
}
return nil
}
// New creates a new Client.
func New(getter genericclioptions.RESTClientGetter, ws WaitStrategy) (*Client, error) {
func New(getter genericclioptions.RESTClientGetter) (*Client, error) {
if getter == nil {
getter = genericclioptions.NewConfigFlags(true)
}
@ -155,7 +164,7 @@ func New(getter genericclioptions.RESTClientGetter, ws WaitStrategy) (*Client, e
Log: nopLogger,
}
var err error
c.Waiter, err = c.newWaiter(ws)
c.Waiter, err = c.newWaiter(HookOnlyStrategy)
if err != nil {
return nil, err
}

@ -659,7 +659,7 @@ func TestWaitDelete(t *testing.T) {
func TestReal(t *testing.T) {
t.Skip("This is a live test, comment this line to run")
c, err := New(nil, StatusWatcherStrategy)
c, err := New(nil)
if err != nil {
t.Fatal(err)
}
@ -672,7 +672,7 @@ func TestReal(t *testing.T) {
}
testSvcEndpointManifest := testServiceManifest + "\n---\n" + testEndpointManifest
c, err = New(nil, StatusWatcherStrategy)
c, err = New(nil)
if err != nil {
t.Fatal(err)
}

@ -139,6 +139,10 @@ func (f *FailingKubeClient) DeleteWithPropagationPolicy(resources kube.ResourceL
return f.PrintingKubeClient.DeleteWithPropagationPolicy(resources, policy)
}
func (f *FailingKubeClient) SetWaiter(ws kube.WaitStrategy) error {
return nil
}
func createDummyResourceList() kube.ResourceList {
var resInfo resource.Info
resInfo.Name = "dummyName"

@ -121,6 +121,10 @@ func (p *PrintingKubeClient) DeleteWithPropagationPolicy(resources kube.Resource
return &kube.Result{Deleted: resources}, nil
}
func (f *PrintingKubeClient) SetWaiter(ws kube.WaitStrategy) error {
return nil
}
func bufferize(resources kube.ResourceList) io.Reader {
var builder strings.Builder
for _, info := range resources {

@ -47,6 +47,8 @@ type Interface interface {
Build(reader io.Reader, validate bool) (ResourceList, error)
// IsReachable checks whether the client is able to connect to the cluster.
IsReachable() error
// Set Waiter sets the Kube.Waiter
SetWaiter(ws WaitStrategy) error
Waiter
}

Loading…
Cancel
Save