From ec1be89d067fe94ea8c5c72655afa109311bc6d8 Mon Sep 17 00:00:00 2001 From: Jerome Ju Date: Wed, 12 Oct 2022 18:02:03 -0400 Subject: [PATCH] Add Beta feature gate for projected workspace This commit adds the Beta feature gate for projected workspace in v1. --- pkg/apis/pipeline/v1/workspace_validation.go | 9 ++++++++- pkg/apis/pipeline/v1/workspace_validation_test.go | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/apis/pipeline/v1/workspace_validation.go b/pkg/apis/pipeline/v1/workspace_validation.go index 3c4f083263e..30694053448 100644 --- a/pkg/apis/pipeline/v1/workspace_validation.go +++ b/pkg/apis/pipeline/v1/workspace_validation.go @@ -68,9 +68,16 @@ func (b *WorkspaceBinding) Validate(ctx context.Context) (errs *apis.FieldError) return apis.ErrMissingField("secret.secretName") } + // The projected workspace is only supported when the beta feature gate is enabled. // For a Projected volume to work, you must provide at least one source. if b.Projected != nil && len(b.Projected.Sources) == 0 { - return apis.ErrMissingField("projected.sources") + errs := version.ValidateEnabledAPIFields(ctx, "projected workspace type", config.BetaAPIFields).ViaField("workspaces") + if errs != nil { + return errs + } + if len(b.Projected.Sources) == 0 { + return apis.ErrMissingField("projected.sources") + } } // The csi workspace is only supported when the alpha feature gate is enabled. diff --git a/pkg/apis/pipeline/v1/workspace_validation_test.go b/pkg/apis/pipeline/v1/workspace_validation_test.go index c9a8cf76477..0c7accf1feb 100644 --- a/pkg/apis/pipeline/v1/workspace_validation_test.go +++ b/pkg/apis/pipeline/v1/workspace_validation_test.go @@ -102,6 +102,7 @@ func TestWorkspaceBindingValidateValid(t *testing.T) { }}, }, }, + wc: config.EnableBetaAPIFields, }, { name: "Valid csi", binding: &v1.WorkspaceBinding{ @@ -165,12 +166,19 @@ func TestWorkspaceBindingValidateInvalid(t *testing.T) { Name: "beth", Secret: &corev1.SecretVolumeSource{}, }, + }, { + name: "projected workspace should be disallowed without beta feature gate", + binding: &v1.WorkspaceBinding{ + Name: "beth", + Projected: &corev1.ProjectedVolumeSource{}, + }, }, { name: "Provide projected without sources", binding: &v1.WorkspaceBinding{ Name: "beth", Projected: &corev1.ProjectedVolumeSource{}, }, + wc: config.EnableBetaAPIFields, }, { name: "csi workspace should be disallowed without alpha feature gate", binding: &v1.WorkspaceBinding{