Skip to content

Commit 76848f6

Browse files
committed
Fix: Pruner Config resetting to default when set to null
When HistoryLimit is set to null in tektonconfig then it resets back to 100 After this fix value will be retained This also fisxes the issues ot pruner confog resetting to default on upgrade. Now after upgrade pruner should retain the old config Restore Pre upgrade fucntions
1 parent e077899 commit 76848f6

File tree

7 files changed

+16
-11
lines changed

7 files changed

+16
-11
lines changed

pkg/apis/operator/v1alpha1/tektonconfig_validation_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ func Test_ValidateTektonConfig_PrunerConfig_Valid(t *testing.T) {
318318
TektonPruner: Pruner{
319319
Disabled: &disabled,
320320
TektonPrunerConfig: TektonPrunerConfig{
321-
GlobalConfig: config.GlobalConfig{
321+
GlobalConfig: &config.GlobalConfig{
322322
PrunerConfig: config.PrunerConfig{
323323
SuccessfulHistoryLimit: ptr.Int32(5),
324324
HistoryLimit: ptr.Int32(10),
@@ -354,7 +354,7 @@ func Test_ValidateTektonConfig_PrunerConfig_Invalid(t *testing.T) {
354354
TektonPruner: Pruner{
355355
Disabled: &disabled,
356356
TektonPrunerConfig: TektonPrunerConfig{
357-
GlobalConfig: config.GlobalConfig{
357+
GlobalConfig: &config.GlobalConfig{
358358
PrunerConfig: config.PrunerConfig{
359359
SuccessfulHistoryLimit: ptr.Int32(-1), // Invalid: negative value
360360
},

pkg/apis/operator/v1alpha1/tektonpruner_defaults.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ package v1alpha1
1818

1919
import (
2020
"context"
21+
22+
"github.com/tektoncd/pruner/pkg/config"
2123
)
2224

2325
var DefaultPrunerDisabled = true
@@ -30,5 +32,8 @@ func (p *Pruner) SetDefaults() {
3032
if p.Disabled == nil {
3133
p.Disabled = &DefaultPrunerDisabled
3234
}
33-
p.GlobalConfig.SetDefaults()
35+
if p.GlobalConfig == nil {
36+
p.GlobalConfig = &config.GlobalConfig{}
37+
p.GlobalConfig.SetDefaults()
38+
}
3439
}

pkg/apis/operator/v1alpha1/tektonpruner_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ type TektonPruner struct {
4242
}
4343

4444
type TektonPrunerConfig struct {
45-
GlobalConfig config.GlobalConfig `json:"global-config"`
45+
GlobalConfig *config.GlobalConfig `json:"global-config"`
4646
}
4747

4848
type Pruner struct {

pkg/apis/operator/v1alpha1/tektonpruner_validation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func (p *Pruner) validate(path string) *apis.FieldError {
5959
// Use the new ValidateGlobalConfig function from pruner package
6060
// This validates the GlobalConfig struct directly without ConfigMap conversion
6161
// This is the recommended approach for operator CRDs as documented in pruner PR #57
62-
if err := config.ValidateGlobalConfig(&p.TektonPrunerConfig.GlobalConfig); err != nil {
62+
if err := config.ValidateGlobalConfig(p.TektonPrunerConfig.GlobalConfig); err != nil {
6363
return apis.ErrGeneric(
6464
fmt.Sprintf("pruner config validation failed: %v", err),
6565
path+".global-config",

pkg/apis/operator/v1alpha1/tektonpruner_validation_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func Test_ValidateTektonPruner_ValidConfig(t *testing.T) {
3939
Pruner: Pruner{
4040
Disabled: &disabled,
4141
TektonPrunerConfig: TektonPrunerConfig{
42-
GlobalConfig: config.GlobalConfig{
42+
GlobalConfig: &config.GlobalConfig{
4343
PrunerConfig: config.PrunerConfig{
4444
SuccessfulHistoryLimit: ptr.Int32(5),
4545
HistoryLimit: ptr.Int32(10),
@@ -70,7 +70,7 @@ func Test_ValidateTektonPruner_DisabledPruner(t *testing.T) {
7070
Disabled: &disabled,
7171
// Even with invalid config, validation should pass when disabled
7272
TektonPrunerConfig: TektonPrunerConfig{
73-
GlobalConfig: config.GlobalConfig{
73+
GlobalConfig: &config.GlobalConfig{
7474
PrunerConfig: config.PrunerConfig{
7575
SuccessfulHistoryLimit: ptr.Int32(-1), // This would be invalid if enabled
7676
},
@@ -99,7 +99,7 @@ func Test_ValidateTektonPruner_InvalidHistoryLimit(t *testing.T) {
9999
Pruner: Pruner{
100100
Disabled: &disabled,
101101
TektonPrunerConfig: TektonPrunerConfig{
102-
GlobalConfig: config.GlobalConfig{
102+
GlobalConfig: &config.GlobalConfig{
103103
PrunerConfig: config.PrunerConfig{
104104
SuccessfulHistoryLimit: ptr.Int32(-1), // Invalid: must be >= 0
105105
},
@@ -187,7 +187,7 @@ func Test_ValidateTektonPruner_ComplexValidConfig(t *testing.T) {
187187
Pruner: Pruner{
188188
Disabled: &disabled,
189189
TektonPrunerConfig: TektonPrunerConfig{
190-
GlobalConfig: config.GlobalConfig{
190+
GlobalConfig: &config.GlobalConfig{
191191
PrunerConfig: config.PrunerConfig{
192192
SuccessfulHistoryLimit: ptr.Int32(5),
193193
FailedHistoryLimit: ptr.Int32(3),

pkg/reconciler/common/transformers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ func TestAddConfigMapValues_StructValues(t *testing.T) {
602602
manifest, err := mf.ManifestFrom(mf.Recursive(testData))
603603
assertNoError(t, err)
604604
prop := v1alpha1.TektonPrunerConfig{
605-
GlobalConfig: config.GlobalConfig{
605+
GlobalConfig: &config.GlobalConfig{
606606
PrunerConfig: config.PrunerConfig{
607607
SuccessfulHistoryLimit: ptr.Int32(123),
608608
HistoryLimit: ptr.Int32(456),

test/resources/tektonpruner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func EnsureTektonPrunerExists(clients TektonPrunerv1alpha1.TektonPrunerInterface
5555
},
5656
Pruner: v1alpha1.Pruner{
5757
TektonPrunerConfig: v1alpha1.TektonPrunerConfig{
58-
GlobalConfig: config.GlobalConfig{
58+
GlobalConfig: &config.GlobalConfig{
5959
PrunerConfig: config.PrunerConfig{
6060
SuccessfulHistoryLimit: ptr.Int32(12),
6161
HistoryLimit: ptr.Int32(45),

0 commit comments

Comments
 (0)