tree f8557912f08a7d11973cdebf51b51669037ffe3b
parent 4eb9889c539adfb34b8ba968ed31bcef9f3c3ff8
author WhiteSource Renovate <bot@renovateapp.com> 1596551642 +0200
committer GitHub <noreply@github.com> 1596551642 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJfKXHaCRBK7hj4Ov3rIwAAdHIIAFesXuod0+iOnLWso5C2bGsE
 gF6huZqwrOLlQsuT4BvC7EtNLqmQaFHL0qIWqcFzI3ReeH8W/5ek5l/xXomkIVLo
 hKX1KjSxjaI/U4qRpfAx4EfZLVf5SWXcAiVELtffjFBxz0l76LaUYa9/KKYdixcS
 mDwKCIS297BQIEg5hmwG5RERKYocSHXcyGNPy8UfiVVH+tGgvxxeDrGEoYcmww0W
 OVTZjLC6VFBTQkLK2rH4hihki6y+c/mXI0FBoYObcFqkqtgXE/hysj2j60LyA0+J
 dHoVrjFJ8zvbudbsppyIBSrUK2tD1VEHtgkbXApSfx1iRG/mu35YcvikjsU4jWM=
 =dEAP
 -----END PGP SIGNATURE-----
 

chore(all): update all (#613)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [cloud.google.com/go](https://togithub.com/googleapis/google-cloud-go) | require | minor | `v0.61.0` -> `v0.62.0` |
| [golang.org/x/sys](https://togithub.com/golang/sys) | require | digest | `0e2f3a6` -> `64077c9` |
| [golang.org/x/tools](https://togithub.com/golang/tools) | require | digest | `102e7d3` -> `6c149bb` |
| [google.golang.org/genproto](https://togithub.com/googleapis/go-genproto) | require | digest | `da3ae01` -> `c065184` |
| [google.golang.org/grpc](https://togithub.com/grpc/grpc-go) | require | minor | `v1.30.0` -> `v1.31.0` |

---

### Release Notes

<details>
<summary>googleapis/google-cloud-go</summary>

### [`v0.62.0`](https://togithub.com/googleapis/google-cloud-go/blob/master/CHANGES.md#v0620)

[Compare Source](https://togithub.com/googleapis/google-cloud-go/compare/v0.61.0...v0.62.0)

##### Announcements

-   There was a breaking change to `cloud.google.com/go/dataproc/apiv1` that was
    merged in [this PR](https://togithub.com/googleapis/google-cloud-go/pull/2606).
    This fixed a broken API response for `DiagnoseCluster`. When polling on the
    Long Running Operation(LRO), the API now returns
    `(*dataprocpb.DiagnoseClusterResults, error)` whereas it only returned an
    `error` before.

##### Changes

-   all:
    -   Updated all direct dependencies.
    -   Updated contributing guidelines to suggest allowing edits from maintainers.
-   billing/budgets:
    -   Start generating client for apiv1beta1.
-   functions:
    -   Start generating client for apiv1.
-   notebooks:
    -   Start generating client apiv1beta1.
-   profiler:
    -   update proftest to support parsing floating-point backoff durations.
    -   Fix the regexp used to parse backoff duration.
-   Various updates to autogenerated clients.

</details>

<details>
<summary>grpc/grpc-go</summary>

### [`v1.31.0`](https://togithub.com/grpc/grpc-go/releases/v1.31.0)

[Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.30.0...v1.31.0)

### API Changes

-   balancer: remove deprecated type aliases ([#&#8203;3742](https://togithub.com/grpc/grpc-go/issues/3742))

### New Features

-   The following new xDS functionalities are added in this release (xDS features supported in a given release are documented [here](https://togithub.com/grpc/grpc/blob/master/doc/grpc_xds_features.md)):
    -   Requests matching based on [path](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route_components.proto#route-routematch) (prefix, full path and safe regex) and [headers](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route_components.proto#route-headermatcher)
    -   Requests routing to multiple clusters based on [weights](https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route_components.proto#route-weightedcluster)
-   service config: add default method config support ([#&#8203;3684](https://togithub.com/grpc/grpc-go/issues/3684))
    -   Special Thanks: [@&#8203;amenzhinsky](https://togithub.com/amenzhinsky)
-   credentials/sts: PerRPCCreds Implementation ([#&#8203;3696](https://togithub.com/grpc/grpc-go/issues/3696))
-   credentials: check and expose SPIFFE ID ([#&#8203;3626](https://togithub.com/grpc/grpc-go/issues/3626))
-   protoc-gen-go-grpc: support for proto3 field presence ([#&#8203;3752](https://togithub.com/grpc/grpc-go/issues/3752))

### Bug Fixes

-   client: set auth header to localhost for unix target ([#&#8203;3730](https://togithub.com/grpc/grpc-go/issues/3730))

### Documentation

-   doc: mark CustomCodec as deprecated ([#&#8203;3698](https://togithub.com/grpc/grpc-go/issues/3698))
-   examples: cleanup README.md ([#&#8203;3738](https://togithub.com/grpc/grpc-go/issues/3738))
-   doc: fix references to status methods ([#&#8203;3702](https://togithub.com/grpc/grpc-go/issues/3702))
    -   Special Thanks: [@&#8203;evanlimanto](https://togithub.com/evanlimanto)

</details>

---

### Renovate configuration

:date: **Schedule**: "before 3am on Monday" (UTC).

:vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

:recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

:ghost: **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/config-help/issues) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/google-api-go-client).