Skip to content

Commit 6c9d886

Browse files
committed
Add back conversion for TaskRunStatus Resources
This commit adds back the conversion for TaskrunStatus resources which are used by chains to sign outputs of image resources type. It also adds back the conversion for TaskRun Resources. /kind misc fixes: #7504
1 parent c43d040 commit 6c9d886

File tree

2 files changed

+198
-0
lines changed

2 files changed

+198
-0
lines changed

pkg/apis/pipeline/v1beta1/taskrun_conversion.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
const (
3030
cloudEventsAnnotationKey = "tekton.dev/v1beta1CloudEvents"
3131
resourcesResultAnnotationKey = "tekton.dev/v1beta1ResourcesResult"
32+
resourcesStatusAnnotationKey = "tekton.dev/v1beta1ResourcesStatus"
3233
)
3334

3435
var _ apis.Convertible = (*TaskRun)(nil)
@@ -41,12 +42,18 @@ func (tr *TaskRun) ConvertTo(ctx context.Context, to apis.Convertible) error {
4142
switch sink := to.(type) {
4243
case *v1.TaskRun:
4344
sink.ObjectMeta = tr.ObjectMeta
45+
if err := serializeTaskRunResources(&sink.ObjectMeta, &tr.Spec); err != nil {
46+
return err
47+
}
4448
if err := serializeTaskRunCloudEvents(&sink.ObjectMeta, &tr.Status); err != nil {
4549
return err
4650
}
4751
if err := serializeTaskRunResourcesResult(&sink.ObjectMeta, &tr.Status); err != nil {
4852
return err
4953
}
54+
if err := serializeTaskRunResourcesStatus(&sink.ObjectMeta, &tr.Status); err != nil {
55+
return err
56+
}
5057
if err := tr.Status.ConvertTo(ctx, &sink.Status, &sink.ObjectMeta); err != nil {
5158
return err
5259
}
@@ -115,6 +122,9 @@ func (tr *TaskRun) ConvertFrom(ctx context.Context, from apis.Convertible) error
115122
switch source := from.(type) {
116123
case *v1.TaskRun:
117124
tr.ObjectMeta = source.ObjectMeta
125+
if err := deserializeTaskRunResources(&tr.ObjectMeta, &tr.Spec); err != nil {
126+
return err
127+
}
118128
if err := deserializeTaskRunCloudEvents(&tr.ObjectMeta, &tr.Status); err != nil {
119129
return err
120130
}
@@ -124,6 +134,9 @@ func (tr *TaskRun) ConvertFrom(ctx context.Context, from apis.Convertible) error
124134
if err := tr.Status.ConvertFrom(ctx, source.Status, &tr.ObjectMeta); err != nil {
125135
return err
126136
}
137+
if err := deserializeTaskRunResourcesStatus(&tr.ObjectMeta, &tr.Status); err != nil {
138+
return err
139+
}
127140
return tr.Spec.ConvertFrom(ctx, &source.Spec, &tr.ObjectMeta)
128141
default:
129142
return fmt.Errorf("unknown version, got: %T", tr)
@@ -381,6 +394,25 @@ func (ss *SidecarState) convertFrom(ctx context.Context, source v1.SidecarState)
381394
ss.ImageID = source.ImageID
382395
}
383396

397+
func serializeTaskRunResources(meta *metav1.ObjectMeta, spec *TaskRunSpec) error {
398+
if spec.Resources == nil {
399+
return nil
400+
}
401+
return version.SerializeToMetadata(meta, spec.Resources, resourcesAnnotationKey)
402+
}
403+
404+
func deserializeTaskRunResources(meta *metav1.ObjectMeta, spec *TaskRunSpec) error {
405+
resources := &TaskRunResources{}
406+
err := version.DeserializeFromMetadata(meta, resources, resourcesAnnotationKey)
407+
if err != nil {
408+
return err
409+
}
410+
if resources.Inputs != nil || resources.Outputs != nil {
411+
spec.Resources = resources
412+
}
413+
return nil
414+
}
415+
384416
func serializeTaskRunCloudEvents(meta *metav1.ObjectMeta, status *TaskRunStatus) error {
385417
if status.CloudEvents == nil {
386418
return nil
@@ -418,3 +450,28 @@ func deserializeTaskRunResourcesResult(meta *metav1.ObjectMeta, status *TaskRunS
418450
}
419451
return nil
420452
}
453+
454+
func serializeTaskRunResourcesStatus(meta *metav1.ObjectMeta, status *TaskRunStatus) error {
455+
if status.TaskSpec == nil {
456+
return nil
457+
}
458+
if status.TaskSpec.Resources == nil {
459+
return nil
460+
}
461+
return version.SerializeToMetadata(meta, status.TaskSpec.Resources, resourcesStatusAnnotationKey)
462+
}
463+
464+
func deserializeTaskRunResourcesStatus(meta *metav1.ObjectMeta, status *TaskRunStatus) error {
465+
resourcesStatus := &TaskResources{}
466+
err := version.DeserializeFromMetadata(meta, resourcesStatus, resourcesStatusAnnotationKey)
467+
if err != nil {
468+
return err
469+
}
470+
if resourcesStatus.Inputs != nil || resourcesStatus.Outputs != nil {
471+
if status.TaskRunStatusFields.TaskSpec == nil {
472+
status.TaskSpec = &TaskSpec{}
473+
}
474+
status.TaskSpec.Resources = resourcesStatus
475+
}
476+
return nil
477+
}

pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,147 @@ func TestTaskRunConversionFromDeprecated(t *testing.T) {
334334
in *v1beta1.TaskRun
335335
want *v1beta1.TaskRun
336336
}{{
337+
name: "input resources",
338+
in: &v1beta1.TaskRun{
339+
ObjectMeta: metav1.ObjectMeta{
340+
Name: "foo",
341+
Namespace: "bar",
342+
},
343+
Spec: v1beta1.TaskRunSpec{
344+
Resources: &v1beta1.TaskRunResources{
345+
Inputs: []v1beta1.TaskResourceBinding{{
346+
PipelineResourceBinding: v1beta1.PipelineResourceBinding{
347+
ResourceRef: &v1beta1.PipelineResourceRef{
348+
Name: "the-git-with-branch",
349+
},
350+
Name: "gitspace",
351+
},
352+
Paths: []string{"test-path"},
353+
}},
354+
},
355+
},
356+
},
357+
want: &v1beta1.TaskRun{
358+
ObjectMeta: metav1.ObjectMeta{
359+
Name: "foo",
360+
Namespace: "bar",
361+
},
362+
Spec: v1beta1.TaskRunSpec{
363+
Resources: &v1beta1.TaskRunResources{
364+
Inputs: []v1beta1.TaskResourceBinding{{
365+
PipelineResourceBinding: v1beta1.PipelineResourceBinding{
366+
ResourceRef: &v1beta1.PipelineResourceRef{
367+
Name: "the-git-with-branch",
368+
},
369+
Name: "gitspace",
370+
},
371+
Paths: []string{"test-path"},
372+
}},
373+
},
374+
},
375+
},
376+
}, {
377+
name: "output resources",
378+
in: &v1beta1.TaskRun{
379+
ObjectMeta: metav1.ObjectMeta{
380+
Name: "foo",
381+
Namespace: "bar",
382+
},
383+
Spec: v1beta1.TaskRunSpec{
384+
Resources: &v1beta1.TaskRunResources{
385+
Outputs: []v1beta1.TaskResourceBinding{{
386+
PipelineResourceBinding: v1beta1.PipelineResourceBinding{
387+
ResourceRef: &v1beta1.PipelineResourceRef{
388+
Name: "the-git-with-branch",
389+
},
390+
Name: "gitspace",
391+
},
392+
Paths: []string{"test-path"},
393+
}},
394+
},
395+
},
396+
},
397+
want: &v1beta1.TaskRun{
398+
ObjectMeta: metav1.ObjectMeta{
399+
Name: "foo",
400+
Namespace: "bar",
401+
},
402+
Spec: v1beta1.TaskRunSpec{
403+
Resources: &v1beta1.TaskRunResources{
404+
Outputs: []v1beta1.TaskResourceBinding{{
405+
PipelineResourceBinding: v1beta1.PipelineResourceBinding{
406+
ResourceRef: &v1beta1.PipelineResourceRef{
407+
Name: "the-git-with-branch",
408+
},
409+
Name: "gitspace",
410+
},
411+
Paths: []string{"test-path"},
412+
}},
413+
},
414+
},
415+
},
416+
}, {
417+
name: "taskrun status task resources",
418+
in: &v1beta1.TaskRun{
419+
ObjectMeta: metav1.ObjectMeta{
420+
Name: "foo",
421+
Namespace: "bar",
422+
},
423+
Spec: v1beta1.TaskRunSpec{
424+
TaskRef: &v1beta1.TaskRef{
425+
Name: "test-resources-status",
426+
},
427+
},
428+
Status: v1beta1.TaskRunStatus{
429+
TaskRunStatusFields: v1beta1.TaskRunStatusFields{
430+
TaskSpec: &v1beta1.TaskSpec{
431+
Resources: &v1beta1.TaskResources{
432+
Inputs: []v1beta1.TaskResource{{
433+
v1beta1.ResourceDeclaration{
434+
Name: "input-resource",
435+
},
436+
}},
437+
Outputs: []v1beta1.TaskResource{{
438+
v1beta1.ResourceDeclaration{
439+
Name: "input-resource",
440+
Type: "image",
441+
},
442+
}},
443+
},
444+
},
445+
},
446+
},
447+
},
448+
want: &v1beta1.TaskRun{
449+
ObjectMeta: metav1.ObjectMeta{
450+
Name: "foo",
451+
Namespace: "bar",
452+
},
453+
Spec: v1beta1.TaskRunSpec{
454+
TaskRef: &v1beta1.TaskRef{
455+
Name: "test-resources-status",
456+
},
457+
},
458+
Status: v1beta1.TaskRunStatus{
459+
TaskRunStatusFields: v1beta1.TaskRunStatusFields{
460+
TaskSpec: &v1beta1.TaskSpec{
461+
Resources: &v1beta1.TaskResources{
462+
Inputs: []v1beta1.TaskResource{{
463+
v1beta1.ResourceDeclaration{
464+
Name: "input-resource",
465+
},
466+
}},
467+
Outputs: []v1beta1.TaskResource{{
468+
v1beta1.ResourceDeclaration{
469+
Name: "input-resource",
470+
Type: "image",
471+
},
472+
}},
473+
},
474+
},
475+
},
476+
}},
477+
}, {
337478
name: "bundle",
338479
in: &v1beta1.TaskRun{
339480
ObjectMeta: metav1.ObjectMeta{

0 commit comments

Comments
 (0)