Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions controllers/handlers_helm.go
Original file line number Diff line number Diff line change
Expand Up @@ -4463,7 +4463,8 @@ func getHelmUpgradeClient(requestedChart *configv1beta1.HelmChart, actionConfig
upgradeClient.ResetValues = getResetValues(requestedChart.Options)
upgradeClient.ReuseValues = getReuseValues(requestedChart.Options)
upgradeClient.ResetThenReuseValues = getResetThenReuseValues(requestedChart.Options)
upgradeClient.ForceReplace = getForceValue(requestedChart.Options)
force := getForceValue(requestedChart.Options)
upgradeClient.ForceReplace = force
upgradeClient.Labels = getLabelsValue(requestedChart.Options)
upgradeClient.Description = getDescriptionValue(requestedChart.Options)
upgradeClient.MaxHistory = getMaxHistoryValue(requestedChart.Options)
Expand All @@ -4474,8 +4475,15 @@ func getHelmUpgradeClient(requestedChart *configv1beta1.HelmChart, actionConfig
upgradeClient.CaFile = registryOptions.caPath
upgradeClient.PassCredentialsAll = getPassCredentialsToAllValue(requestedChart.Options)
upgradeClient.TakeOwnership = getTakeOwnershipHelmValue(requestedChart.Options, true)
upgradeClient.ServerSideApply = stringTrue
upgradeClient.ForceConflicts = true
if force {
// ForceReplace (delete+recreate) is rejected by the Helm SDK when combined
// with server-side apply or ForceConflicts; disable both in that case.
upgradeClient.ServerSideApply = stringFalse
upgradeClient.ForceConflicts = false
} else {
upgradeClient.ServerSideApply = stringTrue
upgradeClient.ForceConflicts = true
}

if actionConfig.RegistryClient != nil {
upgradeClient.SetRegistryClient(actionConfig.RegistryClient)
Expand Down
36 changes: 36 additions & 0 deletions controllers/handlers_helm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2350,3 +2350,39 @@ var _ = Describe("getHelmUpgradeClient PostRenderStrategy", func() {
Expect(upgradeClient.PostRenderStrategy).To(Equal(action.PostRenderStrategyCombined))
})
})

var _ = Describe("getHelmUpgradeClient Force", func() {
It("disables server-side apply and force conflicts when force is set", func() {
requestedChart := &configv1beta1.HelmChart{
ReleaseName: randomString(),
ReleaseNamespace: randomString(),
Options: &configv1beta1.HelmOptions{
UpgradeOptions: configv1beta1.HelmUpgradeOptions{
Force: true,
},
},
}

upgradeClient := controllers.GetHelmUpgradeClient(requestedChart, &action.Configuration{},
&controllers.RegistryClientOptions{}, nil)

Expect(upgradeClient.ForceReplace).To(BeTrue())
Expect(upgradeClient.ServerSideApply).To(Equal("false"))
Expect(upgradeClient.ForceConflicts).To(BeFalse())
})

It("defaults to server-side apply with force conflicts when force is not set", func() {
requestedChart := &configv1beta1.HelmChart{
ReleaseName: randomString(),
ReleaseNamespace: randomString(),
Options: &configv1beta1.HelmOptions{},
}

upgradeClient := controllers.GetHelmUpgradeClient(requestedChart, &action.Configuration{},
&controllers.RegistryClientOptions{}, nil)

Expect(upgradeClient.ForceReplace).To(BeFalse())
Expect(upgradeClient.ServerSideApply).To(Equal("true"))
Expect(upgradeClient.ForceConflicts).To(BeTrue())
})
})
1 change: 1 addition & 0 deletions controllers/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ const (
controllerNameClusterSummary = "clustersummary"
appsGroupName = "apps"
stringTrue = "true"
stringFalse = "false"
annotationValueOk = "ok"
)

Expand Down