From 8f445914944de1a6ab5257983377b6b002a2f82c Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Fri, 3 Jul 2020 13:03:28 +0300 Subject: [PATCH] Make SubscriberSpec implement apis.Convertible --- pkg/apis/duck/v1/subscribable_types.go | 2 + .../duck/v1/subscribable_types_conversion.go | 10 +++ pkg/apis/duck/v1alpha1/subscribable_types.go | 2 + .../v1alpha1/subscribable_types_conversion.go | 68 +++++++++++-------- pkg/apis/duck/v1beta1/subscribable_types.go | 2 + .../v1beta1/subscribable_types_conversion.go | 48 +++++++------ 6 files changed, 85 insertions(+), 47 deletions(-) diff --git a/pkg/apis/duck/v1/subscribable_types.go b/pkg/apis/duck/v1/subscribable_types.go index b91067883d9..33a81e6a860 100644 --- a/pkg/apis/duck/v1/subscribable_types.go +++ b/pkg/apis/duck/v1/subscribable_types.go @@ -109,6 +109,8 @@ var ( _ apis.Convertible = (*Subscribable)(nil) _ apis.Convertible = (*SubscribableSpec)(nil) _ apis.Convertible = (*SubscribableStatus)(nil) + + _ apis.Convertible = (*SubscriberSpec)(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 92ba047d271..ca8cd506f82 100644 --- a/pkg/apis/duck/v1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1/subscribable_types_conversion.go @@ -52,3 +52,13 @@ func (source *SubscribableStatus) ConvertTo(ctx context.Context, sink apis.Conve func (sink *SubscribableStatus) 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 *SubscriberSpec) 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 *SubscriberSpec) 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/v1alpha1/subscribable_types.go b/pkg/apis/duck/v1alpha1/subscribable_types.go index 8bfb7ee69f6..afb93bf4501 100644 --- a/pkg/apis/duck/v1alpha1/subscribable_types.go +++ b/pkg/apis/duck/v1alpha1/subscribable_types.go @@ -110,6 +110,8 @@ var ( _ apis.Convertible = (*SubscribableTypeSpec)(nil) _ apis.Convertible = (*SubscribableTypeStatus)(nil) + + _ apis.Convertible = (*SubscriberSpec)(nil) ) // GetSubscribableTypeStatus method Returns the Default SubscribableStatus in this case it's SubscribableStatus diff --git a/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go b/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go index 54539fd97a8..f4b1cac6978 100644 --- a/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1alpha1/subscribable_types_conversion.go @@ -55,23 +55,30 @@ func (source *SubscribableTypeSpec) ConvertTo(ctx context.Context, obj apis.Conv return nil } -func (source *SubscriberSpec) ConvertTo(ctx context.Context, sink *duckv1beta1.SubscriberSpec) { - sink.UID = source.UID - sink.Generation = source.Generation - sink.SubscriberURI = source.SubscriberURI - sink.ReplyURI = source.ReplyURI - - if source.Delivery != nil { - sink.Delivery = source.Delivery - } else { - // If however, there's a Deprecated DeadLetterSinkURI, convert that up - // to DeliverySpec. - sink.Delivery = &duckv1beta1.DeliverySpec{ - DeadLetterSink: &duckv1.Destination{ - URI: source.DeadLetterSinkURI, - }, +// ConvertTo implements apis.Convertible +func (source *SubscriberSpec) ConvertTo(ctx context.Context, obj apis.Convertible) error { + switch sink := obj.(type) { + case *duckv1beta1.SubscriberSpec: + sink.UID = source.UID + sink.Generation = source.Generation + sink.SubscriberURI = source.SubscriberURI + sink.ReplyURI = source.ReplyURI + + if source.Delivery != nil { + sink.Delivery = source.Delivery + } else { + // If however, there's a Deprecated DeadLetterSinkURI, convert that up + // to DeliverySpec. + sink.Delivery = &duckv1beta1.DeliverySpec{ + DeadLetterSink: &duckv1.Destination{ + URI: source.DeadLetterSinkURI, + }, + } } + default: + return fmt.Errorf("unknown version, got: %T", sink) } + return nil } // ConvertTo implements apis.Convertible @@ -119,7 +126,7 @@ func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Conv Subscribers: make([]SubscriberSpec, len(source.Subscribers)), } for i, s := range source.Subscribers { - sink.Subscribable.Subscribers[i].ConvertFrom(ctx, s) + sink.Subscribable.Subscribers[i].ConvertFrom(ctx, &s) } } default: @@ -128,19 +135,24 @@ func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Conv return nil } -// ConvertFrom helps implement apis.Convertible -func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, source duckv1beta1.SubscriberSpec) { - var deadLetterSinkURI *apis.URL - if source.Delivery != nil && source.Delivery.DeadLetterSink != nil { - deadLetterSinkURI = source.Delivery.DeadLetterSink.URI +// ConvertFrom implements apis.Convertible +func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, obj apis.Convertible) error { + switch source := obj.(type) { + case *duckv1beta1.SubscriberSpec: + var deadLetterSinkURI *apis.URL + if source.Delivery != nil && source.Delivery.DeadLetterSink != nil { + deadLetterSinkURI = source.Delivery.DeadLetterSink.URI + } + sink.UID = source.UID + sink.Generation = source.Generation + sink.SubscriberURI = source.SubscriberURI + sink.ReplyURI = source.ReplyURI + sink.Delivery = source.Delivery + sink.DeadLetterSinkURI = deadLetterSinkURI + default: + return fmt.Errorf("unknown version, got: %T", sink) } - sink.UID = source.UID - sink.Generation = source.Generation - sink.SubscriberURI = source.SubscriberURI - sink.ReplyURI = source.ReplyURI - sink.Delivery = source.Delivery - sink.DeadLetterSinkURI = deadLetterSinkURI - + return nil } // ConvertFrom implements apis.Convertible diff --git a/pkg/apis/duck/v1beta1/subscribable_types.go b/pkg/apis/duck/v1beta1/subscribable_types.go index a739c9be8e0..56c80ac1049 100644 --- a/pkg/apis/duck/v1beta1/subscribable_types.go +++ b/pkg/apis/duck/v1beta1/subscribable_types.go @@ -109,6 +109,8 @@ var ( _ apis.Convertible = (*Subscribable)(nil) _ apis.Convertible = (*SubscribableSpec)(nil) _ apis.Convertible = (*SubscribableStatus)(nil) + + _ apis.Convertible = (*SubscriberSpec)(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 b5dbf73bb5f..88b3dc76895 100644 --- a/pkg/apis/duck/v1beta1/subscribable_types_conversion.go +++ b/pkg/apis/duck/v1beta1/subscribable_types_conversion.go @@ -54,18 +54,23 @@ func (source *SubscribableSpec) ConvertTo(ctx context.Context, obj apis.Converti return nil } -// ConvertTo helps implement apis.Convertible -func (source *SubscriberSpec) ConvertTo(ctx context.Context, sink *eventingduckv1.SubscriberSpec) error { - sink.UID = source.UID - sink.Generation = source.Generation - sink.SubscriberURI = source.SubscriberURI - if source.Delivery != nil { - sink.Delivery = &eventingduckv1.DeliverySpec{} - if err := source.Delivery.ConvertTo(ctx, sink.Delivery); err != nil { - return err +// ConvertTo implements apis.Convertible +func (source *SubscriberSpec) ConvertTo(ctx context.Context, obj apis.Convertible) error { + switch sink := obj.(type) { + case *eventingduckv1.SubscriberSpec: + sink.UID = source.UID + sink.Generation = source.Generation + sink.SubscriberURI = source.SubscriberURI + if source.Delivery != nil { + sink.Delivery = &eventingduckv1.DeliverySpec{} + if err := source.Delivery.ConvertTo(ctx, sink.Delivery); err != nil { + return err + } } + sink.ReplyURI = source.ReplyURI + default: + return fmt.Errorf("unknown version, got: %T", sink) } - sink.ReplyURI = source.ReplyURI return nil } @@ -109,7 +114,7 @@ func (sink *SubscribableSpec) ConvertFrom(ctx context.Context, obj apis.Converti if len(source.Subscribers) > 0 { sink.Subscribers = make([]SubscriberSpec, len(source.Subscribers)) for i, s := range source.Subscribers { - if err := sink.Subscribers[i].ConvertFrom(ctx, s); err != nil { + if err := sink.Subscribers[i].ConvertFrom(ctx, &s); err != nil { return err } } @@ -121,14 +126,19 @@ func (sink *SubscribableSpec) ConvertFrom(ctx context.Context, obj apis.Converti } // ConvertFrom helps implement apis.Convertible -func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, source eventingduckv1.SubscriberSpec) error { - sink.UID = source.UID - sink.Generation = source.Generation - sink.SubscriberURI = source.SubscriberURI - sink.ReplyURI = source.ReplyURI - if source.Delivery != nil { - sink.Delivery = &DeliverySpec{} - return sink.Delivery.ConvertFrom(ctx, source.Delivery) +func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, obj apis.Convertible) error { + switch source := obj.(type) { + case *eventingduckv1.SubscriberSpec: + sink.UID = source.UID + sink.Generation = source.Generation + sink.SubscriberURI = source.SubscriberURI + sink.ReplyURI = source.ReplyURI + if source.Delivery != nil { + sink.Delivery = &DeliverySpec{} + return sink.Delivery.ConvertFrom(ctx, source.Delivery) + } + default: + return fmt.Errorf("unknown version, got: %T", source) } return nil }