Skip to content

Commit 006d2b2

Browse files
committed
Clarify error message for PipelineRun alpha fields
This commit updates the error message when a user has specified PipelineRun.spec.taskRunSpecs.stepOverrides without the alpha feature flag enabled to clarify what they need to do to enable the field (and likewise for sidecarOverrides). A similar error message is already used for TaskRun's spec.stepOverrides. It also updates the error message for when a TaskRun's computeResources or PipelineRun.TaskRunSpecs.computeResources are used without the alpha feature flag.
1 parent 8611c55 commit 006d2b2

File tree

4 files changed

+46
-26
lines changed

4 files changed

+46
-26
lines changed

pkg/apis/pipeline/v1beta1/pipelinerun_validation.go

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"time"
2323

2424
"github.com/tektoncd/pipeline/pkg/apis/config"
25-
apisconfig "github.com/tektoncd/pipeline/pkg/apis/config"
2625
"github.com/tektoncd/pipeline/pkg/apis/validate"
2726
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2827
"knative.dev/pkg/apis"
@@ -72,8 +71,6 @@ func (ps *PipelineRunSpec) Validate(ctx context.Context) (errs *apis.FieldError)
7271
}
7372
}
7473

75-
// This is an alpha feature and will fail validation if it's used in a pipelinerun spec
76-
// when the enable-api-fields feature gate is anything but "alpha".
7774
if ps.Timeouts != nil {
7875
if ps.Timeout != nil {
7976
// can't have both at the same time
@@ -153,7 +150,7 @@ func (ps *PipelineRunSpec) validatePipelineTimeout(timeout time.Duration, errorM
153150
if ps.Timeouts.Tasks.Duration > timeout {
154151
tasksTimeoutErr = true
155152
}
156-
if ps.Timeouts.Tasks.Duration == apisconfig.NoTimeoutDuration && timeout != apisconfig.NoTimeoutDuration {
153+
if ps.Timeouts.Tasks.Duration == config.NoTimeoutDuration && timeout != config.NoTimeoutDuration {
157154
tasksTimeoutErr = true
158155
tasksTimeoutStr += " (no timeout)"
159156
}
@@ -168,7 +165,7 @@ func (ps *PipelineRunSpec) validatePipelineTimeout(timeout time.Duration, errorM
168165
if ps.Timeouts.Finally.Duration > timeout {
169166
finallyTimeoutErr = true
170167
}
171-
if ps.Timeouts.Finally.Duration == apisconfig.NoTimeoutDuration && timeout != apisconfig.NoTimeoutDuration {
168+
if ps.Timeouts.Finally.Duration == config.NoTimeoutDuration && timeout != config.NoTimeoutDuration {
172169
finallyTimeoutErr = true
173170
finallyTimeoutStr += " (no timeout)"
174171
}
@@ -187,24 +184,17 @@ func (ps *PipelineRunSpec) validatePipelineTimeout(timeout time.Duration, errorM
187184
}
188185

189186
func validateTaskRunSpec(ctx context.Context, trs PipelineTaskRunSpec) (errs *apis.FieldError) {
190-
cfg := config.FromContextOrDefaults(ctx)
191-
if cfg.FeatureFlags.EnableAPIFields == config.AlphaAPIFields {
192-
if trs.StepOverrides != nil {
193-
errs = errs.Also(validateStepOverrides(trs.StepOverrides).ViaField("stepOverrides"))
194-
}
195-
if trs.SidecarOverrides != nil {
196-
errs = errs.Also(validateSidecarOverrides(trs.SidecarOverrides).ViaField("sidecarOverrides"))
197-
}
198-
if trs.ComputeResources != nil {
199-
errs = errs.Also(validateTaskRunComputeResources(trs.ComputeResources, trs.StepOverrides))
200-
}
201-
} else {
202-
if trs.StepOverrides != nil {
203-
errs = errs.Also(apis.ErrDisallowedFields("stepOverrides"))
204-
}
205-
if trs.SidecarOverrides != nil {
206-
errs = errs.Also(apis.ErrDisallowedFields("sidecarOverrides"))
207-
}
187+
if trs.StepOverrides != nil {
188+
errs = errs.Also(ValidateEnabledAPIFields(ctx, "stepOverrides", config.AlphaAPIFields).ViaField("stepOverrides"))
189+
errs = errs.Also(validateStepOverrides(trs.StepOverrides).ViaField("stepOverrides"))
190+
}
191+
if trs.SidecarOverrides != nil {
192+
errs = errs.Also(ValidateEnabledAPIFields(ctx, "sidecarOverrides", config.AlphaAPIFields).ViaField("sidecarOverrides"))
193+
errs = errs.Also(validateSidecarOverrides(trs.SidecarOverrides).ViaField("sidecarOverrides"))
194+
}
195+
if trs.ComputeResources != nil {
196+
errs = errs.Also(ValidateEnabledAPIFields(ctx, "computeResources", config.AlphaAPIFields).ViaField("computeResources"))
197+
errs = errs.Also(validateTaskRunComputeResources(trs.ComputeResources, trs.StepOverrides))
208198
}
209199
return errs
210200
}

pkg/apis/pipeline/v1beta1/pipelinerun_validation_test.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ func TestPipelineRunSpec_Invalidate(t *testing.T) {
543543
},
544544
},
545545
},
546-
wantErr: apis.ErrDisallowedFields("stepOverrides").ViaIndex(0).ViaField("taskRunSpecs"),
546+
wantErr: apis.ErrGeneric("stepOverrides requires \"enable-api-fields\" feature gate to be \"alpha\" but it is \"stable\"").ViaIndex(0).ViaField("taskRunSpecs"),
547547
}, {
548548
name: "sidecarOverride disallowed without alpha feature gate",
549549
spec: v1beta1.PipelineRunSpec{
@@ -560,7 +560,7 @@ func TestPipelineRunSpec_Invalidate(t *testing.T) {
560560
},
561561
},
562562
},
563-
wantErr: apis.ErrDisallowedFields("sidecarOverrides").ViaIndex(0).ViaField("taskRunSpecs"),
563+
wantErr: apis.ErrGeneric("sidecarOverrides requires \"enable-api-fields\" feature gate to be \"alpha\" but it is \"stable\"").ViaIndex(0).ViaField("taskRunSpecs"),
564564
}, {
565565
name: "missing stepOverride name",
566566
spec: v1beta1.PipelineRunSpec{
@@ -634,6 +634,20 @@ func TestPipelineRunSpec_Invalidate(t *testing.T) {
634634
"taskRunSpecs[0].computeResources",
635635
),
636636
withContext: enableAlphaAPIFields,
637+
}, {
638+
name: "computeResources disallowed without alpha feature gate",
639+
spec: v1beta1.PipelineRunSpec{
640+
PipelineRef: &v1beta1.PipelineRef{Name: "foo"},
641+
TaskRunSpecs: []v1beta1.PipelineTaskRunSpec{
642+
{
643+
PipelineTaskName: "bar",
644+
ComputeResources: &corev1.ResourceRequirements{
645+
Requests: corev1.ResourceList{corev1.ResourceMemory: corev1resources.MustParse("2Gi")},
646+
},
647+
},
648+
},
649+
},
650+
wantErr: apis.ErrGeneric("computeResources requires \"enable-api-fields\" feature gate to be \"alpha\" but it is \"stable\"").ViaIndex(0).ViaField("taskRunSpecs"),
637651
}}
638652

639653
for _, ps := range tests {

pkg/apis/pipeline/v1beta1/taskrun_validation.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,15 @@ func (ts *TaskRunSpec) Validate(ctx context.Context) (errs *apis.FieldError) {
6767
if ts.StepOverrides != nil {
6868
errs = errs.Also(ValidateEnabledAPIFields(ctx, "stepOverrides", config.AlphaAPIFields).ViaField("stepOverrides"))
6969
errs = errs.Also(validateStepOverrides(ts.StepOverrides).ViaField("stepOverrides"))
70-
errs = errs.Also(validateTaskRunComputeResources(ts.ComputeResources, ts.StepOverrides))
7170
}
7271
if ts.SidecarOverrides != nil {
7372
errs = errs.Also(ValidateEnabledAPIFields(ctx, "sidecarOverrides", config.AlphaAPIFields).ViaField("sidecarOverrides"))
7473
errs = errs.Also(validateSidecarOverrides(ts.SidecarOverrides).ViaField("sidecarOverrides"))
7574
}
75+
if ts.ComputeResources != nil {
76+
errs = errs.Also(ValidateEnabledAPIFields(ctx, "computeResources", config.AlphaAPIFields).ViaField("computeResources"))
77+
errs = errs.Also(validateTaskRunComputeResources(ts.ComputeResources, ts.StepOverrides))
78+
}
7679

7780
if ts.Status != "" {
7881
if ts.Status != TaskRunSpecStatusCancelled {

pkg/apis/pipeline/v1beta1/taskrun_validation_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,19 @@ func TestTaskRunSpec_Invalidate(t *testing.T) {
538538
"computeResources",
539539
),
540540
wc: enableAlphaAPIFields,
541+
}, {
542+
name: "computeResources disallowed without alpha feature gate",
543+
spec: v1beta1.TaskRunSpec{
544+
TaskRef: &v1beta1.TaskRef{
545+
Name: "foo",
546+
},
547+
ComputeResources: &corev1.ResourceRequirements{
548+
Requests: corev1.ResourceList{
549+
corev1.ResourceMemory: corev1resources.MustParse("2Gi"),
550+
},
551+
},
552+
},
553+
wantErr: apis.ErrGeneric("computeResources requires \"enable-api-fields\" feature gate to be \"alpha\" but it is \"stable\""),
541554
}}
542555

543556
for _, ts := range tests {

0 commit comments

Comments
 (0)