From 090e2b346a13159e2cae77a9101a89a8b01d8a65 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 27 Oct 2020 18:53:33 +0300 Subject: [PATCH] Fix KafkaBinding conversion (#1651) --- kafka/source/config/300-kafkabinding.yaml | 15 +++++++++++++++ .../apis/bindings/v1alpha1/kafka_conversion.go | 6 ++---- .../bindings/v1alpha1/kafka_conversion_test.go | 6 ++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/kafka/source/config/300-kafkabinding.yaml b/kafka/source/config/300-kafkabinding.yaml index 3d12e01a26..ebf65f7943 100644 --- a/kafka/source/config/300-kafkabinding.yaml +++ b/kafka/source/config/300-kafkabinding.yaml @@ -22,6 +22,15 @@ metadata: name: kafkabindings.bindings.knative.dev spec: group: bindings.knative.dev + preserveUnknownFields: false + validation: + openAPIV3Schema: + type: object + # this is a work around so we don't need to flush out the + # schema for each version at this time + # + # see issue: https://github.com/knative/serving/issues/912 + x-kubernetes-preserve-unknown-fields: true names: categories: - all @@ -33,6 +42,12 @@ spec: scope: Namespaced subresources: status: {} + conversion: + strategy: Webhook + webhookClientConfig: + service: + name: kafka-source-webhook + namespace: knative-sources additionalPrinterColumns: - name: BootstrapServers type: string diff --git a/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion.go b/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion.go index 5c4f444b8d..7124084324 100644 --- a/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion.go +++ b/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion.go @@ -40,8 +40,7 @@ func (source *KafkaBinding) ConvertTo(ctx context.Context, obj apis.Convertible) BindingSpec: source.Spec.BindingSpec, KafkaAuthSpec: kafkaAuthSpec, } - sink.Status.Status = source.Status.Status - source.Status.Status.ConvertTo(ctx, &sink.Status.Status) + source.Status.Status.DeepCopyInto(&sink.Status.Status) return nil default: return fmt.Errorf("Unknown conversion, got: %T", sink) @@ -63,8 +62,7 @@ func (sink *KafkaBinding) ConvertFrom(ctx context.Context, obj apis.Convertible) BindingSpec: source.Spec.BindingSpec, KafkaAuthSpec: kafkaAuthSpec, } - sink.Status.Status = source.Status.Status - source.Status.Status.ConvertTo(ctx, &source.Status.Status) + source.Status.Status.DeepCopyInto(&sink.Status.Status) return nil default: return fmt.Errorf("Unknown conversion, got: %T", source) diff --git a/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go b/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go index ccfc09dccb..f74bf62ec7 100644 --- a/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go +++ b/kafka/source/pkg/apis/bindings/v1alpha1/kafka_conversion_test.go @@ -147,6 +147,9 @@ func TestKafkaBindingConversionRoundTripV1alpha1(t *testing.T) { Conditions: duckv1.Conditions{{ Type: "Ready", Status: "True", + }, { + Type: "DoesNotReallyExistButHereItIsForTestingStatusCopy", + Status: "False", }}, Annotations: map[string]string{ "foo": "bar", @@ -285,6 +288,9 @@ func TestKafkaBindingConversionRoundTripV1beta1(t *testing.T) { Conditions: duckv1.Conditions{{ Type: "Ready", Status: "True", + }, { + Type: "DoesNotReallyExistButHereItIsForTestingStatusCopy", + Status: "False", }}, Annotations: map[string]string{ "foo": "bar",