(c chan<- resultMessage, upgradedRelease *release.Release, current kube.ResourceList, target kube.ResourceList, originalRelease *release.Release, serverSideApply bool)
| 456 | } |
| 457 | |
| 458 | func (u *Upgrade) releasingUpgrade(c chan<- resultMessage, upgradedRelease *release.Release, current kube.ResourceList, target kube.ResourceList, originalRelease *release.Release, serverSideApply bool) { |
| 459 | // pre-upgrade hooks |
| 460 | |
| 461 | if !u.DisableHooks { |
| 462 | if err := u.cfg.execHook(upgradedRelease, release.HookPreUpgrade, u.WaitStrategy, u.WaitOptions, u.Timeout, serverSideApply); err != nil { |
| 463 | u.reportToPerformUpgrade(c, upgradedRelease, kube.ResourceList{}, fmt.Errorf("pre-upgrade hooks failed: %w", err)) |
| 464 | return |
| 465 | } |
| 466 | } else { |
| 467 | u.cfg.Logger().Debug("upgrade hooks disabled", "name", upgradedRelease.Name) |
| 468 | } |
| 469 | |
| 470 | upgradeClientSideFieldManager := isReleaseApplyMethodClientSideApply(originalRelease.ApplyMethod) && serverSideApply // Update client-side field manager if transitioning from client-side to server-side apply |
| 471 | results, err := u.cfg.KubeClient.Update( |
| 472 | current, |
| 473 | target, |
| 474 | kube.ClientUpdateOptionForceReplace(u.ForceReplace), |
| 475 | kube.ClientUpdateOptionServerSideApply(serverSideApply, u.ForceConflicts), |
| 476 | kube.ClientUpdateOptionUpgradeClientSideFieldManager(upgradeClientSideFieldManager)) |
| 477 | if err != nil { |
| 478 | u.cfg.recordRelease(originalRelease) |
| 479 | u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err) |
| 480 | return |
| 481 | } |
| 482 | |
| 483 | var waiter kube.Waiter |
| 484 | if c, supportsOptions := u.cfg.KubeClient.(kube.InterfaceWaitOptions); supportsOptions { |
| 485 | waiter, err = c.GetWaiterWithOptions(u.WaitStrategy, u.WaitOptions...) |
| 486 | } else { |
| 487 | waiter, err = u.cfg.KubeClient.GetWaiter(u.WaitStrategy) |
| 488 | } |
| 489 | if err != nil { |
| 490 | u.cfg.recordRelease(originalRelease) |
| 491 | u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err) |
| 492 | return |
| 493 | } |
| 494 | if u.WaitForJobs { |
| 495 | if err := waiter.WaitWithJobs(target, u.Timeout); err != nil { |
| 496 | u.cfg.recordRelease(originalRelease) |
| 497 | u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err) |
| 498 | return |
| 499 | } |
| 500 | } else { |
| 501 | if err := waiter.Wait(target, u.Timeout); err != nil { |
| 502 | u.cfg.recordRelease(originalRelease) |
| 503 | u.reportToPerformUpgrade(c, upgradedRelease, results.Created, err) |
| 504 | return |
| 505 | } |
| 506 | } |
| 507 | |
| 508 | // post-upgrade hooks |
| 509 | if !u.DisableHooks { |
| 510 | if err := u.cfg.execHook(upgradedRelease, release.HookPostUpgrade, u.WaitStrategy, u.WaitOptions, u.Timeout, serverSideApply); err != nil { |
| 511 | u.reportToPerformUpgrade(c, upgradedRelease, results.Created, fmt.Errorf("post-upgrade hooks failed: %w", err)) |
| 512 | return |
| 513 | } |
| 514 | } |
| 515 |
no test coverage detected