From 544b08bd74816f6f7bb040f13ad07eb63267562b Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Mon, 6 Jul 2020 22:40:12 +0300 Subject: [PATCH] Make SubscriberStatus implement apis.Convertible --- pkg/apis/duck/v1/subscribable_types.go | 1 + .../duck/v1/subscribable_types_conversion.go | 10 +++++ .../v1/subscribable_types_conversion_test.go | 12 +++++ .../subscribable_types_conversion_test.go | 4 +- pkg/apis/duck/v1beta1/subscribable_types.go | 1 + .../v1beta1/subscribable_types_conversion.go | 44 ++++++++++++++----- .../subscribable_types_conversion_test.go | 12 +++++ 7 files changed, 72 insertions(+), 12 deletions(-) diff --git a/pkg/apis/duck/v1/subscribable_types.go b/pkg/apis/duck/v1/subscribable_types.go index 33a81e6a860..a56dd79c39a 100644 --- a/pkg/apis/duck/v1/subscribable_types.go +++ b/pkg/apis/duck/v1/subscribable_types.go @@ -111,6 +111,7 @@ var ( _ apis.Convertible = (*SubscribableStatus)(nil) _ apis.Convertible = (*SubscriberSpec)(nil) + _ apis.Convertible = (*SubscriberStatus)(nil) ) // GetFullType implements duck.Implementable diff --git a/pkg/apis/duck/v1/subscribable_types_conversion.go b/pkg/apis/duck/v1/subscribable_types_conversion.go index ca8cd506f82..52985caf4f0 100644 --- a/pkg/apis/duck/v1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1/subscribable_types_conversion.go @@ -62,3 +62,13 @@ func (source *SubscriberSpec) ConvertTo(ctx context.Context, sink apis.Convertib func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, source apis.Convertible) error { return fmt.Errorf("v1 is the highest known version, got: %T", source) } + +// ConvertTo implements apis.Convertible +func (source *SubscriberStatus) ConvertTo(ctx context.Context, sink apis.Convertible) error { + return fmt.Errorf("v1 is the highest known version, got: %T", sink) +} + +// ConvertFrom implements apis.Convertible +func (sink *SubscriberStatus) ConvertFrom(ctx context.Context, source apis.Convertible) error { + return fmt.Errorf("v1 is the highest known version, got: %T", source) +} diff --git a/pkg/apis/duck/v1/subscribable_types_conversion_test.go b/pkg/apis/duck/v1/subscribable_types_conversion_test.go index 243b7c74ae1..d37d039699a 100644 --- a/pkg/apis/duck/v1/subscribable_types_conversion_test.go +++ b/pkg/apis/duck/v1/subscribable_types_conversion_test.go @@ -68,3 +68,15 @@ func TestSubscriberSpecConversionBadType(t *testing.T) { t.Errorf("ConvertFrom() = %#v, wanted error", good) } } + +func TestSubscriberStatusConversionBadType(t *testing.T) { + good, bad := &SubscriberStatus{}, &SubscriberStatus{} + + if err := good.ConvertTo(context.Background(), bad); err == nil { + t.Errorf("ConvertTo() = %#v, wanted error", bad) + } + + if err := good.ConvertFrom(context.Background(), bad); err == nil { + t.Errorf("ConvertFrom() = %#v, wanted error", good) + } +} diff --git a/pkg/apis/duck/v1alpha1/subscribable_types_conversion_test.go b/pkg/apis/duck/v1alpha1/subscribable_types_conversion_test.go index 65f8124156a..e51d6a6520b 100644 --- a/pkg/apis/duck/v1alpha1/subscribable_types_conversion_test.go +++ b/pkg/apis/duck/v1alpha1/subscribable_types_conversion_test.go @@ -215,7 +215,7 @@ func TestSubscribableTypeConversionWithV1Beta1(t *testing.T) { } } -func TestSubscribableTypeSpecStatusConversionBadType(t *testing.T) { +func TestSubscribableTypeSpecConversionBadType(t *testing.T) { good, bad := &SubscribableTypeSpec{}, &SubscribableTypeSpec{} if err := good.ConvertTo(context.Background(), bad); err == nil { @@ -239,7 +239,7 @@ func TestSubscribableTypeStatusConversionBadType(t *testing.T) { } } -func TestSubscriberSpecStatusConversionBadType(t *testing.T) { +func TestSubscriberSpecConversionBadType(t *testing.T) { good, bad := &SubscriberSpec{}, &SubscriberSpec{} if err := good.ConvertTo(context.Background(), bad); err == nil { diff --git a/pkg/apis/duck/v1beta1/subscribable_types.go b/pkg/apis/duck/v1beta1/subscribable_types.go index 56c80ac1049..db7f9fa6269 100644 --- a/pkg/apis/duck/v1beta1/subscribable_types.go +++ b/pkg/apis/duck/v1beta1/subscribable_types.go @@ -111,6 +111,7 @@ var ( _ apis.Convertible = (*SubscribableStatus)(nil) _ apis.Convertible = (*SubscriberSpec)(nil) + _ apis.Convertible = (*SubscriberStatus)(nil) ) // GetFullType implements duck.Implementable diff --git a/pkg/apis/duck/v1beta1/subscribable_types_conversion.go b/pkg/apis/duck/v1beta1/subscribable_types_conversion.go index 88b3dc76895..b706cc3eccb 100644 --- a/pkg/apis/duck/v1beta1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1beta1/subscribable_types_conversion.go @@ -81,11 +81,9 @@ func (source *SubscribableStatus) ConvertTo(ctx context.Context, obj apis.Conver if len(source.Subscribers) > 0 { sink.Subscribers = make([]eventingduckv1.SubscriberStatus, len(source.Subscribers)) for i, ss := range source.Subscribers { - sink.Subscribers[i] = eventingduckv1.SubscriberStatus{ - UID: ss.UID, - ObservedGeneration: ss.ObservedGeneration, - Ready: ss.Ready, - Message: ss.Message, + sink.Subscribers[i] = eventingduckv1.SubscriberStatus{} + if err := ss.ConvertTo(ctx, &sink.Subscribers[i]); err != nil { + return err } } } @@ -95,6 +93,20 @@ func (source *SubscribableStatus) ConvertTo(ctx context.Context, obj apis.Conver return nil } +// ConvertTo implements apis.Convertible +func (source *SubscriberStatus) ConvertTo(ctx context.Context, obj apis.Convertible) error { + switch sink := obj.(type) { + case *eventingduckv1.SubscriberStatus: + sink.UID = source.UID + sink.ObservedGeneration = source.ObservedGeneration + sink.Ready = source.Ready + sink.Message = source.Message + default: + return fmt.Errorf("unknown version, got: %T", sink) + } + return nil +} + // ConvertFrom implements apis.Convertible. func (sink *Subscribable) ConvertFrom(ctx context.Context, from apis.Convertible) error { switch source := from.(type) { @@ -150,11 +162,9 @@ func (sink *SubscribableStatus) ConvertFrom(ctx context.Context, obj apis.Conver if len(source.Subscribers) > 0 { sink.Subscribers = make([]SubscriberStatus, len(source.Subscribers)) for i, ss := range source.Subscribers { - sink.Subscribers[i] = SubscriberStatus{ - UID: ss.UID, - ObservedGeneration: ss.ObservedGeneration, - Ready: ss.Ready, - Message: ss.Message, + sink.Subscribers[i] = SubscriberStatus{} + if err := sink.Subscribers[i].ConvertFrom(ctx, &ss); err != nil { + return err } } } @@ -163,3 +173,17 @@ func (sink *SubscribableStatus) ConvertFrom(ctx context.Context, obj apis.Conver } return nil } + +// ConvertFrom implements apis.Convertible +func (sink *SubscriberStatus) ConvertFrom(ctx context.Context, obj apis.Convertible) error { + switch source := obj.(type) { + case *eventingduckv1.SubscriberStatus: + sink.UID = source.UID + sink.ObservedGeneration = source.ObservedGeneration + sink.Ready = source.Ready + sink.Message = source.Message + default: + return fmt.Errorf("unknown version, got: %T", sink) + } + return nil +} diff --git a/pkg/apis/duck/v1beta1/subscribable_types_conversion_test.go b/pkg/apis/duck/v1beta1/subscribable_types_conversion_test.go index 30ecf84ec5e..7d547bd70a2 100644 --- a/pkg/apis/duck/v1beta1/subscribable_types_conversion_test.go +++ b/pkg/apis/duck/v1beta1/subscribable_types_conversion_test.go @@ -301,3 +301,15 @@ func TestSubscriberSpecConversionBadType(t *testing.T) { t.Errorf("ConvertFrom() = %#v, wanted error", good) } } + +func TestSubscriberStatusConversionBadType(t *testing.T) { + good, bad := &SubscriberStatus{}, &SubscriberStatus{} + + if err := good.ConvertTo(context.Background(), bad); err == nil { + t.Errorf("ConvertTo() = %#v, wanted error", bad) + } + + if err := good.ConvertFrom(context.Background(), bad); err == nil { + t.Errorf("ConvertFrom() = %#v, wanted error", good) + } +}