From ee3370cff1ffc0cf92a72589910814289983f219 Mon Sep 17 00:00:00 2001 From: Billy Lynch Date: Fri, 27 May 2022 13:54:07 -0400 Subject: [PATCH] Allow PipelineTaskRunSpec.Metadata to be optional. Previously, this was using a non-pointer value, which means that the field was not actually optional and was being included in client requests. If this request was sent to an older server, this would break during unmarshalling because the field doesn't exist yet for older servers. This changes the type to use a pointer so it will actually be omitted in newer clients if it is not set. Co-authored-by: Scott Nichols Signed-off-by: Billy Lynch --- pkg/apis/pipeline/v1beta1/openapi_generated.go | 3 +-- pkg/apis/pipeline/v1beta1/pipelinerun_types.go | 2 +- pkg/apis/pipeline/v1beta1/swagger.json | 1 - pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go | 6 +++++- pkg/reconciler/pipelinerun/pipelinerun.go | 8 ++++++-- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pkg/apis/pipeline/v1beta1/openapi_generated.go b/pkg/apis/pipeline/v1beta1/openapi_generated.go index dbced7b227a..b7ecf823187 100644 --- a/pkg/apis/pipeline/v1beta1/openapi_generated.go +++ b/pkg/apis/pipeline/v1beta1/openapi_generated.go @@ -2883,8 +2883,7 @@ func schema_pkg_apis_pipeline_v1beta1_PipelineTaskRunSpec(ref common.ReferenceCa }, "metadata": { SchemaProps: spec.SchemaProps{ - Default: map[string]interface{}{}, - Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.PipelineTaskMetadata"), + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.PipelineTaskMetadata"), }, }, }, diff --git a/pkg/apis/pipeline/v1beta1/pipelinerun_types.go b/pkg/apis/pipeline/v1beta1/pipelinerun_types.go index c2b0d0cc462..562a9299faf 100644 --- a/pkg/apis/pipeline/v1beta1/pipelinerun_types.go +++ b/pkg/apis/pipeline/v1beta1/pipelinerun_types.go @@ -602,7 +602,7 @@ type PipelineTaskRunSpec struct { SidecarOverrides []TaskRunSidecarOverride `json:"sidecarOverrides,omitempty"` // +optional - Metadata PipelineTaskMetadata `json:"metadata,omitempty"` + Metadata *PipelineTaskMetadata `json:"metadata,omitempty"` } // GetTaskRunSpec returns the task specific spec for a given diff --git a/pkg/apis/pipeline/v1beta1/swagger.json b/pkg/apis/pipeline/v1beta1/swagger.json index b74f3367581..6e7d2c66b2d 100644 --- a/pkg/apis/pipeline/v1beta1/swagger.json +++ b/pkg/apis/pipeline/v1beta1/swagger.json @@ -1610,7 +1610,6 @@ "type": "object", "properties": { "metadata": { - "default": {}, "$ref": "#/definitions/v1beta1.PipelineTaskMetadata" }, "pipelineTaskName": { diff --git a/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go b/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go index 9d8a4346a00..6b52281b7c6 100644 --- a/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go @@ -1226,7 +1226,11 @@ func (in *PipelineTaskRunSpec) DeepCopyInto(out *PipelineTaskRunSpec) { (*in)[i].DeepCopyInto(&(*out)[i]) } } - in.Metadata.DeepCopyInto(&out.Metadata) + if in.Metadata != nil { + in, out := &in.Metadata, &out.Metadata + *out = new(PipelineTaskMetadata) + (*in).DeepCopyInto(*out) + } return } diff --git a/pkg/reconciler/pipelinerun/pipelinerun.go b/pkg/reconciler/pipelinerun/pipelinerun.go index 20ea3a7d260..12a24acb047 100644 --- a/pkg/reconciler/pipelinerun/pipelinerun.go +++ b/pkg/reconciler/pipelinerun/pipelinerun.go @@ -1024,7 +1024,9 @@ func combineTaskRunAndTaskSpecLabels(pr *v1beta1.PipelineRun, pipelineTask *v1be labels := make(map[string]string) taskRunSpec := pr.GetTaskRunSpec(pipelineTask.Name) - addMetadataByPrecedence(labels, taskRunSpec.Metadata.Labels) + if taskRunSpec.Metadata != nil { + addMetadataByPrecedence(labels, taskRunSpec.Metadata.Labels) + } addMetadataByPrecedence(labels, getTaskrunLabels(pr, pipelineTask.Name, true)) @@ -1039,7 +1041,9 @@ func combineTaskRunAndTaskSpecAnnotations(pr *v1beta1.PipelineRun, pipelineTask annotations := make(map[string]string) taskRunSpec := pr.GetTaskRunSpec(pipelineTask.Name) - addMetadataByPrecedence(annotations, taskRunSpec.Metadata.Annotations) + if taskRunSpec.Metadata != nil { + addMetadataByPrecedence(annotations, taskRunSpec.Metadata.Annotations) + } addMetadataByPrecedence(annotations, getTaskrunAnnotations(pr))