Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 106 additions & 16 deletions pkg/apis/duck/v1alpha1/subscribable_types_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,22 @@ import (
"knative.dev/pkg/apis"
duckv1 "knative.dev/pkg/apis/duck/v1"

duckv1beta1 "knative.dev/eventing/pkg/apis/duck/v1beta1"
eventingduckv1 "knative.dev/eventing/pkg/apis/duck/v1"
eventingduckv1beta1 "knative.dev/eventing/pkg/apis/duck/v1beta1"
)

// ConvertTo implements apis.Convertible
// Converts source (from v1alpha1.SubscribableType) into v1beta1.Subscribable
func (source *SubscribableType) ConvertTo(ctx context.Context, obj apis.Convertible) error {
switch sink := obj.(type) {
case *duckv1beta1.Subscribable:
case *eventingduckv1beta1.Subscribable:
sink.ObjectMeta = source.ObjectMeta
if err := source.Status.ConvertTo(ctx, &sink.Status); err != nil {
return err
}
if err := source.Spec.ConvertTo(ctx, &sink.Spec); err != nil {
return err
}
case *eventingduckv1.Subscribable:
sink.ObjectMeta = source.ObjectMeta
if err := source.Status.ConvertTo(ctx, &sink.Status); err != nil {
return err
Expand All @@ -47,9 +55,18 @@ func (source *SubscribableType) ConvertTo(ctx context.Context, obj apis.Converti
// ConvertTo implements apis.Convertible
func (source *SubscribableTypeSpec) ConvertTo(ctx context.Context, obj apis.Convertible) error {
switch sink := obj.(type) {
case *duckv1beta1.SubscribableSpec:
case *eventingduckv1beta1.SubscribableSpec:
if source.Subscribable != nil {
sink.Subscribers = make([]duckv1beta1.SubscriberSpec, len(source.Subscribable.Subscribers))
sink.Subscribers = make([]eventingduckv1beta1.SubscriberSpec, len(source.Subscribable.Subscribers))
for i, s := range source.Subscribable.Subscribers {
if err := s.ConvertTo(ctx, &sink.Subscribers[i]); err != nil {
return err
}
}
}
case *eventingduckv1.SubscribableSpec:
if source.Subscribable != nil && len(source.Subscribable.Subscribers) > 0 {
sink.Subscribers = make([]eventingduckv1.SubscriberSpec, len(source.Subscribable.Subscribers))
for i, s := range source.Subscribable.Subscribers {
if err := s.ConvertTo(ctx, &sink.Subscribers[i]); err != nil {
return err
Expand All @@ -65,7 +82,7 @@ func (source *SubscribableTypeSpec) ConvertTo(ctx context.Context, obj apis.Conv
// ConvertTo implements apis.Convertible
func (source *SubscriberSpec) ConvertTo(ctx context.Context, obj apis.Convertible) error {
switch sink := obj.(type) {
case *duckv1beta1.SubscriberSpec:
case *eventingduckv1beta1.SubscriberSpec:
sink.UID = source.UID
sink.Generation = source.Generation
sink.SubscriberURI = source.SubscriberURI
Expand All @@ -76,12 +93,31 @@ func (source *SubscriberSpec) ConvertTo(ctx context.Context, obj apis.Convertibl
} else {
// If however, there's a Deprecated DeadLetterSinkURI, convert that up
// to DeliverySpec.
sink.Delivery = &duckv1beta1.DeliverySpec{
sink.Delivery = &eventingduckv1beta1.DeliverySpec{
DeadLetterSink: &duckv1.Destination{
URI: source.DeadLetterSinkURI,
},
}
}
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
}
} else {
// If however, there's a Deprecated DeadLetterSinkURI, convert that up
// to DeliverySpec.
sink.Delivery = &eventingduckv1.DeliverySpec{
DeadLetterSink: &duckv1.Destination{
URI: source.DeadLetterSinkURI,
},
}
}
sink.ReplyURI = source.ReplyURI
default:
return fmt.Errorf("unknown version, got: %T", sink)
}
Expand All @@ -91,19 +127,30 @@ func (source *SubscriberSpec) ConvertTo(ctx context.Context, obj apis.Convertibl
// ConvertTo implements apis.Convertible
func (source *SubscribableTypeStatus) ConvertTo(ctx context.Context, obj apis.Convertible) error {
switch sink := obj.(type) {
case *duckv1beta1.SubscribableStatus:
case *eventingduckv1beta1.SubscribableStatus:
if source.SubscribableStatus != nil &&
len(source.SubscribableStatus.Subscribers) > 0 {
sink.Subscribers = make([]duckv1beta1.SubscriberStatus, len(source.SubscribableStatus.Subscribers))
sink.Subscribers = make([]eventingduckv1beta1.SubscriberStatus, len(source.SubscribableStatus.Subscribers))
for i, ss := range source.SubscribableStatus.Subscribers {
sink.Subscribers[i] = duckv1beta1.SubscriberStatus{
sink.Subscribers[i] = eventingduckv1beta1.SubscriberStatus{
UID: ss.UID,
ObservedGeneration: ss.ObservedGeneration,
Ready: ss.Ready,
Message: ss.Message,
}
}
}
case *eventingduckv1.SubscribableStatus:
if source.SubscribableStatus != nil &&
len(source.SubscribableStatus.Subscribers) > 0 {
sink.Subscribers = make([]eventingduckv1.SubscriberStatus, len(source.SubscribableStatus.Subscribers))
for i, ss := range source.SubscribableStatus.Subscribers {
sink.Subscribers[i] = eventingduckv1.SubscriberStatus{}
if err := ss.ConvertTo(ctx, &sink.Subscribers[i]); err != nil {
return err
}
}
}
default:
return fmt.Errorf("unknown version, got: %T", sink)
}
Expand All @@ -114,7 +161,15 @@ func (source *SubscribableTypeStatus) ConvertTo(ctx context.Context, obj apis.Co
// Converts obj v1beta1.Subscribable into v1alpha1.SubscribableType
func (sink *SubscribableType) ConvertFrom(ctx context.Context, obj apis.Convertible) error {
switch source := obj.(type) {
case *duckv1beta1.Subscribable:
case *eventingduckv1beta1.Subscribable:
sink.ObjectMeta = source.ObjectMeta
if err := sink.Status.ConvertFrom(ctx, &source.Status); err != nil {
return err
}
if err := sink.Spec.ConvertFrom(ctx, &source.Spec); err != nil {
return err
}
case *eventingduckv1.Subscribable:
sink.ObjectMeta = source.ObjectMeta
if err := sink.Status.ConvertFrom(ctx, &source.Status); err != nil {
return err
Expand All @@ -131,7 +186,18 @@ func (sink *SubscribableType) ConvertFrom(ctx context.Context, obj apis.Converti
// ConvertFrom implements apis.Convertible
func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Convertible) error {
switch source := obj.(type) {
case *duckv1beta1.SubscribableSpec:
case *eventingduckv1beta1.SubscribableSpec:
if len(source.Subscribers) > 0 {
sink.Subscribable = &Subscribable{
Subscribers: make([]SubscriberSpec, len(source.Subscribers)),
}
for i, s := range source.Subscribers {
if err := sink.Subscribable.Subscribers[i].ConvertFrom(ctx, &s); err != nil {
return err
}
}
}
case *eventingduckv1.SubscribableSpec:
if len(source.Subscribers) > 0 {
sink.Subscribable = &Subscribable{
Subscribers: make([]SubscriberSpec, len(source.Subscribers)),
Expand All @@ -151,7 +217,7 @@ func (sink *SubscribableTypeSpec) ConvertFrom(ctx context.Context, obj apis.Conv
// ConvertFrom implements apis.Convertible
func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, obj apis.Convertible) error {
switch source := obj.(type) {
case *duckv1beta1.SubscriberSpec:
case *eventingduckv1beta1.SubscriberSpec:
var deadLetterSinkURI *apis.URL
if source.Delivery != nil && source.Delivery.DeadLetterSink != nil {
deadLetterSinkURI = source.Delivery.DeadLetterSink.URI
Expand All @@ -162,6 +228,18 @@ func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, obj apis.Convertibl
sink.ReplyURI = source.ReplyURI
sink.Delivery = source.Delivery
sink.DeadLetterSinkURI = deadLetterSinkURI
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 = &eventingduckv1beta1.DeliverySpec{}
if err := sink.Delivery.ConvertFrom(ctx, source.Delivery); err != nil {
return err
}
sink.DeadLetterSinkURI = source.Delivery.DeadLetterSink.URI
}
default:
return fmt.Errorf("unknown version, got: %T", sink)
}
Expand All @@ -171,20 +249,32 @@ func (sink *SubscriberSpec) ConvertFrom(ctx context.Context, obj apis.Convertibl
// ConvertFrom implements apis.Convertible
func (sink *SubscribableTypeStatus) ConvertFrom(ctx context.Context, obj apis.Convertible) error {
switch source := obj.(type) {
case *duckv1beta1.SubscribableStatus:
case *eventingduckv1beta1.SubscribableStatus:
if len(source.Subscribers) > 0 {
sink.SubscribableStatus = &SubscribableStatus{
Subscribers: make([]duckv1beta1.SubscriberStatus, len(source.Subscribers)),
Subscribers: make([]eventingduckv1beta1.SubscriberStatus, len(source.Subscribers)),
}
for i, ss := range source.Subscribers {
sink.SubscribableStatus.Subscribers[i] = duckv1beta1.SubscriberStatus{
sink.SubscribableStatus.Subscribers[i] = eventingduckv1beta1.SubscriberStatus{
UID: ss.UID,
ObservedGeneration: ss.ObservedGeneration,
Ready: ss.Ready,
Message: ss.Message,
}
}
}
case *eventingduckv1.SubscribableStatus:
if len(source.Subscribers) > 0 {
sink.SubscribableStatus = &SubscribableStatus{
Subscribers: make([]eventingduckv1beta1.SubscriberStatus, len(source.Subscribers)),
}
for i, ss := range source.Subscribers {
sink.SubscribableStatus.Subscribers[i] = eventingduckv1beta1.SubscriberStatus{}
if err := sink.SubscribableStatus.Subscribers[i].ConvertFrom(ctx, &ss); err != nil {
return err
}
}
}
default:
return fmt.Errorf("unknown version, got: %T", sink)
}
Expand Down
Loading