From 61ff23d66cab5705eb79f88b8a3c104a7d17d58c Mon Sep 17 00:00:00 2001 From: Jerome Ju Date: Tue, 7 Mar 2023 19:30:20 +0000 Subject: [PATCH] Restore timeouts default for v1 This commit restores the pipelineRun timeouts default for v1. --- pkg/apis/pipeline/v1/pipelinerun_defaults.go | 10 ++- .../pipeline/v1/pipelinerun_defaults_test.go | 80 ++++++++++++++++++- 2 files changed, 84 insertions(+), 6 deletions(-) diff --git a/pkg/apis/pipeline/v1/pipelinerun_defaults.go b/pkg/apis/pipeline/v1/pipelinerun_defaults.go index d3860219590..2617c4fd767 100644 --- a/pkg/apis/pipeline/v1/pipelinerun_defaults.go +++ b/pkg/apis/pipeline/v1/pipelinerun_defaults.go @@ -37,8 +37,14 @@ func (pr *PipelineRun) SetDefaults(ctx context.Context) { func (prs *PipelineRunSpec) SetDefaults(ctx context.Context) { cfg := config.FromContextOrDefaults(ctx) - if prs.Timeouts != nil && prs.Timeouts.Pipeline == nil { - prs.Timeouts.Pipeline = &metav1.Duration{Duration: time.Duration(cfg.Defaults.DefaultTimeoutMinutes) * time.Minute} + if prs.Timeouts == nil { + prs.Timeouts = &TimeoutFields{} + } + + if prs.Timeouts == nil || prs.Timeouts.Pipeline == nil { + prs.Timeouts = &TimeoutFields{ + Pipeline: &metav1.Duration{Duration: time.Duration(cfg.Defaults.DefaultTimeoutMinutes) * time.Minute}, + } } defaultSA := cfg.Defaults.DefaultServiceAccount diff --git a/pkg/apis/pipeline/v1/pipelinerun_defaults_test.go b/pkg/apis/pipeline/v1/pipelinerun_defaults_test.go index 6afa0c33556..b69b4b7aad4 100644 --- a/pkg/apis/pipeline/v1/pipelinerun_defaults_test.go +++ b/pkg/apis/pipeline/v1/pipelinerun_defaults_test.go @@ -18,7 +18,9 @@ package v1_test import ( "context" + "strconv" "testing" + "time" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" @@ -37,6 +39,48 @@ func TestPipelineRunSpec_SetDefaults(t *testing.T) { prs *v1.PipelineRunSpec want *v1.PipelineRunSpec }{ + { + desc: "timeouts is nil", + prs: &v1.PipelineRunSpec{}, + want: &v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: config.DefaultServiceAccountValue, + }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, + }, + }, + { + desc: "timeouts is not nil", + prs: &v1.PipelineRunSpec{ + Timeouts: &v1.TimeoutFields{}, + }, + want: &v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: config.DefaultServiceAccountValue, + }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, + }, + }, + { + desc: "timeouts.pipeline is not nil", + prs: &v1.PipelineRunSpec{ + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: (config.DefaultTimeoutMinutes + 1) * time.Minute}, + }, + }, + want: &v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: config.DefaultServiceAccountValue, + }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: (config.DefaultTimeoutMinutes + 1) * time.Minute}, + }, + }, + }, { desc: "pod template is nil", prs: &v1.PipelineRunSpec{}, @@ -44,6 +88,9 @@ func TestPipelineRunSpec_SetDefaults(t *testing.T) { TaskRunTemplate: v1.PipelineTaskRunTemplate{ ServiceAccountName: config.DefaultServiceAccountValue, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, }, }, { @@ -66,6 +113,9 @@ func TestPipelineRunSpec_SetDefaults(t *testing.T) { }, }, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, }, }, } @@ -91,6 +141,7 @@ func TestPipelineRunSpec_SetDefaults(t *testing.T) { } func TestPipelineRunDefaulting(t *testing.T) { + const defaultTimeoutMinutes = 5 tests := []struct { name string in *v1.PipelineRun @@ -104,6 +155,9 @@ func TestPipelineRunDefaulting(t *testing.T) { TaskRunTemplate: v1.PipelineTaskRunTemplate{ ServiceAccountName: config.DefaultServiceAccountValue, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, }, }, }, { @@ -128,6 +182,9 @@ func TestPipelineRunDefaulting(t *testing.T) { TaskRunTemplate: v1.PipelineTaskRunTemplate{ ServiceAccountName: config.DefaultServiceAccountValue, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, }, }, }, { @@ -143,6 +200,9 @@ func TestPipelineRunDefaulting(t *testing.T) { TaskRunTemplate: v1.PipelineTaskRunTemplate{ ServiceAccountName: config.DefaultServiceAccountValue, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: config.DefaultTimeoutMinutes * time.Minute}, + }, }, }, wc: func(ctx context.Context) context.Context { @@ -168,6 +228,9 @@ func TestPipelineRunDefaulting(t *testing.T) { TaskRunTemplate: v1.PipelineTaskRunTemplate{ ServiceAccountName: "tekton", }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: defaultTimeoutMinutes * time.Minute}, + }, }, }, wc: func(ctx context.Context) context.Context { @@ -177,7 +240,7 @@ func TestPipelineRunDefaulting(t *testing.T) { Name: config.GetDefaultsConfigName(), }, Data: map[string]string{ - "default-timeout-minutes": "5", + "default-timeout-minutes": strconv.Itoa(defaultTimeoutMinutes), "default-service-account": "tekton", }, }) @@ -201,6 +264,9 @@ func TestPipelineRunDefaulting(t *testing.T) { }, }, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: defaultTimeoutMinutes * time.Minute}, + }, }, }, wc: func(ctx context.Context) context.Context { @@ -210,7 +276,7 @@ func TestPipelineRunDefaulting(t *testing.T) { Name: config.GetDefaultsConfigName(), }, Data: map[string]string{ - "default-timeout-minutes": "5", + "default-timeout-minutes": strconv.Itoa(defaultTimeoutMinutes), "default-service-account": "tekton", "default-pod-template": "nodeSelector: { 'label': 'value' }", }, @@ -242,6 +308,9 @@ func TestPipelineRunDefaulting(t *testing.T) { }, }, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: defaultTimeoutMinutes * time.Minute}, + }, }, }, wc: func(ctx context.Context) context.Context { @@ -251,7 +320,7 @@ func TestPipelineRunDefaulting(t *testing.T) { Name: config.GetDefaultsConfigName(), }, Data: map[string]string{ - "default-timeout-minutes": "5", + "default-timeout-minutes": strconv.Itoa(defaultTimeoutMinutes), "default-service-account": "tekton", "default-pod-template": "nodeSelector: { 'label': 'value' }", }, @@ -290,6 +359,9 @@ func TestPipelineRunDefaulting(t *testing.T) { HostNetwork: true, }, }, + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: defaultTimeoutMinutes * time.Minute}, + }, }, }, wc: func(ctx context.Context) context.Context { @@ -299,7 +371,7 @@ func TestPipelineRunDefaulting(t *testing.T) { Name: config.GetDefaultsConfigName(), }, Data: map[string]string{ - "default-timeout-minutes": "5", + "default-timeout-minutes": strconv.Itoa(defaultTimeoutMinutes), "default-service-account": "tekton", "default-pod-template": "nodeSelector: { 'label': 'value' }\nhostNetwork: true", },