Repository: knative-sandbox/eventing-kafka-broker
Pull request #414 (2020-11-18 01:49:28)

[master] Upgrade to latest dependencies
Produced via:
```shell
./hack/update-deps.sh --upgrade
./hack/update-codegen.sh
```
Cron. -knative-prow-robot
/cc knative-sandbox/channel-wg-leads
/assign knative-sandbox/channel-wg-leads

knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/414#" title="Author self-approved">knative-automation</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **evankanderson** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @evankanderson` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka-broker).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka-broker/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["evankanderson"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=h1) Report
> Merging [#414](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=desc) (0af1d8f) into [master](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/commit/6881441189bb1403805e030af5b1012fbda0eb42?el=desc) (6881441) will **decrease** coverage by `1.21%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/graphs/tree.svg?width=650&height=150&src=pr&token=xyPIgGOiwy)](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=tree)

```diff
@@             Coverage Diff              @@
##             master     #414      +/-   ##
============================================
- Coverage     75.78%   74.56%   -1.22%     
  Complexity      198      198              
============================================
  Files            52       30      -22     
  Lines          1627      869     -758     
  Branches         55       55              
============================================
- Hits           1233      648     -585     
+ Misses          313      189     -124     
+ Partials         81       32      -49     
```

| Flag | Coverage Δ | Complexity Δ | |
|---|---|---|---|
| java-unittests | `74.56% <ø> (ø)` | `0.00 <ø> (ø)` | |

Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags#carryforward-flags-in-the-pull-request-comment) to find out more.

| [Impacted Files](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=tree) | Coverage Δ | Complexity Δ | |
|---|---|---|---|
| [control-plane/pkg/core/config/utils.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvY29yZS9jb25maWcvdXRpbHMuZ28=) | | | |
| [...-plane/pkg/reconciler/trigger/trigger\_lifecycle.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjb25jaWxlci90cmlnZ2VyL3RyaWdnZXJfbGlmZWN5Y2xlLmdv) | | | |
| [control-plane/pkg/reconciler/sink/controller.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjb25jaWxlci9zaW5rL2NvbnRyb2xsZXIuZ28=) | | | |
| [...ntrol-plane/pkg/apis/eventing/v1alpha1/register.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvYXBpcy9ldmVudGluZy92MWFscGhhMS9yZWdpc3Rlci5nbw==) | | | |
| [control-plane/pkg/reconciler/sink/kafka\_sink.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjb25jaWxlci9zaW5rL2thZmthX3NpbmsuZ28=) | | | |
| [control-plane/pkg/reconciler/kafka/broker\_class.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjb25jaWxlci9rYWZrYS9icm9rZXJfY2xhc3MuZ28=) | | | |
| [control-plane/pkg/reconciler/broker/controller.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjb25jaWxlci9icm9rZXIvY29udHJvbGxlci5nbw==) | | | |
| [...kg/apis/eventing/v1alpha1/kafka\_sink\_validation.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvYXBpcy9ldmVudGluZy92MWFscGhhMS9rYWZrYV9zaW5rX3ZhbGlkYXRpb24uZ28=) | | | |
| [control-plane/pkg/receiver/path.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjZWl2ZXIvcGF0aC5nbw==) | | | |
| [...ane/pkg/apis/eventing/v1alpha1/kafka\_sink\_types.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree#diff-Y29udHJvbC1wbGFuZS9wa2cvYXBpcy9ldmVudGluZy92MWFscGhhMS9rYWZrYV9zaW5rX3R5cGVzLmdv) | | | |
| ... and [12 more](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414/diff?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=footer). Last update [6881441...0af1d8f](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/414?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/414#" title="Author self-approved">knative-automation</a>*, *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/414#pullrequestreview-533183345" title="LGTM">pierDipi</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka-broker).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/knative-sandbox/eventing-kafka-broker/blob/master/OWNERS)~~ [pierDipi]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->

Patch:
diff --git a/go.mod b/go.mod
index 4d26422f3..0ea880f14 100644
--- a/go.mod
+++ b/go.mod
@@ -15,15 +15,15 @@ require (
 	github.com/stretchr/testify v1.6.1
 	go.uber.org/zap v1.16.0
 	google.golang.org/protobuf v1.25.0
-	k8s.io/api v0.18.8
-	k8s.io/apiextensions-apiserver v0.18.8
+	k8s.io/api v0.18.12
+	k8s.io/apiextensions-apiserver v0.18.12
 	k8s.io/apimachinery v0.19.2
 	k8s.io/apiserver v0.18.8
 	k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
 	k8s.io/utils v0.0.0-20200603063816-c1c6865ac451
-	knative.dev/eventing v0.19.1-0.20201117061051-47ee6e3586ca
+	knative.dev/eventing v0.19.1-0.20201117202251-be93f9495205
 	knative.dev/hack v0.0.0-20201112185459-01a34c573bd8
-	knative.dev/pkg v0.0.0-20201117020252-ab1a398f669c
+	knative.dev/pkg v0.0.0-20201117221452-0fccc54273ed
 )
 
 replace (
diff --git a/go.sum b/go.sum
index 2629f850f..ce9102482 100644
--- a/go.sum
+++ b/go.sum
@@ -1186,16 +1186,14 @@ k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29/go.mod h1:F+5wygcW0wmRTnM
 k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
 k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE=
 k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-knative.dev/eventing v0.19.1-0.20201117061051-47ee6e3586ca h1:WFTkuMRlPvcLaNBdbM5y5xOxVDzzETOhBEBkznVPV5I=
-knative.dev/eventing v0.19.1-0.20201117061051-47ee6e3586ca/go.mod h1:I5ysDZ5GyEut5p+jVHfuBKk33agLfqKJaF4kQpwvS2M=
-knative.dev/hack v0.0.0-20201103151104-3d5abc3a0075 h1:YAgWplKIy4O5e3F5vUUECmXAAyZ0M5ymo6fCt1jeZhs=
-knative.dev/hack v0.0.0-20201103151104-3d5abc3a0075/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
+knative.dev/eventing v0.19.1-0.20201117202251-be93f9495205 h1:7m6aZOH7jOqxdsV69v7vnu7oKTTftD4QSNvMr3YJbGM=
+knative.dev/eventing v0.19.1-0.20201117202251-be93f9495205/go.mod h1:YxW2ZEk/fjUVO6fI46Tto3Kusp3FpiLb7ZrUxk40i90=
 knative.dev/hack v0.0.0-20201112185459-01a34c573bd8 h1:RNbZsAjhswBPtl4C5C5gEFX5/GfWIOZQxfYD9DhkHdY=
 knative.dev/hack v0.0.0-20201112185459-01a34c573bd8/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
-knative.dev/pkg v0.0.0-20201112201059-93fedf141385 h1:DcYWVnDpcvKZR/Rh+8X2Qkq89jbBo6yLNV1qBifovBk=
-knative.dev/pkg v0.0.0-20201112201059-93fedf141385/go.mod h1:5vNHKNtZtzlNeNrcDoUtZIn+dma/8DjmpjfdHiwoQyM=
 knative.dev/pkg v0.0.0-20201117020252-ab1a398f669c h1:dMBwabvusJrldjzIj4lces/96SnVgFXV7Kpv9z9fiCI=
 knative.dev/pkg v0.0.0-20201117020252-ab1a398f669c/go.mod h1:4kXxEyYWdNk3pUR6/cx/ToMKG/dAJvEpDYUfV5RYHeU=
+knative.dev/pkg v0.0.0-20201117221452-0fccc54273ed h1:4LNEFhvD2Ya4WgCD3SC1WGXz81bjEvQgbcpe5XACI3I=
+knative.dev/pkg v0.0.0-20201117221452-0fccc54273ed/go.mod h1:nxlh3CUvx6WBPr1WKD96AHxFZPD2UKRDo9RUp8ILTyQ=
 modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
 modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
 modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta1/ping_conversion.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta1/ping_conversion.go
index d33d93779..c68bfdb3f 100644
--- a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta1/ping_conversion.go
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta1/ping_conversion.go
@@ -1,5 +1,5 @@
 /*
-Copyright 2020 The Knative Authors.
+Copyright 2020 The Knative Authors
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -18,17 +18,136 @@ package v1beta1
 
 import (
 	"context"
+	"encoding/json"
 	"fmt"
 
+	cloudevents "github.com/cloudevents/sdk-go/v2"
+
+	"knative.dev/eventing/pkg/apis/sources/v1beta2"
 	"knative.dev/pkg/apis"
 )
 
+const (
+	// V1B1SpecAnnotationKey is used to indicate that a v1beta2 object is converted from v1beta1
+	// also it can be used to downgrade such object to v1beta1
+	V1B1SpecAnnotationKey = "pingsources.sources.knative.dev/v1beta1-spec"
+
+	// V1B2SpecAnnotationKey is used to indicate that a v1beta1 object is converted from v1beta2
+	// also it can be used to convert the v1beta1 object back to v1beta2, considering that v1beta2 introduces more features.
+	V1B2SpecAnnotationKey = "pingsources.sources.knative.dev/v1beta2-spec"
+)
+
+type message struct {
+	Body string `json:"body"`
+}
+
+func makeMessage(body string) ([]byte, error) {
+	// try to marshal the body into an interface.
+	var objmap map[string]*json.RawMessage
+	if err := json.Unmarshal([]byte(body), &objmap); err != nil {
+		// Default to a wrapped message.
+		return json.Marshal(message{Body: body})
+	}
+	return json.Marshal(objmap)
+}
+
 // ConvertTo implements apis.Convertible
-func (source *PingSource) ConvertTo(ctx context.Context, sink apis.Convertible) error {
-	return fmt.Errorf("v1beta1 is the highest known version, got: %T", sink)
+// Converts source from v1beta1.PingSource into a higher version.
+func (source *PingSource) ConvertTo(ctx context.Context, obj apis.Convertible) error {
+	switch sink := obj.(type) {
+	case *v1beta2.PingSource:
+		sink.ObjectMeta = source.ObjectMeta
+		sink.Status = v1beta2.PingSourceStatus{
+			SourceStatus: source.Status.SourceStatus,
+		}
+
+		// deep copy annotations to avoid mutation on source.ObjectMeta.Annotations
+		annotations := make(map[string]string)
+		for key, value := range source.GetAnnotations() {
+			annotations[key] = value
+		}
+
+		// try to unmarshal v1beta2.PingSource.Spec from V1B2SpecAnnotationKey
+		v1beta2Spec, ok := annotations[V1B2SpecAnnotationKey]
+		if ok {
+			if err := json.Unmarshal([]byte(v1beta2Spec), &sink.Spec); err != nil {
+				ok = false
+			}
+			// we don't need this annotation in a v1beta2.PingSource object
+			delete(annotations, V1B2SpecAnnotationKey)
+		}
+
+		// if V1B2SpecAnnotationKey does not exist or we cannot unmarshal it, do a normal conversion
+		if !ok {
+			sink.Spec = v1beta2.PingSourceSpec{
+				SourceSpec: source.Spec.SourceSpec,
+				Schedule:   source.Spec.Schedule,
+				Timezone:   source.Spec.Timezone,
+			}
+
+			if source.Spec.JsonData != "" {
+				msg, err := makeMessage(source.Spec.JsonData)
+				if err != nil {
+					return fmt.Errorf("error converting jsonData to a higher version: %v", err)
+				}
+				sink.Spec.ContentType = cloudevents.ApplicationJSON
+				sink.Spec.Data = string(msg)
+			}
+		}
+
+		// marshal and store v1beta1.PingSource.Spec into V1B1SpecAnnotationKey
+		// this is to help if we need to convert back to v1beta1.PingSource
+		v1beta1Spec, err := json.Marshal(source.Spec)
+		if err != nil {
+			return fmt.Errorf("error marshalling source.Spec: %v, err: %v", source.Spec, err)
+		}
+		annotations[V1B1SpecAnnotationKey] = string(v1beta1Spec)
+		sink.SetAnnotations(annotations)
+
+		return nil
+	default:
+		return apis.ConvertToViaProxy(ctx, source, &v1beta2.PingSource{}, sink)
+	}
 }
 
 // ConvertFrom implements apis.Convertible
-func (sink *PingSource) ConvertFrom(ctx context.Context, source apis.Convertible) error {
-	return fmt.Errorf("v1beta1 is the highest known version, got: %T", source)
+// Converts obj from a higher version into v1beta1.PingSource.
+func (sink *PingSource) ConvertFrom(ctx context.Context, obj apis.Convertible) error {
+	switch source := obj.(type) {
+	case *v1beta2.PingSource:
+		sink.ObjectMeta = source.ObjectMeta
+		sink.Status = PingSourceStatus{
+			SourceStatus: source.Status.SourceStatus,
+		}
+
+		// deep copy annotations to avoid mutation on source.ObjectMeta.Annotations
+		annotations := make(map[string]string)
+		for key, value := range source.GetAnnotations() {
+			annotations[key] = value
+		}
+
+		// v1beta2 objects originally converted from v1beta1 is expected to have this annotation
+		v1beta1Spec, ok := annotations[V1B1SpecAnnotationKey]
+
+		if ok {
+			if err := json.Unmarshal([]byte(v1beta1Spec), &sink.Spec); err != nil {
+				return fmt.Errorf("error unmarshalling annotation %v=%v into %T: %v", V1B1SpecAnnotationKey, v1beta1Spec, sink.Spec, err)
+			}
+			// we don't need this annotation in a v1beta1.PingSource object
+			delete(annotations, V1B1SpecAnnotationKey)
+		}
+
+		// marshal and store v1beta2.PingSource.Spec into V1B2SpecAnnotationKey
+		// this is to help if we need to convert back to v1beta2.PingSource
+		v1beta2Configuration, err := json.Marshal(source.Spec)
+		if err != nil {
+			return fmt.Errorf("error marshalling source.Spec: %v, err: %v", source.Spec, err)
+		}
+		annotations[V1B2SpecAnnotationKey] = string(v1beta2Configuration)
+		sink.SetAnnotations(annotations)
+
+		return nil
+	default:
+		return apis.ConvertFromViaProxy(ctx, source, &v1beta2.PingSource{}, sink)
+	}
 }
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/doc.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/doc.go
new file mode 100644
index 000000000..1454b38ba
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/doc.go
@@ -0,0 +1,20 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Package v1beta2 contains API Schema definitions for the sources v1beta2 API group.
+// +k8s:deepcopy-gen=package
+// +groupName=sources.knative.dev
+package v1beta2
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_conversion.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_conversion.go
new file mode 100644
index 000000000..17fb38b62
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_conversion.go
@@ -0,0 +1,36 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1beta2
+
+import (
+	"context"
+	"fmt"
+
+	"knative.dev/pkg/apis"
+)
+
+// ConvertTo implements apis.Convertible
+// Converts source from v1beta2.PingSource into a higher version.
+func (source *PingSource) ConvertTo(ctx context.Context, sink apis.Convertible) error {
+	return fmt.Errorf("v1beta2 is the highest known version, got: %T", sink)
+}
+
+// ConvertFrom implements apis.Convertible
+// Converts source from a higher version into v1beta2.PingSource
+func (sink *PingSource) ConvertFrom(ctx context.Context, source apis.Convertible) error {
+	return fmt.Errorf("v1beta2 is the highest known version, got: %T", source)
+}
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_defaults.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_defaults.go
new file mode 100644
index 000000000..8078c36d1
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_defaults.go
@@ -0,0 +1,35 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1beta2
+
+import (
+	"context"
+)
+
+const (
+	defaultSchedule = "* * * * *"
+)
+
+func (s *PingSource) SetDefaults(ctx context.Context) {
+	s.Spec.SetDefaults(ctx)
+}
+
+func (ss *PingSourceSpec) SetDefaults(ctx context.Context) {
+	if ss.Schedule == "" {
+		ss.Schedule = defaultSchedule
+	}
+}
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_lifecycle.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_lifecycle.go
new file mode 100644
index 000000000..76da41368
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_lifecycle.go
@@ -0,0 +1,122 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1beta2
+
+import (
+	"fmt"
+
+	appsv1 "k8s.io/api/apps/v1"
+	corev1 "k8s.io/api/core/v1"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"knative.dev/pkg/apis"
+)
+
+const (
+	// PingSourceConditionReady has status True when the PingSource is ready to send events.
+	PingSourceConditionReady = apis.ConditionReady
+
+	// PingSourceConditionSinkProvided has status True when the PingSource has been configured with a sink target.
+	PingSourceConditionSinkProvided apis.ConditionType = "SinkProvided"
+
+	// PingSourceConditionDeployed has status True when the PingSource has had it's receive adapter deployment created.
+	PingSourceConditionDeployed apis.ConditionType = "Deployed"
+)
+
+var PingSourceCondSet = apis.NewLivingConditionSet(
+	PingSourceConditionSinkProvided,
+	PingSourceConditionDeployed)
+
+const (
+	// PingSourceEventType is the default PingSource CloudEvent type.
+	PingSourceEventType = "dev.knative.sources.ping"
+)
+
+// GetConditionSet retrieves the condition set for this resource. Implements the KRShaped interface.
+func (*PingSource) GetConditionSet() apis.ConditionSet {
+	return PingSourceCondSet
+}
+
+// PingSourceSource returns the PingSource CloudEvent source.
+func PingSourceSource(namespace, name string) string {
+	return fmt.Sprintf("/apis/v1/namespaces/%s/pingsources/%s", namespace, name)
+}
+
+// GetUntypedSpec returns the spec of the PingSource.
+func (s *PingSource) GetUntypedSpec() interface{} {
+	return s.Spec
+}
+
+// GetGroupVersionKind returns the GroupVersionKind.
+func (s *PingSource) GetGroupVersionKind() schema.GroupVersionKind {
+	return SchemeGroupVersion.WithKind("PingSource")
+}
+
+// GetCondition returns the condition currently associated with the given type, or nil.
+func (s *PingSourceStatus) GetCondition(t apis.ConditionType) *apis.Condition {
+	return PingSourceCondSet.Manage(s).GetCondition(t)
+}
+
+// GetTopLevelCondition returns the top level Condition.
+func (ps *PingSourceStatus) GetTopLevelCondition() *apis.Condition {
+	return PingSourceCondSet.Manage(ps).GetTopLevelCondition()
+}
+
+// IsReady returns true if the resource is ready overall.
+func (s *PingSourceStatus) IsReady() bool {
+	return PingSourceCondSet.Manage(s).IsHappy()
+}
+
+// InitializeConditions sets relevant unset conditions to Unknown state.
+func (s *PingSourceStatus) InitializeConditions() {
+	PingSourceCondSet.Manage(s).InitializeConditions()
+}
+
+// MarkSink sets the condition that the source has a sink configured.
+func (s *PingSourceStatus) MarkSink(uri *apis.URL) {
+	s.SinkURI = uri
+	if uri != nil {
+		PingSourceCondSet.Manage(s).MarkTrue(PingSourceConditionSinkProvided)
+	} else {
+		PingSourceCondSet.Manage(s).MarkFalse(PingSourceConditionSinkProvided, "SinkEmpty", "Sink has resolved to empty.")
+	}
+}
+
+// MarkNoSink sets the condition that the source does not have a sink configured.
+func (s *PingSourceStatus) MarkNoSink(reason, messageFormat string, messageA ...interface{}) {
+	PingSourceCondSet.Manage(s).MarkFalse(PingSourceConditionSinkProvided, reason, messageFormat, messageA...)
+}
+
+// PropagateDeploymentAvailability uses the availability of the provided Deployment to determine if
+// PingSourceConditionDeployed should be marked as true or false.
+func (s *PingSourceStatus) PropagateDeploymentAvailability(d *appsv1.Deployment) {
+	deploymentAvailableFound := false
+	for _, cond := range d.Status.Conditions {
+		if cond.Type == appsv1.DeploymentAvailable {
+			deploymentAvailableFound = true
+			if cond.Status == corev1.ConditionTrue {
+				PingSourceCondSet.Manage(s).MarkTrue(PingSourceConditionDeployed)
+			} else if cond.Status == corev1.ConditionFalse {
+				PingSourceCondSet.Manage(s).MarkFalse(PingSourceConditionDeployed, cond.Reason, cond.Message)
+			} else if cond.Status == corev1.ConditionUnknown {
+				PingSourceCondSet.Manage(s).MarkUnknown(PingSourceConditionDeployed, cond.Reason, cond.Message)
+			}
+		}
+	}
+	if !deploymentAvailableFound {
+		PingSourceCondSet.Manage(s).MarkUnknown(PingSourceConditionDeployed, "DeploymentUnavailable", "The Deployment '%s' is unavailable.", d.Name)
+	}
+}
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_types.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_types.go
new file mode 100644
index 000000000..45beab338
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_types.go
@@ -0,0 +1,110 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1beta2
+
+import (
+	"knative.dev/pkg/apis"
+
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/runtime"
+	duckv1 "knative.dev/pkg/apis/duck/v1"
+	"knative.dev/pkg/kmeta"
+)
+
+// +genclient
+// +genreconciler
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+// +k8s:defaulter-gen=true
+
+// PingSource is the Schema for the PingSources API.
+type PingSource struct {
+	metav1.TypeMeta   `json:",inline"`
+	metav1.ObjectMeta `json:"metadata,omitempty"`
+
+	Spec   PingSourceSpec   `json:"spec,omitempty"`
+	Status PingSourceStatus `json:"status,omitempty"`
+}
+
+// Check the interfaces that PingSource should be implementing.
+var (
+	_ runtime.Object     = (*PingSource)(nil)
+	_ kmeta.OwnerRefable = (*PingSource)(nil)
+	_ apis.Validatable   = (*PingSource)(nil)
+	_ apis.Defaultable   = (*PingSource)(nil)
+	_ apis.HasSpec       = (*PingSource)(nil)
+	_ duckv1.KRShaped    = (*PingSource)(nil)
+)
+
+// PingSourceSpec defines the desired state of the PingSource.
+type PingSourceSpec struct {
+	// inherits duck/v1 SourceSpec, which currently provides:
+	// * Sink - a reference to an object that will resolve to a domain name or
+	//   a URI directly to use as the sink.
+	// * CloudEventOverrides - defines overrides to control the output format
+	//   and modifications of the event sent to the sink.
+	duckv1.SourceSpec `json:",inline"`
+
+	// Schedule is the cron schedule. Defaults to `* * * * *`.
+	// +optional
+	Schedule string `json:"schedule,omitempty"`
+
+	// Timezone modifies the actual time relative to the specified timezone.
+	// Defaults to the system time zone.
+	// More general information about time zones: https://www.iana.org/time-zones
+	// List of valid timezone values: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+	Timezone string `json:"timezone,omitempty"`
+
+	// ContentType is the media type of Data or DataBase64. Default is empty.
+	// +optional
+	ContentType string `json:"contentType,omitempty"`
+
+	// Data is data used as the body of the event posted to the sink. Default is empty.
+	// Mutually exclusive with DataBase64.
+	// +optional
+	Data string `json:"data,omitempty"`
+
+	// DataBase64 is base64 encoded binary data used as the body of the event posted to the sink. Default is empty.
+	// Mutually exclusive with Data.
+	// +optional
+	DataBase64 string `json:"dataBase64,omitempty"`
+}
+
+// PingSourceStatus defines the observed state of PingSource.
+type PingSourceStatus struct {
+	// inherits duck/v1 SourceStatus, which currently provides:
+	// * ObservedGeneration - the 'Generation' of the Service that was last
+	//   processed by the controller.
+	// * Conditions - the latest available observations of a resource's current
+	//   state.
+	// * SinkURI - the current active sink URI that has been configured for the
+	//   Source.
+	duckv1.SourceStatus `json:",inline"`
+}
+
+// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
+
+// PingSourceList contains a list of PingSources.
+type PingSourceList struct {
+	metav1.TypeMeta `json:",inline"`
+	metav1.ListMeta `json:"metadata,omitempty"`
+	Items           []PingSource `json:"items"`
+}
+
+// GetStatus retrieves the status of the PingSource. Implements the KRShaped interface.
+func (p *PingSource) GetStatus() *duckv1.Status {
+	return &p.Status.Status
+}
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_validation.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_validation.go
new file mode 100644
index 000000000..325fe9136
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/ping_validation.go
@@ -0,0 +1,85 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1beta2
+
+import (
+	"context"
+	"encoding/base64"
+	"encoding/json"
+	"strings"
+
+	cloudevents "github.com/cloudevents/sdk-go/v2"
+
+	"github.com/robfig/cron/v3"
+	"knative.dev/pkg/apis"
+)
+
+func (c *PingSource) Validate(ctx context.Context) *apis.FieldError {
+	return c.Spec.Validate(ctx).ViaField("spec")
+}
+
+func (cs *PingSourceSpec) Validate(ctx context.Context) *apis.FieldError {
+	var errs *apis.FieldError
+
+	schedule := cs.Schedule
+	if cs.Timezone != "" {
+		schedule = "CRON_TZ=" + cs.Timezone + " " + schedule
+	}
+
+	if _, err := cron.ParseStandard(schedule); err != nil {
+		if strings.HasPrefix(err.Error(), "provided bad location") {
+			fe := apis.ErrInvalidValue(err, "timezone")
+			errs = errs.Also(fe)
+		} else {
+			fe := apis.ErrInvalidValue(err, "schedule")
+			errs = errs.Also(fe)
+		}
+	}
+
+	if fe := cs.Sink.Validate(ctx); fe != nil {
+		errs = errs.Also(fe.ViaField("sink"))
+	}
+
+	if cs.Data != "" && cs.DataBase64 != "" {
+		errs = errs.Also(apis.ErrMultipleOneOf("data", "dataBase64"))
+	} else if cs.DataBase64 != "" {
+		decoded, err := base64.StdEncoding.DecodeString(cs.DataBase64)
+		// invalid base64 string
+		if err != nil {
+			errs = errs.Also(apis.ErrInvalidValue(err, "dataBase64"))
+		} else {
+			// validate if the decoded base64 string is valid JSON
+			if cs.ContentType == cloudevents.ApplicationJSON {
+				if err := validateJSON(string(decoded)); err != nil {
+					errs = errs.Also(apis.ErrInvalidValue(err, "dataBase64"))
+				}
+			}
+		}
+	} else if cs.Data != "" && cs.ContentType == cloudevents.ApplicationJSON {
+		// validate if data is valid JSON
+		if err := validateJSON(cs.Data); err != nil {
+			errs = errs.Also(apis.ErrInvalidValue(err, "data"))
+		}
+	}
+
+	return errs
+}
+
+func validateJSON(str string) error {
+	var objmap map[string]interface{}
+	return json.Unmarshal([]byte(str), &objmap)
+}
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/register.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/register.go
new file mode 100644
index 000000000..aa10f1f69
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/register.go
@@ -0,0 +1,53 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package v1beta2
+
+import (
+	"knative.dev/eventing/pkg/apis/sources"
+
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+)
+
+// SchemeGroupVersion is group version used to register these objects
+var SchemeGroupVersion = schema.GroupVersion{Group: sources.GroupName, Version: "v1beta2"}
+
+// Kind takes an unqualified kind and returns back a Group qualified GroupKind
+func Kind(kind string) schema.GroupKind {
+	return SchemeGroupVersion.WithKind(kind).GroupKind()
+}
+
+// Resource takes an unqualified resource and returns a Group qualified GroupResource
+func Resource(resource string) schema.GroupResource {
+	return SchemeGroupVersion.WithResource(resource).GroupResource()
+}
+
+var (
+	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
+	AddToScheme   = SchemeBuilder.AddToScheme
+)
+
+// Adds the list of known types to Scheme.
+func addKnownTypes(scheme *runtime.Scheme) error {
+	scheme.AddKnownTypes(SchemeGroupVersion,
+		&PingSource{},
+		&PingSourceList{},
+	)
+	metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
+	return nil
+}
diff --git a/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/zz_generated.deepcopy.go b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/zz_generated.deepcopy.go
new file mode 100644
index 000000000..b04af992d
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/apis/sources/v1beta2/zz_generated.deepcopy.go
@@ -0,0 +1,120 @@
+// +build !ignore_autogenerated
+
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by deepcopy-gen. DO NOT EDIT.
+
+package v1beta2
+
+import (
+	runtime "k8s.io/apimachinery/pkg/runtime"
+)
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *PingSource) DeepCopyInto(out *PingSource) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
+	in.Spec.DeepCopyInto(&out.Spec)
+	in.Status.DeepCopyInto(&out.Status)
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PingSource.
+func (in *PingSource) DeepCopy() *PingSource {
+	if in == nil {
+		return nil
+	}
+	out := new(PingSource)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *PingSource) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *PingSourceList) DeepCopyInto(out *PingSourceList) {
+	*out = *in
+	out.TypeMeta = in.TypeMeta
+	in.ListMeta.DeepCopyInto(&out.ListMeta)
+	if in.Items != nil {
+		in, out := &in.Items, &out.Items
+		*out = make([]PingSource, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PingSourceList.
+func (in *PingSourceList) DeepCopy() *PingSourceList {
+	if in == nil {
+		return nil
+	}
+	out := new(PingSourceList)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
+func (in *PingSourceList) DeepCopyObject() runtime.Object {
+	if c := in.DeepCopy(); c != nil {
+		return c
+	}
+	return nil
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *PingSourceSpec) DeepCopyInto(out *PingSourceSpec) {
+	*out = *in
+	in.SourceSpec.DeepCopyInto(&out.SourceSpec)
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PingSourceSpec.
+func (in *PingSourceSpec) DeepCopy() *PingSourceSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(PingSourceSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *PingSourceStatus) DeepCopyInto(out *PingSourceStatus) {
+	*out = *in
+	in.SourceStatus.DeepCopyInto(&out.SourceStatus)
+	return
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PingSourceStatus.
+func (in *PingSourceStatus) DeepCopy() *PingSourceStatus {
+	if in == nil {
+		return nil
+	}
+	out := new(PingSourceStatus)
+	in.DeepCopyInto(out)
+	return out
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/clientset.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/clientset.go
index dde42d323..dfce533a2 100644
--- a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/clientset.go
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/clientset.go
@@ -35,6 +35,7 @@ import (
 	sourcesv1alpha1 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1alpha1"
 	sourcesv1alpha2 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1alpha2"
 	sourcesv1beta1 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta1"
+	sourcesv1beta2 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2"
 )
 
 type Interface interface {
@@ -49,6 +50,7 @@ type Interface interface {
 	SourcesV1alpha1() sourcesv1alpha1.SourcesV1alpha1Interface
 	SourcesV1alpha2() sourcesv1alpha2.SourcesV1alpha2Interface
 	SourcesV1beta1() sourcesv1beta1.SourcesV1beta1Interface
+	SourcesV1beta2() sourcesv1beta2.SourcesV1beta2Interface
 	SourcesV1() sourcesv1.SourcesV1Interface
 }
 
@@ -66,6 +68,7 @@ type Clientset struct {
 	sourcesV1alpha1  *sourcesv1alpha1.SourcesV1alpha1Client
 	sourcesV1alpha2  *sourcesv1alpha2.SourcesV1alpha2Client
 	sourcesV1beta1   *sourcesv1beta1.SourcesV1beta1Client
+	sourcesV1beta2   *sourcesv1beta2.SourcesV1beta2Client
 	sourcesV1        *sourcesv1.SourcesV1Client
 }
 
@@ -119,6 +122,11 @@ func (c *Clientset) SourcesV1beta1() sourcesv1beta1.SourcesV1beta1Interface {
 	return c.sourcesV1beta1
 }
 
+// SourcesV1beta2 retrieves the SourcesV1beta2Client
+func (c *Clientset) SourcesV1beta2() sourcesv1beta2.SourcesV1beta2Interface {
+	return c.sourcesV1beta2
+}
+
 // SourcesV1 retrieves the SourcesV1Client
 func (c *Clientset) SourcesV1() sourcesv1.SourcesV1Interface {
 	return c.sourcesV1
@@ -185,6 +193,10 @@ func NewForConfig(c *rest.Config) (*Clientset, error) {
 	if err != nil {
 		return nil, err
 	}
+	cs.sourcesV1beta2, err = sourcesv1beta2.NewForConfig(&configShallowCopy)
+	if err != nil {
+		return nil, err
+	}
 	cs.sourcesV1, err = sourcesv1.NewForConfig(&configShallowCopy)
 	if err != nil {
 		return nil, err
@@ -211,6 +223,7 @@ func NewForConfigOrDie(c *rest.Config) *Clientset {
 	cs.sourcesV1alpha1 = sourcesv1alpha1.NewForConfigOrDie(c)
 	cs.sourcesV1alpha2 = sourcesv1alpha2.NewForConfigOrDie(c)
 	cs.sourcesV1beta1 = sourcesv1beta1.NewForConfigOrDie(c)
+	cs.sourcesV1beta2 = sourcesv1beta2.NewForConfigOrDie(c)
 	cs.sourcesV1 = sourcesv1.NewForConfigOrDie(c)
 
 	cs.DiscoveryClient = discovery.NewDiscoveryClientForConfigOrDie(c)
@@ -230,6 +243,7 @@ func New(c rest.Interface) *Clientset {
 	cs.sourcesV1alpha1 = sourcesv1alpha1.New(c)
 	cs.sourcesV1alpha2 = sourcesv1alpha2.New(c)
 	cs.sourcesV1beta1 = sourcesv1beta1.New(c)
+	cs.sourcesV1beta2 = sourcesv1beta2.New(c)
 	cs.sourcesV1 = sourcesv1.New(c)
 
 	cs.DiscoveryClient = discovery.NewDiscoveryClient(c)
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/clientset_generated.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/clientset_generated.go
index 6df1029f4..953d3ed9d 100644
--- a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/clientset_generated.go
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/clientset_generated.go
@@ -47,6 +47,8 @@ import (
 	fakesourcesv1alpha2 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1alpha2/fake"
 	sourcesv1beta1 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta1"
 	fakesourcesv1beta1 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta1/fake"
+	sourcesv1beta2 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2"
+	fakesourcesv1beta2 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake"
 )
 
 // NewSimpleClientset returns a clientset that will respond with the provided objects.
@@ -146,6 +148,11 @@ func (c *Clientset) SourcesV1beta1() sourcesv1beta1.SourcesV1beta1Interface {
 	return &fakesourcesv1beta1.FakeSourcesV1beta1{Fake: &c.Fake}
 }
 
+// SourcesV1beta2 retrieves the SourcesV1beta2Client
+func (c *Clientset) SourcesV1beta2() sourcesv1beta2.SourcesV1beta2Interface {
+	return &fakesourcesv1beta2.FakeSourcesV1beta2{Fake: &c.Fake}
+}
+
 // SourcesV1 retrieves the SourcesV1Client
 func (c *Clientset) SourcesV1() sourcesv1.SourcesV1Interface {
 	return &fakesourcesv1.FakeSourcesV1{Fake: &c.Fake}
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/register.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/register.go
index 5ecd3477c..9b657a732 100644
--- a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/register.go
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/fake/register.go
@@ -35,6 +35,7 @@ import (
 	sourcesv1alpha1 "knative.dev/eventing/pkg/apis/sources/v1alpha1"
 	sourcesv1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
 	sourcesv1beta1 "knative.dev/eventing/pkg/apis/sources/v1beta1"
+	sourcesv1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
 )
 
 var scheme = runtime.NewScheme()
@@ -51,6 +52,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
 	sourcesv1alpha1.AddToScheme,
 	sourcesv1alpha2.AddToScheme,
 	sourcesv1beta1.AddToScheme,
+	sourcesv1beta2.AddToScheme,
 	sourcesv1.AddToScheme,
 }
 
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/scheme/register.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/scheme/register.go
index 5f61a7a1a..0f004eade 100644
--- a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/scheme/register.go
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/scheme/register.go
@@ -35,6 +35,7 @@ import (
 	sourcesv1alpha1 "knative.dev/eventing/pkg/apis/sources/v1alpha1"
 	sourcesv1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
 	sourcesv1beta1 "knative.dev/eventing/pkg/apis/sources/v1beta1"
+	sourcesv1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
 )
 
 var Scheme = runtime.NewScheme()
@@ -51,6 +52,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{
 	sourcesv1alpha1.AddToScheme,
 	sourcesv1alpha2.AddToScheme,
 	sourcesv1beta1.AddToScheme,
+	sourcesv1beta2.AddToScheme,
 	sourcesv1.AddToScheme,
 }
 
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/doc.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/doc.go
new file mode 100644
index 000000000..6e62cd8f1
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/doc.go
@@ -0,0 +1,20 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+// This package has the automatically generated typed clients.
+package v1beta2
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/doc.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/doc.go
new file mode 100644
index 000000000..c7f6e65ca
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/doc.go
@@ -0,0 +1,20 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+// Package fake has the automatically generated clients.
+package fake
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/fake_pingsource.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/fake_pingsource.go
new file mode 100644
index 000000000..38a5311b6
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/fake_pingsource.go
@@ -0,0 +1,142 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+package fake
+
+import (
+	"context"
+
+	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	labels "k8s.io/apimachinery/pkg/labels"
+	schema "k8s.io/apimachinery/pkg/runtime/schema"
+	types "k8s.io/apimachinery/pkg/types"
+	watch "k8s.io/apimachinery/pkg/watch"
+	testing "k8s.io/client-go/testing"
+	v1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
+)
+
+// FakePingSources implements PingSourceInterface
+type FakePingSources struct {
+	Fake *FakeSourcesV1beta2
+	ns   string
+}
+
+var pingsourcesResource = schema.GroupVersionResource{Group: "sources.knative.dev", Version: "v1beta2", Resource: "pingsources"}
+
+var pingsourcesKind = schema.GroupVersionKind{Group: "sources.knative.dev", Version: "v1beta2", Kind: "PingSource"}
+
+// Get takes name of the pingSource, and returns the corresponding pingSource object, and an error if there is any.
+func (c *FakePingSources) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.PingSource, err error) {
+	obj, err := c.Fake.
+		Invokes(testing.NewGetAction(pingsourcesResource, c.ns, name), &v1beta2.PingSource{})
+
+	if obj == nil {
+		return nil, err
+	}
+	return obj.(*v1beta2.PingSource), err
+}
+
+// List takes label and field selectors, and returns the list of PingSources that match those selectors.
+func (c *FakePingSources) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.PingSourceList, err error) {
+	obj, err := c.Fake.
+		Invokes(testing.NewListAction(pingsourcesResource, pingsourcesKind, c.ns, opts), &v1beta2.PingSourceList{})
+
+	if obj == nil {
+		return nil, err
+	}
+
+	label, _, _ := testing.ExtractFromListOptions(opts)
+	if label == nil {
+		label = labels.Everything()
+	}
+	list := &v1beta2.PingSourceList{ListMeta: obj.(*v1beta2.PingSourceList).ListMeta}
+	for _, item := range obj.(*v1beta2.PingSourceList).Items {
+		if label.Matches(labels.Set(item.Labels)) {
+			list.Items = append(list.Items, item)
+		}
+	}
+	return list, err
+}
+
+// Watch returns a watch.Interface that watches the requested pingSources.
+func (c *FakePingSources) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
+	return c.Fake.
+		InvokesWatch(testing.NewWatchAction(pingsourcesResource, c.ns, opts))
+
+}
+
+// Create takes the representation of a pingSource and creates it.  Returns the server's representation of the pingSource, and an error, if there is any.
+func (c *FakePingSources) Create(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.CreateOptions) (result *v1beta2.PingSource, err error) {
+	obj, err := c.Fake.
+		Invokes(testing.NewCreateAction(pingsourcesResource, c.ns, pingSource), &v1beta2.PingSource{})
+
+	if obj == nil {
+		return nil, err
+	}
+	return obj.(*v1beta2.PingSource), err
+}
+
+// Update takes the representation of a pingSource and updates it. Returns the server's representation of the pingSource, and an error, if there is any.
+func (c *FakePingSources) Update(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.UpdateOptions) (result *v1beta2.PingSource, err error) {
+	obj, err := c.Fake.
+		Invokes(testing.NewUpdateAction(pingsourcesResource, c.ns, pingSource), &v1beta2.PingSource{})
+
+	if obj == nil {
+		return nil, err
+	}
+	return obj.(*v1beta2.PingSource), err
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+func (c *FakePingSources) UpdateStatus(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.UpdateOptions) (*v1beta2.PingSource, error) {
+	obj, err := c.Fake.
+		Invokes(testing.NewUpdateSubresourceAction(pingsourcesResource, "status", c.ns, pingSource), &v1beta2.PingSource{})
+
+	if obj == nil {
+		return nil, err
+	}
+	return obj.(*v1beta2.PingSource), err
+}
+
+// Delete takes name of the pingSource and deletes it. Returns an error if one occurs.
+func (c *FakePingSources) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
+	_, err := c.Fake.
+		Invokes(testing.NewDeleteAction(pingsourcesResource, c.ns, name), &v1beta2.PingSource{})
+
+	return err
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *FakePingSources) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
+	action := testing.NewDeleteCollectionAction(pingsourcesResource, c.ns, listOpts)
+
+	_, err := c.Fake.Invokes(action, &v1beta2.PingSourceList{})
+	return err
+}
+
+// Patch applies the patch and returns the patched pingSource.
+func (c *FakePingSources) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.PingSource, err error) {
+	obj, err := c.Fake.
+		Invokes(testing.NewPatchSubresourceAction(pingsourcesResource, c.ns, name, pt, data, subresources...), &v1beta2.PingSource{})
+
+	if obj == nil {
+		return nil, err
+	}
+	return obj.(*v1beta2.PingSource), err
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/fake_sources_client.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/fake_sources_client.go
new file mode 100644
index 000000000..53382bb2b
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake/fake_sources_client.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+package fake
+
+import (
+	rest "k8s.io/client-go/rest"
+	testing "k8s.io/client-go/testing"
+	v1beta2 "knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2"
+)
+
+type FakeSourcesV1beta2 struct {
+	*testing.Fake
+}
+
+func (c *FakeSourcesV1beta2) PingSources(namespace string) v1beta2.PingSourceInterface {
+	return &FakePingSources{c, namespace}
+}
+
+// RESTClient returns a RESTClient that is used to communicate
+// with API server by this client implementation.
+func (c *FakeSourcesV1beta2) RESTClient() rest.Interface {
+	var ret *rest.RESTClient
+	return ret
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/generated_expansion.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/generated_expansion.go
new file mode 100644
index 000000000..6b530e5b3
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/generated_expansion.go
@@ -0,0 +1,21 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+package v1beta2
+
+type PingSourceExpansion interface{}
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/pingsource.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/pingsource.go
new file mode 100644
index 000000000..76d9b4fce
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/pingsource.go
@@ -0,0 +1,195 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+package v1beta2
+
+import (
+	"context"
+	"time"
+
+	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	types "k8s.io/apimachinery/pkg/types"
+	watch "k8s.io/apimachinery/pkg/watch"
+	rest "k8s.io/client-go/rest"
+	v1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
+	scheme "knative.dev/eventing/pkg/client/clientset/versioned/scheme"
+)
+
+// PingSourcesGetter has a method to return a PingSourceInterface.
+// A group's client should implement this interface.
+type PingSourcesGetter interface {
+	PingSources(namespace string) PingSourceInterface
+}
+
+// PingSourceInterface has methods to work with PingSource resources.
+type PingSourceInterface interface {
+	Create(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.CreateOptions) (*v1beta2.PingSource, error)
+	Update(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.UpdateOptions) (*v1beta2.PingSource, error)
+	UpdateStatus(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.UpdateOptions) (*v1beta2.PingSource, error)
+	Delete(ctx context.Context, name string, opts v1.DeleteOptions) error
+	DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error
+	Get(ctx context.Context, name string, opts v1.GetOptions) (*v1beta2.PingSource, error)
+	List(ctx context.Context, opts v1.ListOptions) (*v1beta2.PingSourceList, error)
+	Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error)
+	Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.PingSource, err error)
+	PingSourceExpansion
+}
+
+// pingSources implements PingSourceInterface
+type pingSources struct {
+	client rest.Interface
+	ns     string
+}
+
+// newPingSources returns a PingSources
+func newPingSources(c *SourcesV1beta2Client, namespace string) *pingSources {
+	return &pingSources{
+		client: c.RESTClient(),
+		ns:     namespace,
+	}
+}
+
+// Get takes name of the pingSource, and returns the corresponding pingSource object, and an error if there is any.
+func (c *pingSources) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1beta2.PingSource, err error) {
+	result = &v1beta2.PingSource{}
+	err = c.client.Get().
+		Namespace(c.ns).
+		Resource("pingsources").
+		Name(name).
+		VersionedParams(&options, scheme.ParameterCodec).
+		Do(ctx).
+		Into(result)
+	return
+}
+
+// List takes label and field selectors, and returns the list of PingSources that match those selectors.
+func (c *pingSources) List(ctx context.Context, opts v1.ListOptions) (result *v1beta2.PingSourceList, err error) {
+	var timeout time.Duration
+	if opts.TimeoutSeconds != nil {
+		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
+	}
+	result = &v1beta2.PingSourceList{}
+	err = c.client.Get().
+		Namespace(c.ns).
+		Resource("pingsources").
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Timeout(timeout).
+		Do(ctx).
+		Into(result)
+	return
+}
+
+// Watch returns a watch.Interface that watches the requested pingSources.
+func (c *pingSources) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) {
+	var timeout time.Duration
+	if opts.TimeoutSeconds != nil {
+		timeout = time.Duration(*opts.TimeoutSeconds) * time.Second
+	}
+	opts.Watch = true
+	return c.client.Get().
+		Namespace(c.ns).
+		Resource("pingsources").
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Timeout(timeout).
+		Watch(ctx)
+}
+
+// Create takes the representation of a pingSource and creates it.  Returns the server's representation of the pingSource, and an error, if there is any.
+func (c *pingSources) Create(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.CreateOptions) (result *v1beta2.PingSource, err error) {
+	result = &v1beta2.PingSource{}
+	err = c.client.Post().
+		Namespace(c.ns).
+		Resource("pingsources").
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Body(pingSource).
+		Do(ctx).
+		Into(result)
+	return
+}
+
+// Update takes the representation of a pingSource and updates it. Returns the server's representation of the pingSource, and an error, if there is any.
+func (c *pingSources) Update(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.UpdateOptions) (result *v1beta2.PingSource, err error) {
+	result = &v1beta2.PingSource{}
+	err = c.client.Put().
+		Namespace(c.ns).
+		Resource("pingsources").
+		Name(pingSource.Name).
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Body(pingSource).
+		Do(ctx).
+		Into(result)
+	return
+}
+
+// UpdateStatus was generated because the type contains a Status member.
+// Add a +genclient:noStatus comment above the type to avoid generating UpdateStatus().
+func (c *pingSources) UpdateStatus(ctx context.Context, pingSource *v1beta2.PingSource, opts v1.UpdateOptions) (result *v1beta2.PingSource, err error) {
+	result = &v1beta2.PingSource{}
+	err = c.client.Put().
+		Namespace(c.ns).
+		Resource("pingsources").
+		Name(pingSource.Name).
+		SubResource("status").
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Body(pingSource).
+		Do(ctx).
+		Into(result)
+	return
+}
+
+// Delete takes name of the pingSource and deletes it. Returns an error if one occurs.
+func (c *pingSources) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error {
+	return c.client.Delete().
+		Namespace(c.ns).
+		Resource("pingsources").
+		Name(name).
+		Body(&opts).
+		Do(ctx).
+		Error()
+}
+
+// DeleteCollection deletes a collection of objects.
+func (c *pingSources) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error {
+	var timeout time.Duration
+	if listOpts.TimeoutSeconds != nil {
+		timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second
+	}
+	return c.client.Delete().
+		Namespace(c.ns).
+		Resource("pingsources").
+		VersionedParams(&listOpts, scheme.ParameterCodec).
+		Timeout(timeout).
+		Body(&opts).
+		Do(ctx).
+		Error()
+}
+
+// Patch applies the patch and returns the patched pingSource.
+func (c *pingSources) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta2.PingSource, err error) {
+	result = &v1beta2.PingSource{}
+	err = c.client.Patch(pt).
+		Namespace(c.ns).
+		Resource("pingsources").
+		Name(name).
+		SubResource(subresources...).
+		VersionedParams(&opts, scheme.ParameterCodec).
+		Body(data).
+		Do(ctx).
+		Into(result)
+	return
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/sources_client.go b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/sources_client.go
new file mode 100644
index 000000000..4a94b7305
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/sources_client.go
@@ -0,0 +1,89 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by client-gen. DO NOT EDIT.
+
+package v1beta2
+
+import (
+	rest "k8s.io/client-go/rest"
+	v1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
+	"knative.dev/eventing/pkg/client/clientset/versioned/scheme"
+)
+
+type SourcesV1beta2Interface interface {
+	RESTClient() rest.Interface
+	PingSourcesGetter
+}
+
+// SourcesV1beta2Client is used to interact with features provided by the sources.knative.dev group.
+type SourcesV1beta2Client struct {
+	restClient rest.Interface
+}
+
+func (c *SourcesV1beta2Client) PingSources(namespace string) PingSourceInterface {
+	return newPingSources(c, namespace)
+}
+
+// NewForConfig creates a new SourcesV1beta2Client for the given config.
+func NewForConfig(c *rest.Config) (*SourcesV1beta2Client, error) {
+	config := *c
+	if err := setConfigDefaults(&config); err != nil {
+		return nil, err
+	}
+	client, err := rest.RESTClientFor(&config)
+	if err != nil {
+		return nil, err
+	}
+	return &SourcesV1beta2Client{client}, nil
+}
+
+// NewForConfigOrDie creates a new SourcesV1beta2Client for the given config and
+// panics if there is an error in the config.
+func NewForConfigOrDie(c *rest.Config) *SourcesV1beta2Client {
+	client, err := NewForConfig(c)
+	if err != nil {
+		panic(err)
+	}
+	return client
+}
+
+// New creates a new SourcesV1beta2Client for the given RESTClient.
+func New(c rest.Interface) *SourcesV1beta2Client {
+	return &SourcesV1beta2Client{c}
+}
+
+func setConfigDefaults(config *rest.Config) error {
+	gv := v1beta2.SchemeGroupVersion
+	config.GroupVersion = &gv
+	config.APIPath = "/apis"
+	config.NegotiatedSerializer = scheme.Codecs.WithoutConversion()
+
+	if config.UserAgent == "" {
+		config.UserAgent = rest.DefaultKubernetesUserAgent()
+	}
+
+	return nil
+}
+
+// RESTClient returns a RESTClient that is used to communicate
+// with API server by this client implementation.
+func (c *SourcesV1beta2Client) RESTClient() rest.Interface {
+	if c == nil {
+		return nil
+	}
+	return c.restClient
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/informers/externalversions/generic.go b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/generic.go
index c0d877832..411984acc 100644
--- a/vendor/knative.dev/eventing/pkg/client/informers/externalversions/generic.go
+++ b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/generic.go
@@ -34,6 +34,7 @@ import (
 	sourcesv1alpha1 "knative.dev/eventing/pkg/apis/sources/v1alpha1"
 	v1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
 	sourcesv1beta1 "knative.dev/eventing/pkg/apis/sources/v1beta1"
+	v1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
 )
 
 // GenericInformer is type of SharedIndexInformer which will locate and delegate to other
@@ -142,6 +143,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource
 	case sourcesv1beta1.SchemeGroupVersion.WithResource("sinkbindings"):
 		return &genericInformer{resource: resource.GroupResource(), informer: f.Sources().V1beta1().SinkBindings().Informer()}, nil
 
+		// Group=sources.knative.dev, Version=v1beta2
+	case v1beta2.SchemeGroupVersion.WithResource("pingsources"):
+		return &genericInformer{resource: resource.GroupResource(), informer: f.Sources().V1beta2().PingSources().Informer()}, nil
+
 	}
 
 	return nil, fmt.Errorf("no informer found for %v", resource)
diff --git a/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/interface.go b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/interface.go
index e51d73612..c6432a538 100644
--- a/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/interface.go
+++ b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/interface.go
@@ -24,6 +24,7 @@ import (
 	v1alpha1 "knative.dev/eventing/pkg/client/informers/externalversions/sources/v1alpha1"
 	v1alpha2 "knative.dev/eventing/pkg/client/informers/externalversions/sources/v1alpha2"
 	v1beta1 "knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta1"
+	v1beta2 "knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2"
 )
 
 // Interface provides access to each of this group's versions.
@@ -34,6 +35,8 @@ type Interface interface {
 	V1alpha2() v1alpha2.Interface
 	// V1beta1 provides access to shared informers for resources in V1beta1.
 	V1beta1() v1beta1.Interface
+	// V1beta2 provides access to shared informers for resources in V1beta2.
+	V1beta2() v1beta2.Interface
 	// V1 provides access to shared informers for resources in V1.
 	V1() v1.Interface
 }
@@ -64,6 +67,11 @@ func (g *group) V1beta1() v1beta1.Interface {
 	return v1beta1.New(g.factory, g.namespace, g.tweakListOptions)
 }
 
+// V1beta2 returns a new v1beta2.Interface.
+func (g *group) V1beta2() v1beta2.Interface {
+	return v1beta2.New(g.factory, g.namespace, g.tweakListOptions)
+}
+
 // V1 returns a new v1.Interface.
 func (g *group) V1() v1.Interface {
 	return v1.New(g.factory, g.namespace, g.tweakListOptions)
diff --git a/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2/interface.go b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2/interface.go
new file mode 100644
index 000000000..0bd4b25c7
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2/interface.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by informer-gen. DO NOT EDIT.
+
+package v1beta2
+
+import (
+	internalinterfaces "knative.dev/eventing/pkg/client/informers/externalversions/internalinterfaces"
+)
+
+// Interface provides access to all the informers in this group version.
+type Interface interface {
+	// PingSources returns a PingSourceInformer.
+	PingSources() PingSourceInformer
+}
+
+type version struct {
+	factory          internalinterfaces.SharedInformerFactory
+	namespace        string
+	tweakListOptions internalinterfaces.TweakListOptionsFunc
+}
+
+// New returns a new Interface.
+func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface {
+	return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions}
+}
+
+// PingSources returns a PingSourceInformer.
+func (v *version) PingSources() PingSourceInformer {
+	return &pingSourceInformer{factory: v.factory, namespace: v.namespace, tweakListOptions: v.tweakListOptions}
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2/pingsource.go b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2/pingsource.go
new file mode 100644
index 000000000..9fa7264e8
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2/pingsource.go
@@ -0,0 +1,90 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by informer-gen. DO NOT EDIT.
+
+package v1beta2
+
+import (
+	"context"
+	time "time"
+
+	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	runtime "k8s.io/apimachinery/pkg/runtime"
+	watch "k8s.io/apimachinery/pkg/watch"
+	cache "k8s.io/client-go/tools/cache"
+	sourcesv1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
+	versioned "knative.dev/eventing/pkg/client/clientset/versioned"
+	internalinterfaces "knative.dev/eventing/pkg/client/informers/externalversions/internalinterfaces"
+	v1beta2 "knative.dev/eventing/pkg/client/listers/sources/v1beta2"
+)
+
+// PingSourceInformer provides access to a shared informer and lister for
+// PingSources.
+type PingSourceInformer interface {
+	Informer() cache.SharedIndexInformer
+	Lister() v1beta2.PingSourceLister
+}
+
+type pingSourceInformer struct {
+	factory          internalinterfaces.SharedInformerFactory
+	tweakListOptions internalinterfaces.TweakListOptionsFunc
+	namespace        string
+}
+
+// NewPingSourceInformer constructs a new informer for PingSource type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewPingSourceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer {
+	return NewFilteredPingSourceInformer(client, namespace, resyncPeriod, indexers, nil)
+}
+
+// NewFilteredPingSourceInformer constructs a new informer for PingSource type.
+// Always prefer using an informer factory to get a shared informer instead of getting an independent
+// one. This reduces memory footprint and number of connections to the server.
+func NewFilteredPingSourceInformer(client versioned.Interface, namespace string, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer {
+	return cache.NewSharedIndexInformer(
+		&cache.ListWatch{
+			ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
+				if tweakListOptions != nil {
+					tweakListOptions(&options)
+				}
+				return client.SourcesV1beta2().PingSources(namespace).List(context.TODO(), options)
+			},
+			WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
+				if tweakListOptions != nil {
+					tweakListOptions(&options)
+				}
+				return client.SourcesV1beta2().PingSources(namespace).Watch(context.TODO(), options)
+			},
+		},
+		&sourcesv1beta2.PingSource{},
+		resyncPeriod,
+		indexers,
+	)
+}
+
+func (f *pingSourceInformer) defaultInformer(client versioned.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer {
+	return NewFilteredPingSourceInformer(client, f.namespace, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions)
+}
+
+func (f *pingSourceInformer) Informer() cache.SharedIndexInformer {
+	return f.factory.InformerFor(&sourcesv1beta2.PingSource{}, f.defaultInformer)
+}
+
+func (f *pingSourceInformer) Lister() v1beta2.PingSourceLister {
+	return v1beta2.NewPingSourceLister(f.Informer().GetIndexer())
+}
diff --git a/vendor/knative.dev/eventing/pkg/client/listers/sources/v1beta2/expansion_generated.go b/vendor/knative.dev/eventing/pkg/client/listers/sources/v1beta2/expansion_generated.go
new file mode 100644
index 000000000..aa9fdf32c
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/listers/sources/v1beta2/expansion_generated.go
@@ -0,0 +1,27 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by lister-gen. DO NOT EDIT.
+
+package v1beta2
+
+// PingSourceListerExpansion allows custom methods to be added to
+// PingSourceLister.
+type PingSourceListerExpansion interface{}
+
+// PingSourceNamespaceListerExpansion allows custom methods to be added to
+// PingSourceNamespaceLister.
+type PingSourceNamespaceListerExpansion interface{}
diff --git a/vendor/knative.dev/eventing/pkg/client/listers/sources/v1beta2/pingsource.go b/vendor/knative.dev/eventing/pkg/client/listers/sources/v1beta2/pingsource.go
new file mode 100644
index 000000000..62bf46835
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/client/listers/sources/v1beta2/pingsource.go
@@ -0,0 +1,94 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+// Code generated by lister-gen. DO NOT EDIT.
+
+package v1beta2
+
+import (
+	"k8s.io/apimachinery/pkg/api/errors"
+	"k8s.io/apimachinery/pkg/labels"
+	"k8s.io/client-go/tools/cache"
+	v1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
+)
+
+// PingSourceLister helps list PingSources.
+type PingSourceLister interface {
+	// List lists all PingSources in the indexer.
+	List(selector labels.Selector) (ret []*v1beta2.PingSource, err error)
+	// PingSources returns an object that can list and get PingSources.
+	PingSources(namespace string) PingSourceNamespaceLister
+	PingSourceListerExpansion
+}
+
+// pingSourceLister implements the PingSourceLister interface.
+type pingSourceLister struct {
+	indexer cache.Indexer
+}
+
+// NewPingSourceLister returns a new PingSourceLister.
+func NewPingSourceLister(indexer cache.Indexer) PingSourceLister {
+	return &pingSourceLister{indexer: indexer}
+}
+
+// List lists all PingSources in the indexer.
+func (s *pingSourceLister) List(selector labels.Selector) (ret []*v1beta2.PingSource, err error) {
+	err = cache.ListAll(s.indexer, selector, func(m interface{}) {
+		ret = append(ret, m.(*v1beta2.PingSource))
+	})
+	return ret, err
+}
+
+// PingSources returns an object that can list and get PingSources.
+func (s *pingSourceLister) PingSources(namespace string) PingSourceNamespaceLister {
+	return pingSourceNamespaceLister{indexer: s.indexer, namespace: namespace}
+}
+
+// PingSourceNamespaceLister helps list and get PingSources.
+type PingSourceNamespaceLister interface {
+	// List lists all PingSources in the indexer for a given namespace.
+	List(selector labels.Selector) (ret []*v1beta2.PingSource, err error)
+	// Get retrieves the PingSource from the indexer for a given namespace and name.
+	Get(name string) (*v1beta2.PingSource, error)
+	PingSourceNamespaceListerExpansion
+}
+
+// pingSourceNamespaceLister implements the PingSourceNamespaceLister
+// interface.
+type pingSourceNamespaceLister struct {
+	indexer   cache.Indexer
+	namespace string
+}
+
+// List lists all PingSources in the indexer for a given namespace.
+func (s pingSourceNamespaceLister) List(selector labels.Selector) (ret []*v1beta2.PingSource, err error) {
+	err = cache.ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) {
+		ret = append(ret, m.(*v1beta2.PingSource))
+	})
+	return ret, err
+}
+
+// Get retrieves the PingSource from the indexer for a given namespace and name.
+func (s pingSourceNamespaceLister) Get(name string) (*v1beta2.PingSource, error) {
+	obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name)
+	if err != nil {
+		return nil, err
+	}
+	if !exists {
+		return nil, errors.NewNotFound(v1beta2.Resource("pingsource"), name)
+	}
+	return obj.(*v1beta2.PingSource), nil
+}
diff --git a/vendor/knative.dev/pkg/hack/update-k8s-deps.sh b/vendor/knative.dev/pkg/hack/update-k8s-deps.sh
index fc1fc4d4c..d97170f1c 100644
--- a/vendor/knative.dev/pkg/hack/update-k8s-deps.sh
+++ b/vendor/knative.dev/pkg/hack/update-k8s-deps.sh
@@ -18,24 +18,12 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
-export GO111MODULE=on
-export K8S_VERSION="$1"
+source $(dirname "$0")/../vendor/knative.dev/hack/library.sh
 
-K8S_DEPS=(
-  "k8s.io/api"
-  "k8s.io/apiextensions-apiserver"
-  "k8s.io/apimachinery"
-  "k8s.io/code-generator"
-  "k8s.io/client-go"
-)
-
-
-for dep in "${K8S_DEPS[@]}"
-do
-  go mod edit \
-    -require="${dep}@${K8S_VERSION}" \
-    -replace="${dep}=${dep}@${K8S_VERSION}"
-done
+run_go_tool knative.dev/test-infra/buoy \
+  buoy float ${REPO_ROOT_DIR}/go.mod \
+    --release "$1" --domain k8s.io --ruleset=Release \
+    | xargs -n1 -t go get -d
 
 ./hack/update-deps.sh
 
diff --git a/vendor/knative.dev/pkg/network/h2c.go b/vendor/knative.dev/pkg/network/h2c.go
index 02c5be413..73fabee97 100644
--- a/vendor/knative.dev/pkg/network/h2c.go
+++ b/vendor/knative.dev/pkg/network/h2c.go
@@ -17,10 +17,10 @@ limitations under the License.
 package network
 
 import (
+	"context"
 	"crypto/tls"
 	"net"
 	"net/http"
-	"time"
 
 	"golang.org/x/net/http2"
 	"golang.org/x/net/http2/h2c"
@@ -43,13 +43,9 @@ func NewServer(addr string, h http.Handler) *http.Server {
 func NewH2CTransport() http.RoundTripper {
 	return &http2.Transport{
 		AllowHTTP: true,
-		DialTLS: func(netw, addr string, cfg *tls.Config) (net.Conn, error) {
-			d := &net.Dialer{
-				Timeout:   DefaultConnTimeout,
-				KeepAlive: 5 * time.Second,
-				DualStack: true,
-			}
-			return d.Dial(netw, addr)
+		DialTLS: func(netw, addr string, _ *tls.Config) (net.Conn, error) {
+			return DialWithBackOff(context.Background(),
+				netw, addr)
 		},
 	}
 }
diff --git a/vendor/knative.dev/pkg/network/network.go b/vendor/knative.dev/pkg/network/network.go
index 93e63399d..b2ac63ce7 100644
--- a/vendor/knative.dev/pkg/network/network.go
+++ b/vendor/knative.dev/pkg/network/network.go
@@ -24,19 +24,6 @@ import (
 )
 
 const (
-	// DefaultConnTimeout specifies a short default connection timeout
-	// to avoid hitting the issue fixed in
-	// https://github.com/kubernetes/kubernetes/pull/72534 but only
-	// available after Kubernetes 1.14.
-	//
-	// Our connections are usually between pods in the same cluster
-	// like activator <-> queue-proxy, or even between containers
-	// within the same pod queue-proxy <-> user-container, so a
-	// smaller connect timeout would be justifiable.
-	//
-	// We should consider exposing this as a configuration.
-	DefaultConnTimeout = 200 * time.Millisecond
-
 	// DefaultDrainTimeout is the time that Knative components on the data
 	// path will wait before shutting down server, but after starting to fail
 	// readiness probes to ensure network layer propagation and so that no requests
diff --git a/vendor/modules.txt b/vendor/modules.txt
index e7d548dd0..2651a3459 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -663,7 +663,7 @@ honnef.co/go/tools/staticcheck
 honnef.co/go/tools/stylecheck
 honnef.co/go/tools/unused
 honnef.co/go/tools/version
-# k8s.io/api v0.18.8 => k8s.io/api v0.18.8
+# k8s.io/api v0.18.12 => k8s.io/api v0.18.8
 ## explicit
 k8s.io/api/admission/v1
 k8s.io/api/admissionregistration/v1
@@ -706,7 +706,7 @@ k8s.io/api/settings/v1alpha1
 k8s.io/api/storage/v1
 k8s.io/api/storage/v1alpha1
 k8s.io/api/storage/v1beta1
-# k8s.io/apiextensions-apiserver v0.18.8 => k8s.io/apiextensions-apiserver v0.18.8
+# k8s.io/apiextensions-apiserver v0.18.12 => k8s.io/apiextensions-apiserver v0.18.8
 ## explicit
 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions
 k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1
@@ -987,7 +987,7 @@ k8s.io/client-go/util/jsonpath
 k8s.io/client-go/util/keyutil
 k8s.io/client-go/util/retry
 k8s.io/client-go/util/workqueue
-# k8s.io/code-generator v0.18.8 => k8s.io/code-generator v0.18.8
+# k8s.io/code-generator v0.18.12 => k8s.io/code-generator v0.18.8
 k8s.io/code-generator
 k8s.io/code-generator/cmd/client-gen
 k8s.io/code-generator/cmd/client-gen/args
@@ -1049,7 +1049,7 @@ k8s.io/utils/buffer
 k8s.io/utils/integer
 k8s.io/utils/pointer
 k8s.io/utils/trace
-# knative.dev/eventing v0.19.1-0.20201117061051-47ee6e3586ca
+# knative.dev/eventing v0.19.1-0.20201117202251-be93f9495205
 ## explicit
 knative.dev/eventing/pkg/apis/config
 knative.dev/eventing/pkg/apis/configs
@@ -1073,6 +1073,7 @@ knative.dev/eventing/pkg/apis/sources/v1
 knative.dev/eventing/pkg/apis/sources/v1alpha1
 knative.dev/eventing/pkg/apis/sources/v1alpha2
 knative.dev/eventing/pkg/apis/sources/v1beta1
+knative.dev/eventing/pkg/apis/sources/v1beta2
 knative.dev/eventing/pkg/client/clientset/versioned
 knative.dev/eventing/pkg/client/clientset/versioned/fake
 knative.dev/eventing/pkg/client/clientset/versioned/scheme
@@ -1098,6 +1099,8 @@ knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1alpha2
 knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1alpha2/fake
 knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta1
 knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta1/fake
+knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2
+knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake
 knative.dev/eventing/pkg/client/informers/externalversions
 knative.dev/eventing/pkg/client/informers/externalversions/configs
 knative.dev/eventing/pkg/client/informers/externalversions/configs/v1alpha1
@@ -1116,6 +1119,7 @@ knative.dev/eventing/pkg/client/informers/externalversions/sources/v1
 knative.dev/eventing/pkg/client/informers/externalversions/sources/v1alpha1
 knative.dev/eventing/pkg/client/informers/externalversions/sources/v1alpha2
 knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta1
+knative.dev/eventing/pkg/client/informers/externalversions/sources/v1beta2
 knative.dev/eventing/pkg/client/injection/client
 knative.dev/eventing/pkg/client/injection/client/fake
 knative.dev/eventing/pkg/client/injection/informers/eventing/v1/broker
@@ -1139,6 +1143,7 @@ knative.dev/eventing/pkg/client/listers/sources/v1
 knative.dev/eventing/pkg/client/listers/sources/v1alpha1
 knative.dev/eventing/pkg/client/listers/sources/v1alpha2
 knative.dev/eventing/pkg/client/listers/sources/v1beta1
+knative.dev/eventing/pkg/client/listers/sources/v1beta2
 knative.dev/eventing/pkg/kncloudevents
 knative.dev/eventing/pkg/logconfig
 knative.dev/eventing/pkg/reconciler/sugar
@@ -1177,7 +1182,7 @@ knative.dev/eventing/test/test_images/request-sender
 # knative.dev/hack v0.0.0-20201112185459-01a34c573bd8
 ## explicit
 knative.dev/hack
-# knative.dev/pkg v0.0.0-20201117020252-ab1a398f669c
+# knative.dev/pkg v0.0.0-20201117221452-0fccc54273ed
 ## explicit
 knative.dev/pkg/apis
 knative.dev/pkg/apis/duck


Test patch:
diff --git a/vendor/knative.dev/eventing/pkg/reconciler/testing/listers.go b/vendor/knative.dev/eventing/pkg/reconciler/testing/listers.go
index 8e2692e03..2101f974a 100644
--- a/vendor/knative.dev/eventing/pkg/reconciler/testing/listers.go
+++ b/vendor/knative.dev/eventing/pkg/reconciler/testing/listers.go
@@ -38,6 +38,7 @@ import (
 	sourcesv1alpha1 "knative.dev/eventing/pkg/apis/sources/v1alpha1"
 	sourcesv1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
 	sourcesv1beta1 "knative.dev/eventing/pkg/apis/sources/v1beta1"
+	sourcesv1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
 	fakeeventingclientset "knative.dev/eventing/pkg/client/clientset/versioned/fake"
 	configslisters "knative.dev/eventing/pkg/client/listers/configs/v1alpha1"
 	eventingv1beta1listers "knative.dev/eventing/pkg/client/listers/eventing/v1beta1"
@@ -46,6 +47,7 @@ import (
 	sourcelisters "knative.dev/eventing/pkg/client/listers/sources/v1alpha1"
 	sourcev1alpha2listers "knative.dev/eventing/pkg/client/listers/sources/v1alpha2"
 	sourcev1beta1listers "knative.dev/eventing/pkg/client/listers/sources/v1beta1"
+	sourcev1beta2listers "knative.dev/eventing/pkg/client/listers/sources/v1beta2"
 	duckv1 "knative.dev/pkg/apis/duck/v1"
 	"knative.dev/pkg/reconciler/testing"
 )
@@ -168,6 +170,10 @@ func (l *Listers) GetPingSourceV1beta1Lister() sourcev1beta1listers.PingSourceLi
 	return sourcev1beta1listers.NewPingSourceLister(l.indexerFor(&sourcesv1beta1.PingSource{}))
 }
 
+func (l *Listers) GetPingSourceV1beta2Lister() sourcev1beta2listers.PingSourceLister {
+	return sourcev1beta2listers.NewPingSourceLister(l.indexerFor(&sourcesv1beta2.PingSource{}))
+}
+
 func (l *Listers) GetSinkBindingV1alpha2Lister() sourcev1alpha2listers.SinkBindingLister {
 	return sourcev1alpha2listers.NewSinkBindingLister(l.indexerFor(&sourcesv1alpha2.SinkBinding{}))
 }
diff --git a/vendor/knative.dev/eventing/pkg/reconciler/testing/pingsource.go b/vendor/knative.dev/eventing/pkg/reconciler/testing/pingsource.go
deleted file mode 100644
index dec22bf5c..000000000
--- a/vendor/knative.dev/eventing/pkg/reconciler/testing/pingsource.go
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
-Copyright 2020 The Knative Authors
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package testing
-
-import (
-	"context"
-	"time"
-
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/types"
-	"knative.dev/pkg/apis"
-	duckv1 "knative.dev/pkg/apis/duck/v1"
-
-	"knative.dev/eventing/pkg/apis/sources/v1alpha2"
-	"knative.dev/eventing/pkg/apis/sources/v1beta1"
-)
-
-// PingSourceV1A2Option enables further configuration of a CronJob.
-type PingSourceV1A2Option func(*v1alpha2.PingSource)
-
-// PingSourceV1B1Option enables further configuration of a CronJob.
-type PingSourceV1B1Option func(*v1beta1.PingSource)
-
-// NewPingSourceV1Alpha2 creates a PingSource with PingSourceOption.
-func NewPingSourceV1Alpha2(name, namespace string, o ...PingSourceV1A2Option) *v1alpha2.PingSource {
-	c := &v1alpha2.PingSource{
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      name,
-			Namespace: namespace,
-		},
-	}
-	for _, opt := range o {
-		opt(c)
-	}
-	c.SetDefaults(context.Background()) // TODO: We should add defaults and validation.
-	return c
-}
-
-// NewPingSourceV1Beta1 creates a PingSource with PingSourceOption.
-func NewPingSourceV1Beta1(name, namespace string, o ...PingSourceV1B1Option) *v1beta1.PingSource {
-	c := &v1beta1.PingSource{
-		ObjectMeta: metav1.ObjectMeta{
-			Name:      name,
-			Namespace: namespace,
-		},
-	}
-	for _, opt := range o {
-		opt(c)
-	}
-	c.SetDefaults(context.Background()) // TODO: We should add defaults and validation.
-	return c
-}
-
-func WithPingSourceV1A2UID(uid string) PingSourceV1A2Option {
-	return func(c *v1alpha2.PingSource) {
-		c.UID = types.UID(uid)
-	}
-}
-
-func WithInitPingSourceV1A2Conditions(s *v1alpha2.PingSource) {
-	s.Status.InitializeConditions()
-}
-
-func WithValidPingSourceV1A2Schedule(s *v1alpha2.PingSource) {
-	s.Status.MarkSchedule()
-}
-
-func WithPingSourceV1A2SinkNotFound(s *v1alpha2.PingSource) {
-	s.Status.MarkNoSink("NotFound", "")
-}
-
-func WithPingSourceV1A2Sink(uri *apis.URL) PingSourceV1A2Option {
-	return func(s *v1alpha2.PingSource) {
-		s.Status.MarkSink(uri)
-	}
-}
-
-func WithPingSourceV1A2NotDeployed(name string) PingSourceV1A2Option {
-	return func(s *v1alpha2.PingSource) {
-		s.Status.PropagateDeploymentAvailability(NewDeployment(name, "any"))
-	}
-}
-
-func WithPingSourceV1A2Deployed(s *v1alpha2.PingSource) {
-	s.Status.PropagateDeploymentAvailability(NewDeployment("any", "any", WithDeploymentAvailable()))
-}
-
-func WithPingSourceV1A2CloudEventAttributes(s *v1alpha2.PingSource) {
-	s.Status.CloudEventAttributes = []duckv1.CloudEventAttributes{{
-		Type:   v1alpha2.PingSourceEventType,
-		Source: v1alpha2.PingSourceSource(s.Namespace, s.Name),
-	}}
-}
-
-func WithValidPingSourceV1A2Resources(s *v1alpha2.PingSource) {
-	s.Status.MarkResourcesCorrect()
-}
-
-func WithPingSourceV1A2Spec(spec v1alpha2.PingSourceSpec) PingSourceV1A2Option {
-	return func(c *v1alpha2.PingSource) {
-		c.Spec = spec
-	}
-}
-
-func WithPingSourceV1A2StatusObservedGeneration(generation int64) PingSourceV1A2Option {
-	return func(c *v1alpha2.PingSource) {
-		c.Status.ObservedGeneration = generation
-	}
-}
-
-func WithPingSourceV1A2ObjectMetaGeneration(generation int64) PingSourceV1A2Option {
-	return func(c *v1alpha2.PingSource) {
-		c.ObjectMeta.Generation = generation
-	}
-}
-
-func WithPingSourceV1A2Finalizers(finalizers ...string) PingSourceV1A2Option {
-	return func(c *v1alpha2.PingSource) {
-		c.Finalizers = finalizers
-	}
-}
-
-func WithPingSourceV1A2Deleted(c *v1alpha2.PingSource) {
-	t := metav1.NewTime(time.Unix(1e9, 0))
-	c.SetDeletionTimestamp(&t)
-}
-
-func WithPingSourceV1B1UID(uid string) PingSourceV1B1Option {
-	return func(c *v1beta1.PingSource) {
-		c.UID = types.UID(uid)
-	}
-}
-
-func WithInitPingSourceV1B1Conditions(s *v1beta1.PingSource) {
-	s.Status.InitializeConditions()
-}
-
-func WithPingSourceV1B1SinkNotFound(s *v1beta1.PingSource) {
-	s.Status.MarkNoSink("NotFound", "")
-}
-
-func WithPingSourceV1B1Sink(uri *apis.URL) PingSourceV1B1Option {
-	return func(s *v1beta1.PingSource) {
-		s.Status.MarkSink(uri)
-	}
-}
-
-func WithPingSourceV1B1NotDeployed(name string) PingSourceV1B1Option {
-	return func(s *v1beta1.PingSource) {
-		s.Status.PropagateDeploymentAvailability(NewDeployment(name, "any"))
-	}
-}
-
-func WithPingSourceV1B1Deployed(s *v1beta1.PingSource) {
-	s.Status.PropagateDeploymentAvailability(NewDeployment("any", "any", WithDeploymentAvailable()))
-}
-
-func WithPingSourceV1B1CloudEventAttributes(s *v1beta1.PingSource) {
-	s.Status.CloudEventAttributes = []duckv1.CloudEventAttributes{{
-		Type:   v1beta1.PingSourceEventType,
-		Source: v1beta1.PingSourceSource(s.Namespace, s.Name),
-	}}
-}
-
-func WithPingSourceV1B1Spec(spec v1beta1.PingSourceSpec) PingSourceV1B1Option {
-	return func(c *v1beta1.PingSource) {
-		c.Spec = spec
-	}
-}
-
-func WithPingSourceV1B1StatusObservedGeneration(generation int64) PingSourceV1B1Option {
-	return func(c *v1beta1.PingSource) {
-		c.Status.ObservedGeneration = generation
-	}
-}
-
-func WithPingSourceV1B1ObjectMetaGeneration(generation int64) PingSourceV1B1Option {
-	return func(c *v1beta1.PingSource) {
-		c.ObjectMeta.Generation = generation
-	}
-}
-
-func WithPingSourceV1B1Finalizers(finalizers ...string) PingSourceV1B1Option {
-	return func(c *v1beta1.PingSource) {
-		c.Finalizers = finalizers
-	}
-}
-
-func WithPingSourceV1B1Deleted(c *v1beta1.PingSource) {
-	t := metav1.NewTime(time.Unix(1e9, 0))
-	c.SetDeletionTimestamp(&t)
-}
diff --git a/vendor/knative.dev/eventing/pkg/reconciler/testing/v1beta1/pingsource.go b/vendor/knative.dev/eventing/pkg/reconciler/testing/v1beta1/pingsource.go
new file mode 100644
index 000000000..2c5c7dda1
--- /dev/null
+++ b/vendor/knative.dev/eventing/pkg/reconciler/testing/v1beta1/pingsource.go
@@ -0,0 +1,90 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package testing
+
+import (
+	"context"
+	"time"
+
+	"knative.dev/eventing/pkg/reconciler/testing"
+
+	"knative.dev/pkg/apis"
+	duckv1 "knative.dev/pkg/apis/duck/v1"
+
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"knative.dev/eventing/pkg/apis/sources/v1beta1"
+)
+
+// PingSourceOption enables further configuration of a CronJob.
+type PingSourceOption func(*v1beta1.PingSource)
+
+// NewPingSource creates a PingSource with PingSourceOption.
+func NewPingSource(name, namespace string, o ...PingSourceOption) *v1beta1.PingSource {
+	c := &v1beta1.PingSource{
+		ObjectMeta: metav1.ObjectMeta{
+			Name:      name,
+			Namespace: namespace,
+		},
+	}
+	for _, opt := range o {
+		opt(c)
+	}
+	c.SetDefaults(context.Background()) // TODO: We should add defaults and validation.
+	return c
+}
+
+func WithInitPingSourceConditions(s *v1beta1.PingSource) {
+	s.Status.InitializeConditions()
+}
+
+func WithPingSourceSink(uri *apis.URL) PingSourceOption {
+	return func(s *v1beta1.PingSource) {
+		s.Status.MarkSink(uri)
+	}
+}
+
+func WithPingSourceDeployed(s *v1beta1.PingSource) {
+	s.Status.PropagateDeploymentAvailability(testing.NewDeployment("any", "any", testing.WithDeploymentAvailable()))
+}
+
+func WithPingSourceCloudEventAttributes(s *v1beta1.PingSource) {
+	s.Status.CloudEventAttributes = []duckv1.CloudEventAttributes{{
+		Type:   v1beta1.PingSourceEventType,
+		Source: v1beta1.PingSourceSource(s.Namespace, s.Name),
+	}}
+}
+
+func WithPingSourceSpec(spec v1beta1.PingSourceSpec) PingSourceOption {
+	return func(c *v1beta1.PingSource) {
+		c.Spec = spec
+	}
+}
+
+func WithPingSourceSinkNotFound(s *v1beta1.PingSource) {
+	s.Status.MarkNoSink("NotFound", "")
+}
+
+func WithPingSourceFinalizers(finalizers ...string) PingSourceOption {
+	return func(c *v1beta1.PingSource) {
+		c.Finalizers = finalizers
+	}
+}
+
+func WithPingSourceDeleted(c *v1beta1.PingSource) {
+	t := metav1.NewTime(time.Unix(1e9, 0))
+	c.SetDeletionTimestamp(&t)
+}
diff --git a/vendor/knative.dev/eventing/test/lib/creation.go b/vendor/knative.dev/eventing/test/lib/creation.go
index 8058cdb6c..2c5f95e70 100644
--- a/vendor/knative.dev/eventing/test/lib/creation.go
+++ b/vendor/knative.dev/eventing/test/lib/creation.go
@@ -43,6 +43,7 @@ import (
 	sourcesv1alpha1 "knative.dev/eventing/pkg/apis/sources/v1alpha1"
 	sourcesv1alpha2 "knative.dev/eventing/pkg/apis/sources/v1alpha2"
 	sourcesv1beta1 "knative.dev/eventing/pkg/apis/sources/v1beta1"
+	sourcesv1beta2 "knative.dev/eventing/pkg/apis/sources/v1beta2"
 	"knative.dev/eventing/pkg/utils"
 	"knative.dev/eventing/test/lib/duck"
 	"knative.dev/eventing/test/lib/resources"
@@ -678,7 +679,7 @@ func (c *Client) CreateContainerSourceV1OrFail(containerSource *sourcesv1.Contai
 	c.Tracker.AddObj(containerSource)
 }
 
-// CreatePingSourceV1Alpha2OrFail will create an PingSource
+// CreatePingSourceV1Alpha2OrFail will create a PingSource
 func (c *Client) CreatePingSourceV1Alpha2OrFail(pingSource *sourcesv1alpha2.PingSource) {
 	c.T.Logf("Creating pingsource %+v", pingSource)
 	pingInterface := c.Eventing.SourcesV1alpha2().PingSources(c.Namespace)
@@ -695,7 +696,7 @@ func (c *Client) CreatePingSourceV1Alpha2OrFail(pingSource *sourcesv1alpha2.Ping
 	c.Tracker.AddObj(pingSource)
 }
 
-// CreatePingSourceV1Beta1OrFail will create an PingSource
+// CreatePingSourceV1Beta1OrFail will create a PingSource
 func (c *Client) CreatePingSourceV1Beta1OrFail(pingSource *sourcesv1beta1.PingSource) {
 	c.T.Logf("Creating pingsource %+v", pingSource)
 	pingInterface := c.Eventing.SourcesV1beta1().PingSources(c.Namespace)
@@ -712,6 +713,23 @@ func (c *Client) CreatePingSourceV1Beta1OrFail(pingSource *sourcesv1beta1.PingSo
 	c.Tracker.AddObj(pingSource)
 }
 
+// CreatePingSourceV1Beta2OrFail will create a PingSource
+func (c *Client) CreatePingSourceV1Beta2OrFail(pingSource *sourcesv1beta2.PingSource) {
+	c.T.Logf("Creating pingsource %+v", pingSource)
+	pingInterface := c.Eventing.SourcesV1beta2().PingSources(c.Namespace)
+	err := c.RetryWebhookErrors(func(attempts int) (err error) {
+		_, e := pingInterface.Create(context.Background(), pingSource, metav1.CreateOptions{})
+		if e != nil {
+			c.T.Logf("Failed to create pingsource %q: %v", pingSource.Name, e)
+		}
+		return e
+	})
+	if err != nil && !errors.IsAlreadyExists(err) {
+		c.T.Fatalf("Failed to create pingsource %q: %v", pingSource.Name, err)
+	}
+	c.Tracker.AddObj(pingSource)
+}
+
 func (c *Client) CreateServiceOrFail(svc *corev1.Service) *corev1.Service {
 	c.T.Logf("Creating service %+v", svc)
 	namespace := c.Namespace