Repository: knative/client
Pull request #1312 (2021-05-13 12:57:06)

Fix replicas *int32 type in describe commands
## Description

Per https://github.com/knative/serving/issues/11170 the `actualReplicas, desiredReplicas` fields were changed to `*int32`. This PR brings it to client.

## Changes

<!-- Please add list of more detailed changes. These changes should be reflected also in the commit messages -->

* Fix replicas *int32 type in describe commands
* Update dependencies in separate commit



knative-prow-robot: @dsimansk: PR needs rebase.

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>
knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by:
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please ask for approval from **dsimansk** after the PR has been reviewed.

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

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

- **[OWNERS](https://github.com/knative/client/blob/main/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":["dsimansk"]} -->
knative-prow-robot: @dsimansk: The following test **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-client-go-coverage | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-go-coverage/1392826253609799680) | `/test pull-knative-client-go-coverage`

[Full PR test history](https://gubernator.knative.dev/pr/knative_client/1312). [Your PR dashboard](https://gubernator.knative.dev/pr/dsimansk).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @dsimansk: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-client-go-coverage | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-go-coverage/1392826253609799680) | `/test pull-knative-client-go-coverage`
pull-knative-client-build-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-build-tests/1392826253546885120) | `/test pull-knative-client-build-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_client/1312). [Your PR dashboard](https://gubernator.knative.dev/pr/dsimansk).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @dsimansk: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-client-go-coverage | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-go-coverage/1392826253609799680) | `/test pull-knative-client-go-coverage`
pull-knative-client-build-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-build-tests/1392826253546885120) | `/test pull-knative-client-build-tests`
pull-knative-client-integration-tests-latest-release | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-integration-tests-latest-release/1392826253634965504) | `/test pull-knative-client-integration-tests-latest-release`

[Full PR test history](https://gubernator.knative.dev/pr/knative_client/1312). [Your PR dashboard](https://gubernator.knative.dev/pr/dsimansk).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @dsimansk: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-client-go-coverage | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-go-coverage/1392826253609799680) | `/test pull-knative-client-go-coverage`
pull-knative-client-build-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-build-tests/1392826253546885120) | `/test pull-knative-client-build-tests`
pull-knative-client-integration-tests-latest-release | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-integration-tests-latest-release/1392826253634965504) | `/test pull-knative-client-integration-tests-latest-release`
pull-knative-client-unit-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-unit-tests/1392826253567856640) | `/test pull-knative-client-unit-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_client/1312). [Your PR dashboard](https://gubernator.knative.dev/pr/dsimansk).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @dsimansk: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-client-go-coverage | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-go-coverage/1392826253609799680) | `/test pull-knative-client-go-coverage`
pull-knative-client-build-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-build-tests/1392826253546885120) | `/test pull-knative-client-build-tests`
pull-knative-client-integration-tests-latest-release | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-integration-tests-latest-release/1392826253634965504) | `/test pull-knative-client-integration-tests-latest-release`
pull-knative-client-unit-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-unit-tests/1392826253567856640) | `/test pull-knative-client-unit-tests`
pull-knative-client-integration-tests | 07ce535cbaf737540aab9f156d6d21b023dd873f | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1312/pull-knative-client-integration-tests/1392826253588828160) | `/test pull-knative-client-integration-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_client/1312). [Your PR dashboard](https://gubernator.knative.dev/pr/dsimansk).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
dsimansk: @maximilien could you please take a look at this PR? As it might be blocking some of the release preparations and Roland's off on public holiday today.

Patch:
diff --git a/.github/workflows/knative-boilerplate.yaml b/.github/workflows/knative-boilerplate.yaml
index c0e648b1..9d4093ea 100644
--- a/.github/workflows/knative-boilerplate.yaml
+++ b/.github/workflows/knative-boilerplate.yaml
@@ -42,10 +42,10 @@ jobs:
 
     steps:
 
-      - name: Set up Go 1.15.x
+      - name: Set up Go 1.16.x
         uses: actions/setup-go@v2
         with:
-          go-version: 1.15.x
+          go-version: 1.16.x
         id: go
 
       - name: Check out code
diff --git a/.github/workflows/knative-go-build.yaml b/.github/workflows/knative-go-build.yaml
index 7bd13004..676a24b2 100644
--- a/.github/workflows/knative-go-build.yaml
+++ b/.github/workflows/knative-go-build.yaml
@@ -27,7 +27,7 @@ jobs:
     name: Build
     strategy:
       matrix:
-        go-version: [1.15.x]
+        go-version: [1.16.x]
         platform: [ubuntu-latest]
 
     runs-on: ${{ matrix.platform }}
@@ -43,7 +43,13 @@ jobs:
       - name: Check out code
         uses: actions/checkout@v2
 
+      - id: go_mod
+        uses: andstor/file-existence-action@v1
+        with:
+          files: go.mod
+
       - name: Build
+        if: ${{ steps.go_mod.outputs.files_exists == 'true' }}
         run: |
           tags="$(grep -I  -r '// +build' . | \
                 grep -v '^./vendor/' | \
@@ -55,5 +61,4 @@ jobs:
                 tr '\n' ' ')"
 
           echo "Building with tags: ${tags}"
-          go test -vet=off -tags "${tags}" -run=^$ ./... | grep -v "no test" || true
-
+          go test -vet=off -tags "${tags}" -run=^$ ./...
diff --git a/.github/workflows/knative-releasability.yaml b/.github/workflows/knative-releasability.yaml
index c4f5fb73..5e064c4c 100644
--- a/.github/workflows/knative-releasability.yaml
+++ b/.github/workflows/knative-releasability.yaml
@@ -54,10 +54,10 @@ jobs:
             echo "SLACK_WEBHOOK=exists" >> $GITHUB_ENV
           fi
 
-      - name: Set up Go 1.15.x
+      - name: Set up Go 1.16.x
         uses: actions/setup-go@v2
         with:
-          go-version: 1.15.x
+          go-version: 1.16.x
 
       - name: Install Dependencies
         run: GO111MODULE=on go get knative.dev/test-infra/buoy@main
diff --git a/.github/workflows/knative-style.yaml b/.github/workflows/knative-style.yaml
index c5770a4b..754b9173 100644
--- a/.github/workflows/knative-style.yaml
+++ b/.github/workflows/knative-style.yaml
@@ -40,10 +40,10 @@ jobs:
           importpath: golang.org/x/tools/cmd/goimports
 
     steps:
-      - name: Set up Go 1.15.x
+      - name: Set up Go 1.16.x
         uses: actions/setup-go@v2
         with:
-          go-version: 1.15.x
+          go-version: 1.16.x
         id: go
 
       - name: Check out code
@@ -89,10 +89,10 @@ jobs:
     runs-on: ubuntu-latest
 
     steps:
-      - name: Set up Go 1.15.x
+      - name: Set up Go 1.16.x
         uses: actions/setup-go@v2
         with:
-          go-version: 1.15.x
+          go-version: 1.16.x
         id: go
 
       - name: Check out code
diff --git a/.github/workflows/knative-verify.yaml b/.github/workflows/knative-verify.yaml
index 5f20c548..e18937e1 100644
--- a/.github/workflows/knative-verify.yaml
+++ b/.github/workflows/knative-verify.yaml
@@ -27,7 +27,7 @@ jobs:
     name: Verify Deps and Codegen
     strategy:
       matrix:
-        go-version: [1.15.x]
+        go-version: [1.16.x]
         platform: [ubuntu-latest]
 
     runs-on: ${{ matrix.platform }}
diff --git a/go.mod b/go.mod
index 047be59b..12611f35 100644
--- a/go.mod
+++ b/go.mod
@@ -21,11 +21,11 @@ require (
 	k8s.io/cli-runtime v0.19.7
 	k8s.io/client-go v0.19.7
 	k8s.io/code-generator v0.19.7
-	knative.dev/eventing v0.22.1-0.20210505162953-768b7d116d03
+	knative.dev/eventing v0.22.1-0.20210512205148-1bbc0130b53a
 	knative.dev/hack v0.0.0-20210428122153-93ad9129c268
-	knative.dev/networking v0.0.0-20210428161254-1ad047ce063f
-	knative.dev/pkg v0.0.0-20210428141353-878c85083565
-	knative.dev/serving v0.22.1-0.20210505154753-2d4e4a1eff9d
+	knative.dev/networking v0.0.0-20210512050647-ace2d3306f0b
+	knative.dev/pkg v0.0.0-20210510175900-4564797bf3b7
+	knative.dev/serving v0.22.1-0.20210513113048-93847553c9e4
 	sigs.k8s.io/yaml v1.2.0
 )
 
diff --git a/go.sum b/go.sum
index 1d52dd31..d3eec195 100644
--- a/go.sum
+++ b/go.sum
@@ -1283,23 +1283,20 @@ k8s.io/legacy-cloud-providers v0.19.7/go.mod h1:dsZk4gH9QIwAtHQ8CK0Ps257xlfgoXE3
 k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 h1:0T5IaWHO3sJTEmCP6mUlBvMukxPKUQWqiI/YuiBNMiQ=
 k8s.io/utils v0.0.0-20210111153108-fddb29f9d009/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-knative.dev/caching v0.0.0-20210428140754-1fab472d2faf/go.mod h1:CLQDWuBhkGnC3Pq/3G56qMP14dPt+Y4QmBEe3it44HM=
-knative.dev/eventing v0.22.1-0.20210505162953-768b7d116d03 h1:+j+URI0eEGWZ+cnC2S02xZ/P2ufT2IhrMmzweuZGkLM=
-knative.dev/eventing v0.22.1-0.20210505162953-768b7d116d03/go.mod h1:p7FKFj0dYMKI1Ji0GSKdRg2YzLMWVXABm0QHN2RtkSI=
-knative.dev/hack v0.0.0-20210325223819-b6ab329907d3/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
-knative.dev/hack v0.0.0-20210427190353-86f9adc0c8e2/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
+knative.dev/caching v0.0.0-20210512050647-922782660f7c/go.mod h1:d+fIY/LkAZAM6HsRJwmfirNDMCc1+hqGlQctLP1CmzE=
+knative.dev/eventing v0.22.1-0.20210512205148-1bbc0130b53a h1:dafIIUwdttDhhoPIvOp4sffzCJ42YCFbZ25DzQgTUaE=
+knative.dev/eventing v0.22.1-0.20210512205148-1bbc0130b53a/go.mod h1:xehVLff2eqwBxQPxBVmgiHzJadzldQulBxRdYMljRAs=
 knative.dev/hack v0.0.0-20210428122153-93ad9129c268 h1:lBIj9Epd9UQ55NEaHzAdY/UZbuaegCdGPKVC2+Z68Q0=
 knative.dev/hack v0.0.0-20210428122153-93ad9129c268/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
 knative.dev/hack/schema v0.0.0-20210428122153-93ad9129c268/go.mod h1:ffjwmdcrH5vN3mPhO8RrF2KfNnbHeCE2C60A+2cv3U0=
-knative.dev/networking v0.0.0-20210428161254-1ad047ce063f h1:aobK9UEGzKYcLJMd50BhRLIWMqKQYXq9NuPsOOB3Nk8=
-knative.dev/networking v0.0.0-20210428161254-1ad047ce063f/go.mod h1:6sJKmUcFFSkhloA1mWii/DCqeg9mMHfRraB/ouRzuM0=
-knative.dev/pkg v0.0.0-20210420053235-1afd04993622/go.mod h1:UtcSLHy2XIz5blWoPTA40F87zk4O7erxkCwv+7Tsmws=
-knative.dev/pkg v0.0.0-20210428023153-5a308fa62139/go.mod h1:7Xmwv60SD68lc4mpbKvU1J4WJLfZNNDNpHFA87T7/AM=
-knative.dev/pkg v0.0.0-20210428141353-878c85083565 h1:4I8Pm2IlSJbdJ1R9fC18kOlZlfCZkB59JraRGratgnY=
+knative.dev/networking v0.0.0-20210512050647-ace2d3306f0b h1:Ea6ym1Jfd/Hci1EGj+uPaE3d6SS1s/Br+6fFAWdJCeM=
+knative.dev/networking v0.0.0-20210512050647-ace2d3306f0b/go.mod h1:y7RmP2/dHO/DAC1QmpUtgTVF6/Z8whaL+wjgey+HthU=
 knative.dev/pkg v0.0.0-20210428141353-878c85083565/go.mod h1:fIl4l4OmZodkElyaHoT0LCF5wT+3+P/kinawQ4XlLtE=
-knative.dev/reconciler-test v0.0.0-20210428195854-3db87491edb3/go.mod h1:yZihS1XoBt7oxU6Jq+U2hMKmUvfKFEaj3vMqOMBt/tI=
-knative.dev/serving v0.22.1-0.20210505154753-2d4e4a1eff9d h1:le2jX6mbc6g0kBtZgDGRyeGWsSVvwZeaLNlzOWqjvsQ=
-knative.dev/serving v0.22.1-0.20210505154753-2d4e4a1eff9d/go.mod h1:eeyZQ8josGr2tus9RG9hkPIB1ITXXjkPojh7RmEazig=
+knative.dev/pkg v0.0.0-20210510175900-4564797bf3b7 h1:i4P8emOPrLctmbaPHp5eRIOqz+XTOkit7KgZeS+onKs=
+knative.dev/pkg v0.0.0-20210510175900-4564797bf3b7/go.mod h1:fIl4l4OmZodkElyaHoT0LCF5wT+3+P/kinawQ4XlLtE=
+knative.dev/reconciler-test v0.0.0-20210506205310-ed3c37806817/go.mod h1:pUozU+xgCWG9eH+4bYBXM0zWPl8lwvan34gCi/ZDP8o=
+knative.dev/serving v0.22.1-0.20210513113048-93847553c9e4 h1:5n2ztgAWpcBdEt1HVwbrPSMSHHH520xRJn8ZxtALg4E=
+knative.dev/serving v0.22.1-0.20210513113048-93847553c9e4/go.mod h1:hoGG2F9/qfAL/x0x14hAdciD7YxjdsaDqZ0PRNmj1gs=
 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/pkg/kn/commands/revision/describe.go b/pkg/kn/commands/revision/describe.go
index 9530b1d2..ff5e5fa4 100644
--- a/pkg/kn/commands/revision/describe.go
+++ b/pkg/kn/commands/revision/describe.go
@@ -206,8 +206,8 @@ func WriteEnvFrom(dw printers.PrefixWriter, revision *servingv1.Revision, printD
 func WriteReplicas(dw printers.PrefixWriter, revision *servingv1.Revision) {
 	actualReplicas := revision.Status.ActualReplicas
 	desiredReplicas := revision.Status.DesiredReplicas
-	if actualReplicas != 0 || desiredReplicas != 0 {
-		dw.WriteAttribute("Replicas", fmt.Sprintf("%d/%d", actualReplicas, desiredReplicas))
+	if actualReplicas != nil && desiredReplicas != nil {
+		dw.WriteAttribute("Replicas", fmt.Sprintf("%d/%d", *actualReplicas, *desiredReplicas))
 	}
 }
 
diff --git a/vendor/knative.dev/eventing/pkg/apis/duck/v1/channelable_types.go b/vendor/knative.dev/eventing/pkg/apis/duck/v1/channelable_types.go
index b65b1ab6..2d03a3f8 100644
--- a/vendor/knative.dev/eventing/pkg/apis/duck/v1/channelable_types.go
+++ b/vendor/knative.dev/eventing/pkg/apis/duck/v1/channelable_types.go
@@ -59,6 +59,7 @@ type ChannelableStatus struct {
 	// * Conditions - the latest available observations of a resource's current state.
 	duckv1.Status `json:",inline"`
 	// AddressStatus is the part where the Channelable fulfills the Addressable contract.
+	// +optional
 	duckv1.AddressStatus `json:",inline"`
 	// Subscribers is populated with the statuses of each of the Channelable's subscribers.
 	SubscribableStatus `json:",inline"`
diff --git a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/broker_types.go b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/broker_types.go
index f968fdc7..d03749bd 100644
--- a/vendor/knative.dev/eventing/pkg/apis/eventing/v1/broker_types.go
+++ b/vendor/knative.dev/eventing/pkg/apis/eventing/v1/broker_types.go
@@ -90,6 +90,7 @@ type BrokerStatus struct {
 
 	// Broker is Addressable. It exposes the endpoint as an URI to get events
 	// delivered into the Broker mesh.
+	// +optional
 	Address duckv1.Addressable `json:"address,omitempty"`
 }
 
diff --git a/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_lifecycle.go b/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_lifecycle.go
index ddcc8b24..47401c64 100644
--- a/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_lifecycle.go
+++ b/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_lifecycle.go
@@ -122,6 +122,11 @@ func (ss *SequenceStatus) PropagateChannelStatuses(channels []*eventingduckv1.Ch
 
 	}
 	for i, c := range channels {
+		// Mark the Sequence address as the Address of the first channel.
+		if i == 0 {
+			ss.setAddress(c.Status.Address)
+		}
+
 		ss.ChannelStatuses[i] = SequenceChannelStatus{
 			Channel: corev1.ObjectReference{
 				APIVersion: c.APIVersion,
@@ -130,20 +135,16 @@ func (ss *SequenceStatus) PropagateChannelStatuses(channels []*eventingduckv1.Ch
 				Namespace:  c.Namespace,
 			},
 		}
-		// TODO: Once the addressable has a real status to dig through, use that here instead of
-		// addressable, because it might be addressable but not ready.
-		address := c.Status.AddressStatus.Address
-		if address != nil {
-			ss.ChannelStatuses[i].ReadyCondition = apis.Condition{Type: apis.ConditionReady, Status: corev1.ConditionTrue}
+
+		if ready := c.Status.GetCondition(apis.ConditionReady); ready != nil {
+			ss.ChannelStatuses[i].ReadyCondition = *ready
+			if !ready.IsTrue() {
+				allReady = false
+			}
 		} else {
-			ss.ChannelStatuses[i].ReadyCondition = apis.Condition{Type: apis.ConditionReady, Status: corev1.ConditionFalse, Reason: "NotAddressable", Message: "Channel is not addressable"}
+			ss.ChannelStatuses[i].ReadyCondition = apis.Condition{Type: apis.ConditionReady, Status: corev1.ConditionUnknown, Reason: "NoReady", Message: "Channel does not have Ready condition"}
 			allReady = false
 		}
-
-		// Mark the Sequence address as the Address of the first channel.
-		if i == 0 {
-			ss.setAddress(address)
-		}
 	}
 	if allReady {
 		sCondSet.Manage(ss).MarkTrue(SequenceConditionChannelsReady)
@@ -153,22 +154,23 @@ func (ss *SequenceStatus) PropagateChannelStatuses(channels []*eventingduckv1.Ch
 }
 
 func (ss *SequenceStatus) MarkChannelsNotReady(reason, messageFormat string, messageA ...interface{}) {
-	sCondSet.Manage(ss).MarkFalse(SequenceConditionChannelsReady, reason, messageFormat, messageA...)
+	sCondSet.Manage(ss).MarkUnknown(SequenceConditionChannelsReady, reason, messageFormat, messageA...)
 }
 
 func (ss *SequenceStatus) MarkSubscriptionsNotReady(reason, messageFormat string, messageA ...interface{}) {
-	sCondSet.Manage(ss).MarkFalse(SequenceConditionSubscriptionsReady, reason, messageFormat, messageA...)
+	sCondSet.Manage(ss).MarkUnknown(SequenceConditionSubscriptionsReady, reason, messageFormat, messageA...)
 }
 
 func (ss *SequenceStatus) MarkAddressableNotReady(reason, messageFormat string, messageA ...interface{}) {
-	sCondSet.Manage(ss).MarkFalse(SequenceConditionAddressable, reason, messageFormat, messageA...)
+	sCondSet.Manage(ss).MarkUnknown(SequenceConditionAddressable, reason, messageFormat, messageA...)
 }
 
 func (ss *SequenceStatus) setAddress(address *duckv1.Addressable) {
 	if address == nil || address.URL == nil {
-		sCondSet.Manage(ss).MarkFalse(SequenceConditionAddressable, "emptyAddress", "addressable is nil")
+		ss.Address = duckv1.Addressable{}
+		sCondSet.Manage(ss).MarkUnknown(SequenceConditionAddressable, "emptyAddress", "addressable is nil")
 	} else {
-		ss.AddressStatus.Address = &duckv1.Addressable{URL: address.URL}
+		ss.Address = duckv1.Addressable{URL: address.URL}
 		sCondSet.Manage(ss).MarkTrue(SequenceConditionAddressable)
 	}
 }
diff --git a/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_types.go b/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_types.go
index 999f0b2d..7b708604 100644
--- a/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_types.go
+++ b/vendor/knative.dev/eventing/pkg/apis/flows/v1/sequence_types.go
@@ -124,10 +124,11 @@ type SequenceStatus struct {
 	// Matches the Spec.Steps array in the order.
 	ChannelStatuses []SequenceChannelStatus `json:"channelStatuses"`
 
-	// AddressStatus is the starting point to this Sequence. Sending to this
+	// Address is the starting point to this Sequence. Sending to this
 	// will target the first subscriber.
 	// It generally has the form {channel}.{namespace}.svc.{cluster domain name}
-	duckv1.AddressStatus `json:",inline"`
+	// +optional
+	Address duckv1.Addressable `json:"address,omitempty"`
 }
 
 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
diff --git a/vendor/knative.dev/eventing/pkg/apis/flows/v1/zz_generated.deepcopy.go b/vendor/knative.dev/eventing/pkg/apis/flows/v1/zz_generated.deepcopy.go
index dff47523..2e550d06 100644
--- a/vendor/knative.dev/eventing/pkg/apis/flows/v1/zz_generated.deepcopy.go
+++ b/vendor/knative.dev/eventing/pkg/apis/flows/v1/zz_generated.deepcopy.go
@@ -364,7 +364,7 @@ func (in *SequenceStatus) DeepCopyInto(out *SequenceStatus) {
 			(*in)[i].DeepCopyInto(&(*out)[i])
 		}
 	}
-	in.AddressStatus.DeepCopyInto(&out.AddressStatus)
+	in.Address.DeepCopyInto(&out.Address)
 	return
 }
 
diff --git a/vendor/knative.dev/eventing/pkg/apis/messaging/v1/channel_types.go b/vendor/knative.dev/eventing/pkg/apis/messaging/v1/channel_types.go
index f541348f..5df5d71b 100644
--- a/vendor/knative.dev/eventing/pkg/apis/messaging/v1/channel_types.go
+++ b/vendor/knative.dev/eventing/pkg/apis/messaging/v1/channel_types.go
@@ -29,7 +29,8 @@ import (
 // +genreconciler
 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 
-// Channel represents a generic Channel. It is normally used when we want a Channel, but don't need a specific Channel implementation.
+// Channel represents a generic Channel. It is normally used when we want a
+// Channel, but do not need a specific Channel implementation.
 type Channel struct {
 	metav1.TypeMeta `json:",inline"`
 	// +optional
@@ -38,8 +39,8 @@ type Channel struct {
 	// Spec defines the desired state of the Channel.
 	Spec ChannelSpec `json:"spec,omitempty"`
 
-	// Status represents the current state of the Channel. This data may be out of
-	// date.
+	// Status represents the current state of the Channel. This data may be out
+	// of date.
 	// +optional
 	Status ChannelStatus `json:"status,omitempty"`
 }
@@ -61,12 +62,15 @@ var (
 	_ duckv1.KRShaped = (*Channel)(nil)
 )
 
-// ChannelSpec defines which subscribers have expressed interest in receiving events from this Channel.
-// It also defines the ChannelTemplate to use in order to create the CRD Channel backing this Channel.
+// ChannelSpec defines which subscribers have expressed interest in receiving
+// events from this Channel. It also defines the ChannelTemplate to use in
+// order to create the CRD Channel backing this Channel.
 type ChannelSpec struct {
-	// ChannelTemplate specifies which Channel CRD to use to create the CRD Channel backing this Channel.
-	// This is immutable after creation. Normally this is set by the Channel defaulter, not directly by the user.
-	ChannelTemplate *ChannelTemplateSpec `json:"channelTemplate"`
+	// ChannelTemplate specifies which Channel CRD to use to create the CRD
+	// Channel backing this Channel. This is immutable after creation.
+	// Normally this is set by the Channel defaulter, not directly by the user.
+	// +optional
+	ChannelTemplate *ChannelTemplateSpec `json:"channelTemplate,omitempty"`
 
 	// Channel conforms to ChannelableSpec
 	eventingduckv1.ChannelableSpec `json:",inline"`
@@ -78,6 +82,7 @@ type ChannelStatus struct {
 	eventingduckv1.ChannelableStatus `json:",inline"`
 
 	// Channel is an KReference to the Channel CRD backing this Channel.
+	// +optional
 	Channel *duckv1.KReference `json:"channel,omitempty"`
 }
 
@@ -91,7 +96,8 @@ type ChannelList struct {
 	Items           []Channel `json:"items"`
 }
 
-// GetStatus retrieves the status of the Channel. Implements the KRShaped interface.
+// GetStatus retrieves the status of the Channel. Implements the KRShaped
+// interface.
 func (t *Channel) GetStatus() *duckv1.Status {
 	return &t.Status.Status
 }
diff --git a/vendor/knative.dev/eventing/pkg/apis/messaging/v1/subscription_types.go b/vendor/knative.dev/eventing/pkg/apis/messaging/v1/subscription_types.go
index 17304013..187bc8ff 100644
--- a/vendor/knative.dev/eventing/pkg/apis/messaging/v1/subscription_types.go
+++ b/vendor/knative.dev/eventing/pkg/apis/messaging/v1/subscription_types.go
@@ -122,12 +122,15 @@ type SubscriptionStatus struct {
 // Subscription.
 type SubscriptionStatusPhysicalSubscription struct {
 	// SubscriberURI is the fully resolved URI for spec.subscriber.
+	// +optional
 	SubscriberURI *apis.URL `json:"subscriberUri,omitempty"`
 
 	// ReplyURI is the fully resolved URI for the spec.reply.
+	// +optional
 	ReplyURI *apis.URL `json:"replyUri,omitempty"`
 
 	// ReplyURI is the fully resolved URI for the spec.delivery.deadLetterSink.
+	// +optional
 	DeadLetterSinkURI *apis.URL `json:"deadLetterSinkUri,omitempty"`
 }
 
diff --git a/vendor/knative.dev/pkg/resolver/addressable_resolver.go b/vendor/knative.dev/pkg/resolver/addressable_resolver.go
index 4407f80b..a5701ea4 100644
--- a/vendor/knative.dev/pkg/resolver/addressable_resolver.go
+++ b/vendor/knative.dev/pkg/resolver/addressable_resolver.go
@@ -21,26 +21,27 @@ import (
 	"errors"
 	"fmt"
 
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/apimachinery/pkg/types"
+	"k8s.io/client-go/tools/cache"
+	"knative.dev/pkg/client/injection/ducks/duck/v1/addressable"
+	"knative.dev/pkg/controller"
+
 	corev1 "k8s.io/api/core/v1"
 	apierrs "k8s.io/apimachinery/pkg/api/errors"
 	"k8s.io/apimachinery/pkg/api/meta"
-	"k8s.io/apimachinery/pkg/types"
-
 	"knative.dev/pkg/apis"
 	pkgapisduck "knative.dev/pkg/apis/duck"
 	duckv1 "knative.dev/pkg/apis/duck/v1"
 	duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1"
-	"knative.dev/pkg/controller"
 	"knative.dev/pkg/network"
 	"knative.dev/pkg/tracker"
-
-	"knative.dev/pkg/client/injection/ducks/duck/v1/addressable"
 )
 
 // URIResolver resolves Destinations and ObjectReferences into a URI.
 type URIResolver struct {
-	tracker         tracker.Interface
-	informerFactory pkgapisduck.InformerFactory
+	tracker       tracker.Interface
+	listerFactory func(schema.GroupVersionResource) (cache.GenericLister, error)
 }
 
 // NewURIResolver constructs a new URIResolver with context and a callback
@@ -49,13 +50,19 @@ func NewURIResolver(ctx context.Context, callback func(types.NamespacedName)) *U
 	ret := &URIResolver{}
 
 	ret.tracker = tracker.New(callback, controller.GetTrackerLease(ctx))
-	ret.informerFactory = &pkgapisduck.CachedInformerFactory{
+
+	informerFactory := &pkgapisduck.CachedInformerFactory{
 		Delegate: &pkgapisduck.EnqueueInformerFactory{
 			Delegate:     addressable.Get(ctx),
 			EventHandler: controller.HandleAll(ret.tracker.OnChanged),
 		},
 	}
 
+	ret.listerFactory = func(gvr schema.GroupVersionResource) (cache.GenericLister, error) {
+		_, l, err := informerFactory.Get(ctx, gvr)
+		return l, err
+	}
+
 	return ret
 }
 
@@ -163,7 +170,7 @@ func (r *URIResolver) URIFromObjectReference(ctx context.Context, ref *corev1.Ob
 		return url, nil
 	}
 
-	_, lister, err := r.informerFactory.Get(ctx, gvr)
+	lister, err := r.listerFactory(gvr)
 	if err != nil {
 		return nil, apierrs.NewNotFound(gvr.GroupResource(), "Lister")
 	}
diff --git a/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_lifecycle.go b/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_lifecycle.go
index af4e5e1b..48d2cbb1 100644
--- a/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_lifecycle.go
+++ b/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_lifecycle.go
@@ -22,7 +22,6 @@ import (
 	appsv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
-	"k8s.io/utils/integer"
 
 	"knative.dev/pkg/apis"
 	autoscalingv1alpha1 "knative.dev/serving/pkg/apis/autoscaling/v1alpha1"
@@ -173,8 +172,15 @@ func (rs *RevisionStatus) PropagateAutoscalerStatus(ps *autoscalingv1alpha1.PodA
 	// Reflect the PA status in our own.
 	cond := ps.GetCondition(autoscalingv1alpha1.PodAutoscalerConditionReady)
 
-	rs.ActualReplicas = integer.Int32Max(ps.GetActualScale(), 0)
-	rs.DesiredReplicas = integer.Int32Max(ps.GetDesiredScale(), 0)
+	rs.ActualReplicas = nil
+	if ps.ActualScale != nil && *ps.ActualScale >= 0 {
+		rs.ActualReplicas = ps.ActualScale
+	}
+
+	rs.DesiredReplicas = nil
+	if ps.DesiredScale != nil && *ps.DesiredScale >= 0 {
+		rs.DesiredReplicas = ps.DesiredScale
+	}
 
 	if cond == nil {
 		rs.MarkActiveUnknown("Deploying", "")
diff --git a/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_types.go b/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_types.go
index 364cb1a0..2a54942f 100644
--- a/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_types.go
+++ b/vendor/knative.dev/serving/pkg/apis/serving/v1/revision_types.go
@@ -161,10 +161,10 @@ type RevisionStatus struct {
 
 	// ActualReplicas reflects the amount of ready pods running this revision.
 	// +optional
-	ActualReplicas int32 `json:"actualReplicas,omitempty"`
+	ActualReplicas *int32 `json:"actualReplicas,omitempty"`
 	// DesiredReplicas reflects the desired amount of pods running this revision.
 	// +optional
-	DesiredReplicas int32 `json:"desiredReplicas,omitempty"`
+	DesiredReplicas *int32 `json:"desiredReplicas,omitempty"`
 }
 
 // ContainerStatus holds the information of container name and image digest value
diff --git a/vendor/knative.dev/serving/pkg/apis/serving/v1/zz_generated.deepcopy.go b/vendor/knative.dev/serving/pkg/apis/serving/v1/zz_generated.deepcopy.go
index d1dc8be4..98ae8bda 100644
--- a/vendor/knative.dev/serving/pkg/apis/serving/v1/zz_generated.deepcopy.go
+++ b/vendor/knative.dev/serving/pkg/apis/serving/v1/zz_generated.deepcopy.go
@@ -251,6 +251,16 @@ func (in *RevisionStatus) DeepCopyInto(out *RevisionStatus) {
 		*out = make([]ContainerStatus, len(*in))
 		copy(*out, *in)
 	}
+	if in.ActualReplicas != nil {
+		in, out := &in.ActualReplicas, &out.ActualReplicas
+		*out = new(int32)
+		**out = **in
+	}
+	if in.DesiredReplicas != nil {
+		in, out := &in.DesiredReplicas, &out.DesiredReplicas
+		*out = new(int32)
+		**out = **in
+	}
 	return
 }
 
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 634ce5d6..d82ef822 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -766,7 +766,7 @@ k8s.io/kube-openapi/pkg/util/sets
 k8s.io/utils/buffer
 k8s.io/utils/integer
 k8s.io/utils/trace
-# knative.dev/eventing v0.22.1-0.20210505162953-768b7d116d03
+# knative.dev/eventing v0.22.1-0.20210512205148-1bbc0130b53a
 ## explicit
 knative.dev/eventing/pkg/apis/config
 knative.dev/eventing/pkg/apis/duck
@@ -794,12 +794,12 @@ knative.dev/eventing/pkg/client/clientset/versioned/typed/sources/v1beta2/fake
 # knative.dev/hack v0.0.0-20210428122153-93ad9129c268
 ## explicit
 knative.dev/hack
-# knative.dev/networking v0.0.0-20210428161254-1ad047ce063f
+# knative.dev/networking v0.0.0-20210512050647-ace2d3306f0b
 ## explicit
 knative.dev/networking/pkg
 knative.dev/networking/pkg/apis/networking
 knative.dev/networking/pkg/apis/networking/v1alpha1
-# knative.dev/pkg v0.0.0-20210428141353-878c85083565
+# knative.dev/pkg v0.0.0-20210510175900-4564797bf3b7
 ## explicit
 knative.dev/pkg/apis
 knative.dev/pkg/apis/duck
@@ -842,7 +842,7 @@ knative.dev/pkg/tracing/config
 knative.dev/pkg/tracing/propagation
 knative.dev/pkg/tracing/propagation/tracecontextb3
 knative.dev/pkg/tracker
-# knative.dev/serving v0.22.1-0.20210505154753-2d4e4a1eff9d
+# knative.dev/serving v0.22.1-0.20210513113048-93847553c9e4
 ## explicit
 knative.dev/serving/pkg/apis/autoscaling
 knative.dev/serving/pkg/apis/autoscaling/v1alpha1


Test patch:
diff --git a/.github/workflows/knative-go-test.yaml b/.github/workflows/knative-go-test.yaml
index 965df1e7..79432a7a 100644
--- a/.github/workflows/knative-go-test.yaml
+++ b/.github/workflows/knative-go-test.yaml
@@ -31,7 +31,7 @@ jobs:
     name: Unit Tests
     strategy:
       matrix:
-        go-version: [1.15.x]
+        go-version: [1.16.x]
         platform: [ubuntu-latest]
 
     runs-on: ${{ matrix.platform }}
diff --git a/pkg/kn/commands/revision/describe_test.go b/pkg/kn/commands/revision/describe_test.go
index a903caf5..e06a04e6 100644
--- a/pkg/kn/commands/revision/describe_test.go
+++ b/pkg/kn/commands/revision/describe_test.go
@@ -20,6 +20,8 @@ import (
 	"testing"
 	"time"
 
+	"knative.dev/pkg/ptr"
+
 	"gotest.tools/v3/assert"
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/equality"
@@ -106,7 +108,7 @@ func TestDescribeRevisionYaml(t *testing.T) {
 }
 
 func TestDescribeRevisionBasic(t *testing.T) {
-	expectedRevision := createTestRevision("test-rev", 3)
+	expectedRevision := createTestRevision("test-rev", 3, ptr.Int32(1))
 
 	action, data, err := fakeRevision([]string{"revision", "describe", "test-rev"}, &expectedRevision)
 	if err != nil {
@@ -120,11 +122,29 @@ func TestDescribeRevisionBasic(t *testing.T) {
 	}
 
 	assert.Assert(t, util.ContainsAll(data, "Image:", "gcr.io/test/image", "++ Ready", "Port:", "8080"))
-	assert.Assert(t, util.ContainsAll(data, "Replicas:", "0/1"))
+	assert.Assert(t, util.ContainsAll(data, "Replicas:", "1/1"))
 	assert.Assert(t, util.ContainsAll(data, "EnvFrom:", "cm:test1, cm:test2"))
 }
 
-func createTestRevision(revision string, gen int64) servingv1.Revision {
+func TestDescribeRevisionReplicas(t *testing.T) {
+	expectedRevision := createTestRevision("test-rev", 3, ptr.Int32(1))
+	_, data, err := fakeRevision([]string{"revision", "describe", "test-rev"}, &expectedRevision)
+	assert.NilError(t, err)
+	assert.Assert(t, util.ContainsAll(data, "Replicas:", "1/1"))
+
+	expectedRevision = createTestRevision("test-rev", 3, ptr.Int32(0))
+	_, data, err = fakeRevision([]string{"revision", "describe", "test-rev"}, &expectedRevision)
+	assert.NilError(t, err)
+	assert.Assert(t, util.ContainsAll(data, "Replicas:", "0/0"))
+
+	expectedRevision = createTestRevision("test-rev", 3, nil)
+	_, data, err = fakeRevision([]string{"revision", "describe", "test-rev"}, &expectedRevision)
+	assert.NilError(t, err)
+	assert.Assert(t, util.ContainsNone(data, "Replicas:"))
+
+}
+
+func createTestRevision(revision string, gen int64, replicas *int32) servingv1.Revision {
 	labels := make(map[string]string)
 	labels[apiserving.ConfigurationGenerationLabelKey] = fmt.Sprintf("%d", gen)
 
@@ -162,8 +182,8 @@ func createTestRevision(revision string, gen int64) servingv1.Revision {
 			},
 		},
 		Status: servingv1.RevisionStatus{
-			ActualReplicas:        0,
-			DesiredReplicas:       1,
+			ActualReplicas:        replicas,
+			DesiredReplicas:       replicas,
 			DeprecatedImageDigest: "gcr.io/test/image@" + imageDigest,
 			Status: duckv1.Status{
 				Conditions: goodConditions(),
diff --git a/pkg/kn/commands/service/describe_test.go b/pkg/kn/commands/service/describe_test.go
index 5ea4a22d..1be1faf6 100644
--- a/pkg/kn/commands/service/describe_test.go
+++ b/pkg/kn/commands/service/describe_test.go
@@ -763,8 +763,8 @@ func createTestRevision(revision string, gen int64, conditions duckv1.Conditions
 			},
 		},
 		Status: servingv1.RevisionStatus{
-			ActualReplicas:        0,
-			DesiredReplicas:       1,
+			ActualReplicas:        ptr.Int32(0),
+			DesiredReplicas:       ptr.Int32(1),
 			DeprecatedImageDigest: "gcr.io/test/image@" + imageDigest,
 			Status: duckv1.Status{
 				Conditions: conditions,