@@ -20,6 +20,7 @@ import (
2020 "context"
2121 "fmt"
2222
23+ "github.com/tektoncd/pipeline/pkg/apis/config"
2324 v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1"
2425 "github.com/tektoncd/pipeline/pkg/apis/version"
2526 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -54,7 +55,7 @@ func (pr *PipelineRun) ConvertTo(ctx context.Context, to apis.Convertible) error
5455 if err := serializePipelineRunStatusRuns (& sink .ObjectMeta , & pr .Status ); err != nil {
5556 return err
5657 }
57- if err := pr .Status .ConvertTo (ctx , & sink .Status ); err != nil {
58+ if err := pr .Status .convertTo (ctx , & sink .Status ); err != nil {
5859 return err
5960 }
6061 return pr .Spec .ConvertTo (ctx , & sink .Spec )
@@ -117,13 +118,15 @@ func (pr *PipelineRun) ConvertFrom(ctx context.Context, from apis.Convertible) e
117118 if err := deserializePipelineRunResources (& pr .ObjectMeta , & pr .Spec ); err != nil {
118119 return err
119120 }
120- if err := deserializePipelineRunStatusTaskRuns (& pr .ObjectMeta , & pr .Status ); err != nil {
121+ taskRuns , err := deserializePipelineRunStatusTaskRuns (& pr .ObjectMeta )
122+ if err != nil {
121123 return err
122124 }
123- if err := deserializePipelineRunStatusRuns (& pr .ObjectMeta , & pr .Status ); err != nil {
125+ runs , err := deserializePipelineRunStatusRuns (& pr .ObjectMeta )
126+ if err != nil {
124127 return err
125128 }
126- if err := pr .Status .ConvertFrom (ctx , & source .Status ); err != nil {
129+ if err := pr .Status .convertFrom (ctx , & source .Status , taskRuns , runs ); err != nil {
127130 return err
128131 }
129132 return pr .Spec .ConvertFrom (ctx , & source .Spec )
@@ -235,8 +238,7 @@ func (ptrs *PipelineTaskRunSpec) convertFrom(ctx context.Context, source v1.Pipe
235238 ptrs .ComputeResources = source .ComputeResources
236239}
237240
238- // ConvertTo implements apis.Convertible
239- func (prs * PipelineRunStatus ) ConvertTo (ctx context.Context , sink * v1.PipelineRunStatus ) error {
241+ func (prs * PipelineRunStatus ) convertTo (ctx context.Context , sink * v1.PipelineRunStatus ) error {
240242 sink .Status = prs .Status
241243 sink .StartTime = prs .StartTime
242244 sink .CompletionTime = prs .CompletionTime
@@ -271,6 +273,7 @@ func (prs *PipelineRunStatus) ConvertTo(ctx context.Context, sink *v1.PipelineRu
271273 prs .Provenance .convertTo (ctx , & new )
272274 sink .Provenance = & new
273275 }
276+
274277 // If embedded-status is set to "both", both ChildReferences and TaskRuns/Runs
275278 // will be populated. In this case, use the value from ChildReferences.
276279 if sink .ChildReferences == nil {
@@ -284,8 +287,7 @@ func (prs *PipelineRunStatus) ConvertTo(ctx context.Context, sink *v1.PipelineRu
284287 return nil
285288}
286289
287- // ConvertFrom implements apis.Convertible
288- func (prs * PipelineRunStatus ) ConvertFrom (ctx context.Context , source * v1.PipelineRunStatus ) error {
290+ func (prs * PipelineRunStatus ) convertFrom (ctx context.Context , source * v1.PipelineRunStatus , taskRuns map [string ]* PipelineRunTaskRunStatus , runs map [string ]* PipelineRunRunStatus ) error {
289291 prs .Status = source .Status
290292 prs .StartTime = source .StartTime
291293 prs .CompletionTime = source .CompletionTime
@@ -309,12 +311,20 @@ func (prs *PipelineRunStatus) ConvertFrom(ctx context.Context, source *v1.Pipeli
309311 new .convertFrom (ctx , st )
310312 prs .SkippedTasks = append (prs .SkippedTasks , new )
311313 }
312- prs .ChildReferences = nil
313- for _ , cr := range source .ChildReferences {
314- new := ChildStatusReference {}
315- new .convertFrom (ctx , cr )
316- prs .ChildReferences = append (prs .ChildReferences , new )
314+ embeddedStatus := config .FromContextOrDefaults (ctx ).FeatureFlags .EmbeddedStatus
315+ if embeddedStatus == config .BothEmbeddedStatus || embeddedStatus == config .MinimalEmbeddedStatus {
316+ prs .ChildReferences = nil
317+ for _ , cr := range source .ChildReferences {
318+ new := ChildStatusReference {}
319+ new .convertFrom (ctx , cr )
320+ prs .ChildReferences = append (prs .ChildReferences , new )
321+ }
322+ }
323+ if embeddedStatus == config .BothEmbeddedStatus || embeddedStatus == config .FullEmbeddedStatus {
324+ prs .TaskRuns = taskRuns
325+ prs .Runs = runs
317326 }
327+
318328 prs .FinallyStartTime = source .FinallyStartTime
319329 if source .Provenance != nil {
320330 new := Provenance {}
@@ -453,16 +463,13 @@ func serializePipelineRunStatusTaskRuns(meta *metav1.ObjectMeta, status *Pipelin
453463 return version .SerializeToMetadata (meta , status .TaskRuns , taskRunsAnnotationKey )
454464}
455465
456- func deserializePipelineRunStatusTaskRuns (meta * metav1.ObjectMeta , status * PipelineRunStatus ) error {
466+ func deserializePipelineRunStatusTaskRuns (meta * metav1.ObjectMeta ) ( map [ string ] * PipelineRunTaskRunStatus , error ) {
457467 taskRuns := make (map [string ]* PipelineRunTaskRunStatus )
458468 err := version .DeserializeFromMetadata (meta , & taskRuns , taskRunsAnnotationKey )
459469 if err != nil {
460- return err
470+ return nil , err
461471 }
462- if len (taskRuns ) != 0 {
463- status .TaskRuns = taskRuns
464- }
465- return nil
472+ return taskRuns , nil
466473}
467474
468475func serializePipelineRunStatusRuns (meta * metav1.ObjectMeta , status * PipelineRunStatus ) error {
@@ -472,14 +479,11 @@ func serializePipelineRunStatusRuns(meta *metav1.ObjectMeta, status *PipelineRun
472479 return version .SerializeToMetadata (meta , status .Runs , runsAnnotationKey )
473480}
474481
475- func deserializePipelineRunStatusRuns (meta * metav1.ObjectMeta , status * PipelineRunStatus ) error {
482+ func deserializePipelineRunStatusRuns (meta * metav1.ObjectMeta ) ( map [ string ] * PipelineRunRunStatus , error ) {
476483 runs := make (map [string ]* PipelineRunRunStatus )
477484 err := version .DeserializeFromMetadata (meta , & runs , runsAnnotationKey )
478485 if err != nil {
479- return err
480- }
481- if len (runs ) != 0 {
482- status .Runs = runs
486+ return nil , err
483487 }
484- return nil
488+ return runs , nil
485489}
0 commit comments