Make --dry-run=server validation to not differ from what a real install/upgrade would send to the API server

Signed-off-by: MrJack <36191829+biagiopietro@users.noreply.github.com>
pull/31616/head
MrJack 5 months ago
parent 9b8ff6d99d
commit 4d464889ff

@ -431,11 +431,15 @@ func (i *Install) RunWithContext(ctx context.Context, ch ci.Charter, vals map[st
kube.ClientCreateOptionDryRun(true),
)
} else if len(resources) > 0 {
updateThreeWayMergeForUnstructured := i.TakeOwnership && !i.ServerSideApply
_, err = i.cfg.KubeClient.Update(
toBeAdopted,
resources,
kube.ClientUpdateOptionForceReplace(i.ForceReplace),
kube.ClientUpdateOptionServerSideApply(i.ServerSideApply, i.ForceConflicts),
kube.ClientUpdateOptionDryRun(true),
kube.ClientUpdateOptionThreeWayMergeForUnstructured(updateThreeWayMergeForUnstructured),
kube.ClientUpdateOptionUpgradeClientSideFieldManager(true),
)
}
if err != nil {

@ -400,12 +400,14 @@ func (u *Upgrade) performUpgrade(ctx context.Context, originalRelease, upgradedR
u.cfg.Logger().Debug("dry run for release", "name", upgradedRelease.Name)
// For server-side dry-run, validate resources against the API server
if u.DryRunStrategy == DryRunServer {
upgradeClientSideFieldManager := isReleaseApplyMethodClientSideApply(originalRelease.ApplyMethod) && serverSideApply
_, err := u.cfg.KubeClient.Update(
current,
target,
kube.ClientUpdateOptionForceReplace(u.ForceReplace),
kube.ClientUpdateOptionServerSideApply(serverSideApply, u.ForceConflicts),
kube.ClientUpdateOptionDryRun(true),
kube.ClientUpdateOptionUpgradeClientSideFieldManager(upgradeClientSideFieldManager),
)
if err != nil {
return upgradedRelease, err

Loading…
Cancel
Save