|
|
@ -363,8 +363,6 @@ func (u *Upgrade) performUpgrade(ctx context.Context, originalRelease, upgradedR
|
|
|
|
return upgradedRelease, nil
|
|
|
|
return upgradedRelease, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TODOS here
|
|
|
|
|
|
|
|
// ensure that when we do a RunWithContext and the context is cancelled, we should remove all the existing go routines
|
|
|
|
|
|
|
|
u.cfg.Log("creating upgraded release for %s", upgradedRelease.Name)
|
|
|
|
u.cfg.Log("creating upgraded release for %s", upgradedRelease.Name)
|
|
|
|
if err := u.cfg.Releases.Create(upgradedRelease); err != nil {
|
|
|
|
if err := u.cfg.Releases.Create(upgradedRelease); err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
@ -375,7 +373,7 @@ func (u *Upgrade) performUpgrade(ctx context.Context, originalRelease, upgradedR
|
|
|
|
doneChan := make(chan interface{})
|
|
|
|
doneChan := make(chan interface{})
|
|
|
|
defer close(doneChan)
|
|
|
|
defer close(doneChan)
|
|
|
|
|
|
|
|
|
|
|
|
go u.releasingUpgrade(rChan, upgradedRelease, current, target, originalRelease)
|
|
|
|
go u.releasingUpgrade(ctx, rChan, upgradedRelease, current, target, originalRelease)
|
|
|
|
go u.handleContext(ctx, doneChan, ctxChan, upgradedRelease)
|
|
|
|
go u.handleContext(ctx, doneChan, ctxChan, upgradedRelease)
|
|
|
|
select {
|
|
|
|
select {
|
|
|
|
case result := <-rChan:
|
|
|
|
case result := <-rChan:
|
|
|
@ -409,7 +407,7 @@ func (u *Upgrade) handleContext(ctx context.Context, done chan interface{}, c ch
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func (u *Upgrade) releasingUpgrade(c chan<- resultMessage, upgradedRelease *release.Release, current kube.ResourceList, target kube.ResourceList, originalRelease *release.Release) {
|
|
|
|
func (u *Upgrade) releasingUpgrade(ctx context.Context, c chan<- resultMessage, upgradedRelease *release.Release, current kube.ResourceList, target kube.ResourceList, originalRelease *release.Release) {
|
|
|
|
// pre-upgrade hooks
|
|
|
|
// pre-upgrade hooks
|
|
|
|
|
|
|
|
|
|
|
|
if !u.DisableHooks {
|
|
|
|
if !u.DisableHooks {
|
|
|
@ -443,13 +441,13 @@ func (u *Upgrade) releasingUpgrade(c chan<- resultMessage, upgradedRelease *rele
|
|
|
|
"waiting for release %s resources (created: %d updated: %d deleted: %d)",
|
|
|
|
"waiting for release %s resources (created: %d updated: %d deleted: %d)",
|
|
|
|
upgradedRelease.Name, len(results.Created), len(results.Updated), len(results.Deleted))
|
|
|
|
upgradedRelease.Name, len(results.Created), len(results.Updated), len(results.Deleted))
|
|
|
|
if u.WaitForJobs {
|
|
|
|
if u.WaitForJobs {
|
|
|
|
if err := u.cfg.KubeClient.WaitWithJobs(target, u.Timeout); err != nil {
|
|
|
|
if err := u.cfg.KubeClient.WaitWithJobsWithContext(ctx, target, u.Timeout); err != nil {
|
|
|
|
u.cfg.recordRelease(originalRelease)
|
|
|
|
u.cfg.recordRelease(originalRelease)
|
|
|
|
u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err)
|
|
|
|
u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err)
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
if err := u.cfg.KubeClient.Wait(target, u.Timeout); err != nil {
|
|
|
|
if err := u.cfg.KubeClient.WaitWithContext(ctx, target, u.Timeout); err != nil {
|
|
|
|
u.cfg.recordRelease(originalRelease)
|
|
|
|
u.cfg.recordRelease(originalRelease)
|
|
|
|
u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err)
|
|
|
|
u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err)
|
|
|
|
return
|
|
|
|
return
|
|
|
|