chore(deps): bump google.golang.org/api from 0.181.0 to 0.182.0 (#3187)
Bumps [google.golang.org/api](https://github.com/googleapis/google-api-go-client) from 0.181.0 to 0.182.0. - [Release notes](https://github.com/googleapis/google-api-go-client/releases) - [Changelog](https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md) - [Commits](https://github.com/googleapis/google-api-go-client/compare/v0.181.0...v0.182.0) --- updated-dependencies: - dependency-name: google.golang.org/api dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
parent
f671fca1f1
commit
942fbe65e8
12
go.mod
12
go.mod
|
|
@ -42,7 +42,7 @@ require (
|
||||||
require github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
require github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.113.0 // indirect
|
cloud.google.com/go v0.114.0 // indirect
|
||||||
cloud.google.com/go/compute/metadata v0.3.0 // indirect
|
cloud.google.com/go/compute/metadata v0.3.0 // indirect
|
||||||
cloud.google.com/go/iam v1.1.8 // indirect
|
cloud.google.com/go/iam v1.1.8 // indirect
|
||||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
||||||
|
|
@ -134,15 +134,15 @@ require (
|
||||||
golang.org/x/sys v0.20.0
|
golang.org/x/sys v0.20.0
|
||||||
golang.org/x/text v0.15.0 // indirect
|
golang.org/x/text v0.15.0 // indirect
|
||||||
golang.org/x/time v0.5.0 // indirect
|
golang.org/x/time v0.5.0 // indirect
|
||||||
google.golang.org/api v0.181.0
|
google.golang.org/api v0.182.0
|
||||||
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect
|
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda // indirect
|
||||||
google.golang.org/grpc v1.63.2 // indirect
|
google.golang.org/grpc v1.64.0 // indirect
|
||||||
google.golang.org/protobuf v1.34.1 // indirect
|
google.golang.org/protobuf v1.34.1 // indirect
|
||||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go/auth v0.4.1 // indirect
|
cloud.google.com/go/auth v0.4.2 // indirect
|
||||||
cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
|
cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
|
||||||
dario.cat/mergo v1.0.0 // indirect
|
dario.cat/mergo v1.0.0 // indirect
|
||||||
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
|
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
|
||||||
|
|
@ -190,8 +190,8 @@ require (
|
||||||
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect
|
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae // indirect
|
google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e // indirect
|
||||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
gotest.tools/v3 v3.4.0 // indirect
|
gotest.tools/v3 v3.4.0 // indirect
|
||||||
|
|
|
||||||
24
go.sum
24
go.sum
|
|
@ -1,8 +1,8 @@
|
||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.113.0 h1:g3C70mn3lWfckKBiCVsAshabrDg01pQ0pnX1MNtnMkA=
|
cloud.google.com/go v0.114.0 h1:OIPFAdfrFDFO2ve2U7r/H5SwSbBzEdrBdE7xkgwc+kY=
|
||||||
cloud.google.com/go v0.113.0/go.mod h1:glEqlogERKYeePz6ZdkcLJ28Q2I6aERgDDErBg9GzO8=
|
cloud.google.com/go v0.114.0/go.mod h1:ZV9La5YYxctro1HTPug5lXH/GefROyW8PPD4T8n9J8E=
|
||||||
cloud.google.com/go/auth v0.4.1 h1:Z7YNIhlWRtrnKlZke7z3GMqzvuYzdc2z98F9D1NV5Hg=
|
cloud.google.com/go/auth v0.4.2 h1:sb0eyLkhRtpq5jA+a8KWw0W70YcdVca7KJ8TM0AFYDg=
|
||||||
cloud.google.com/go/auth v0.4.1/go.mod h1:QVBuVEKpCn4Zp58hzRGvL0tjRGU0YqdRTdCHM1IHnro=
|
cloud.google.com/go/auth v0.4.2/go.mod h1:Kqvlz1cf1sNA0D+sYJnkPQOP+JMHkuHeIgVmCRtZOLc=
|
||||||
cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
|
cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
|
||||||
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
|
cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
|
||||||
cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
|
cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
|
||||||
|
|
@ -638,8 +638,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
|
||||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
|
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
|
||||||
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
|
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
|
||||||
google.golang.org/api v0.181.0 h1:rPdjwnWgiPPOJx3IcSAQ2III5aX5tCer6wMpa/xmZi4=
|
google.golang.org/api v0.182.0 h1:if5fPvudRQ78GeRx3RayIoiuV7modtErPIZC/T2bIvE=
|
||||||
google.golang.org/api v0.181.0/go.mod h1:MnQ+M0CFsfUwA5beZ+g/vCBCPXvtmZwRz2qzZk8ih1k=
|
google.golang.org/api v0.182.0/go.mod h1:cGhjy4caqA5yXRzEhkHI8Y9mfyC2VLTlER2l08xaqtM=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
|
@ -647,17 +647,17 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98
|
||||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||||
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda h1:wu/KJm9KJwpfHWhkkZGohVC6KRrc1oJNr4jwtQMOQXw=
|
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda h1:wu/KJm9KJwpfHWhkkZGohVC6KRrc1oJNr4jwtQMOQXw=
|
||||||
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda/go.mod h1:g2LLCvCeCSir/JJSWosk19BR4NVxGqHUC6rxIRsd7Aw=
|
google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda/go.mod h1:g2LLCvCeCSir/JJSWosk19BR4NVxGqHUC6rxIRsd7Aw=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae h1:AH34z6WAGVNkllnKs5raNq3yRq93VnjBG6rpfub/jYk=
|
google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8 h1:W5Xj/70xIA4x60O/IFyXivR5MGqblAb8R3w26pnD6No=
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae/go.mod h1:FfiGhwUm6CJviekPrc0oJ+7h29e+DmWU6UtjX0ZvI7Y=
|
google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8/go.mod h1:vPrPUTsDCYxXWjP7clS81mZ6/803D8K4iM9Ma27VKas=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8 h1:mxSlqyb8ZAHsYDCfiXN1EDdNTdvjUJSLY+OnAUtYNYA=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e h1:Elxv5MwEkCI9f5SkoL6afed6NTdxaGoAo39eANBwHL8=
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8/go.mod h1:I7Y+G38R2bu5j1aLzfFmQfTcU/WnFuqDwLZAbvKTKpM=
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||||
google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM=
|
google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY=
|
||||||
google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA=
|
google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg=
|
||||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,15 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.4.2](https://github.com/googleapis/google-cloud-go/compare/auth/v0.4.1...auth/v0.4.2) (2024-05-16)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **auth:** Enable client certificates by default only for GDU ([#10151](https://github.com/googleapis/google-cloud-go/issues/10151)) ([7c52978](https://github.com/googleapis/google-cloud-go/commit/7c529786275a39b7e00525f7d5e7be0d963e9e15))
|
||||||
|
* **auth:** Handle non-Transport DefaultTransport ([#10162](https://github.com/googleapis/google-cloud-go/issues/10162)) ([fa3bfdb](https://github.com/googleapis/google-cloud-go/commit/fa3bfdb23aaa45b34394a8b61e753b3587506782)), refs [#10159](https://github.com/googleapis/google-cloud-go/issues/10159)
|
||||||
|
* **auth:** Have refresh time match docs ([#10147](https://github.com/googleapis/google-cloud-go/issues/10147)) ([bcb5568](https://github.com/googleapis/google-cloud-go/commit/bcb5568c07a54dd3d2e869d15f502b0741a609e8))
|
||||||
|
* **auth:** Update compute token fetching error with named prefix ([#10180](https://github.com/googleapis/google-cloud-go/issues/10180)) ([4573504](https://github.com/googleapis/google-cloud-go/commit/4573504828d2928bebedc875d87650ba227829ea))
|
||||||
|
|
||||||
## [0.4.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.4.0...auth/v0.4.1) (2024-05-09)
|
## [0.4.1](https://github.com/googleapis/google-cloud-go/compare/auth/v0.4.0...auth/v0.4.1) (2024-05-09)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ const (
|
||||||
|
|
||||||
// 3 minutes and 45 seconds before expiration. The shortest MDS cache is 4 minutes,
|
// 3 minutes and 45 seconds before expiration. The shortest MDS cache is 4 minutes,
|
||||||
// so we give it 15 seconds to refresh it's cache before attempting to refresh a token.
|
// so we give it 15 seconds to refresh it's cache before attempting to refresh a token.
|
||||||
defaultExpiryDelta = 215 * time.Second
|
defaultExpiryDelta = 225 * time.Second
|
||||||
|
|
||||||
universeDomainDefault = "googleapis.com"
|
universeDomainDefault = "googleapis.com"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -64,9 +64,9 @@ func (cs computeProvider) Token(ctx context.Context) (*auth.Token, error) {
|
||||||
v.Set("scopes", strings.Join(cs.scopes, ","))
|
v.Set("scopes", strings.Join(cs.scopes, ","))
|
||||||
tokenURI.RawQuery = v.Encode()
|
tokenURI.RawQuery = v.Encode()
|
||||||
}
|
}
|
||||||
tokenJSON, err := metadata.Get(tokenURI.String())
|
tokenJSON, err := metadata.GetWithContext(ctx, tokenURI.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("credentials: cannot fetch token: %w", err)
|
||||||
}
|
}
|
||||||
var res metadataTokenResp
|
var res metadataTokenResp
|
||||||
if err := json.NewDecoder(strings.NewReader(tokenJSON)).Decode(&res); err != nil {
|
if err := json.NewDecoder(strings.NewReader(tokenJSON)).Decode(&res); err != nil {
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,14 @@ func AddAuthorizationMiddleware(client *http.Client, creds *auth.Credentials) er
|
||||||
}
|
}
|
||||||
base := client.Transport
|
base := client.Transport
|
||||||
if base == nil {
|
if base == nil {
|
||||||
base = http.DefaultTransport.(*http.Transport).Clone()
|
if dt, ok := http.DefaultTransport.(*http.Transport); ok {
|
||||||
|
base = dt.Clone()
|
||||||
|
} else {
|
||||||
|
// Directly reuse the DefaultTransport if the application has
|
||||||
|
// replaced it with an implementation of RoundTripper other than
|
||||||
|
// http.Transport.
|
||||||
|
base = http.DefaultTransport
|
||||||
|
}
|
||||||
}
|
}
|
||||||
client.Transport = &authTransport{
|
client.Transport = &authTransport{
|
||||||
creds: creds,
|
creds: creds,
|
||||||
|
|
|
||||||
|
|
@ -217,7 +217,7 @@ func getTransportConfig(opts *Options) (*transportConfig, error) {
|
||||||
// encountered while initializing the default source will be reported as client
|
// encountered while initializing the default source will be reported as client
|
||||||
// error (ex. corrupt metadata file).
|
// error (ex. corrupt metadata file).
|
||||||
func getClientCertificateSource(opts *Options) (cert.Provider, error) {
|
func getClientCertificateSource(opts *Options) (cert.Provider, error) {
|
||||||
if !isClientCertificateEnabled() {
|
if !isClientCertificateEnabled(opts) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
} else if opts.ClientCertProvider != nil {
|
} else if opts.ClientCertProvider != nil {
|
||||||
return opts.ClientCertProvider, nil
|
return opts.ClientCertProvider, nil
|
||||||
|
|
@ -226,14 +226,14 @@ func getClientCertificateSource(opts *Options) (cert.Provider, error) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// isClientCertificateEnabled returns true by default, unless explicitly set to false via env var.
|
// isClientCertificateEnabled returns true by default for all GDU universe domain, unless explicitly overridden by env var
|
||||||
func isClientCertificateEnabled() bool {
|
func isClientCertificateEnabled(opts *Options) bool {
|
||||||
if value, ok := os.LookupEnv(googleAPIUseCertSource); ok {
|
if value, ok := os.LookupEnv(googleAPIUseCertSource); ok {
|
||||||
// error as false is OK
|
// error as false is OK
|
||||||
b, _ := strconv.ParseBool(value)
|
b, _ := strconv.ParseBool(value)
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
return true
|
return opts.isUniverseDomainGDU()
|
||||||
}
|
}
|
||||||
|
|
||||||
type transportConfig struct {
|
type transportConfig struct {
|
||||||
|
|
|
||||||
|
|
@ -776,7 +776,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/commerce/latest/consumer/procurement/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/commerce/latest/consumer/procurement/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/compute/apiv1": {
|
"cloud.google.com/go/compute/apiv1": {
|
||||||
|
|
@ -826,7 +826,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/config/latest/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/config/latest/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/contactcenterinsights/apiv1": {
|
"cloud.google.com/go/contactcenterinsights/apiv1": {
|
||||||
|
|
@ -1666,7 +1666,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/migrationcenter/latest/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/migrationcenter/latest/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/monitoring/apiv3/v2": {
|
"cloud.google.com/go/monitoring/apiv3/v2": {
|
||||||
|
|
@ -1706,7 +1706,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/netapp/latest/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/netapp/latest/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/networkconnectivity/apiv1": {
|
"cloud.google.com/go/networkconnectivity/apiv1": {
|
||||||
|
|
@ -2076,7 +2076,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/redis/latest/cluster/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/redis/latest/cluster/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/resourcemanager/apiv2": {
|
"cloud.google.com/go/resourcemanager/apiv2": {
|
||||||
|
|
@ -2219,6 +2219,16 @@
|
||||||
"release_level": "stable",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
|
"cloud.google.com/go/security/publicca/apiv1": {
|
||||||
|
"api_shortname": "publicca",
|
||||||
|
"distribution_name": "cloud.google.com/go/security/publicca/apiv1",
|
||||||
|
"description": "Public Certificate Authority API",
|
||||||
|
"language": "go",
|
||||||
|
"client_library_type": "generated",
|
||||||
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/security/latest/publicca/apiv1",
|
||||||
|
"release_level": "preview",
|
||||||
|
"library_type": "GAPIC_AUTO"
|
||||||
|
},
|
||||||
"cloud.google.com/go/security/publicca/apiv1beta1": {
|
"cloud.google.com/go/security/publicca/apiv1beta1": {
|
||||||
"api_shortname": "publicca",
|
"api_shortname": "publicca",
|
||||||
"distribution_name": "cloud.google.com/go/security/publicca/apiv1beta1",
|
"distribution_name": "cloud.google.com/go/security/publicca/apiv1beta1",
|
||||||
|
|
@ -2336,7 +2346,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/servicehealth/latest/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/servicehealth/latest/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/servicemanagement/apiv1": {
|
"cloud.google.com/go/servicemanagement/apiv1": {
|
||||||
|
|
@ -2866,7 +2876,7 @@
|
||||||
"language": "go",
|
"language": "go",
|
||||||
"client_library_type": "generated",
|
"client_library_type": "generated",
|
||||||
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/workstations/latest/apiv1",
|
"client_documentation": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/workstations/latest/apiv1",
|
||||||
"release_level": "preview",
|
"release_level": "stable",
|
||||||
"library_type": "GAPIC_AUTO"
|
"library_type": "GAPIC_AUTO"
|
||||||
},
|
},
|
||||||
"cloud.google.com/go/workstations/apiv1beta": {
|
"cloud.google.com/go/workstations/apiv1beta": {
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,4 @@
|
||||||
package internal
|
package internal
|
||||||
|
|
||||||
// Version is the current tagged release of the library.
|
// Version is the current tagged release of the library.
|
||||||
const Version = "0.181.0"
|
const Version = "0.182.0"
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
"location": "me-central2"
|
"location": "me-central2"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"etag": "\"33303333323233383838323039393532373539\"",
|
"etag": "\"3132383134303835313436343635393933303731\"",
|
||||||
"icons": {
|
"icons": {
|
||||||
"x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
|
"x16": "https://www.google.com/images/icons/product/cloud_storage-16.png",
|
||||||
"x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
|
"x32": "https://www.google.com/images/icons/product/cloud_storage-32.png"
|
||||||
|
|
@ -681,6 +681,38 @@
|
||||||
"https://www.googleapis.com/auth/devstorage.full_control"
|
"https://www.googleapis.com/auth/devstorage.full_control"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"getStorageLayout": {
|
||||||
|
"description": "Returns the storage layout configuration for the specified bucket. Note that this operation requires storage.objects.list permission.",
|
||||||
|
"httpMethod": "GET",
|
||||||
|
"id": "storage.buckets.getStorageLayout",
|
||||||
|
"parameterOrder": [
|
||||||
|
"bucket"
|
||||||
|
],
|
||||||
|
"parameters": {
|
||||||
|
"bucket": {
|
||||||
|
"description": "Name of a bucket.",
|
||||||
|
"location": "path",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"prefix": {
|
||||||
|
"description": "An optional prefix used for permission check. It is useful when the caller only has storage.objects.list permission under a specific prefix.",
|
||||||
|
"location": "query",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path": "b/{bucket}/storageLayout",
|
||||||
|
"response": {
|
||||||
|
"$ref": "BucketStorageLayout"
|
||||||
|
},
|
||||||
|
"scopes": [
|
||||||
|
"https://www.googleapis.com/auth/cloud-platform",
|
||||||
|
"https://www.googleapis.com/auth/cloud-platform.read-only",
|
||||||
|
"https://www.googleapis.com/auth/devstorage.full_control",
|
||||||
|
"https://www.googleapis.com/auth/devstorage.read_only",
|
||||||
|
"https://www.googleapis.com/auth/devstorage.read_write"
|
||||||
|
]
|
||||||
|
},
|
||||||
"insert": {
|
"insert": {
|
||||||
"description": "Creates a new bucket.",
|
"description": "Creates a new bucket.",
|
||||||
"httpMethod": "POST",
|
"httpMethod": "POST",
|
||||||
|
|
@ -4043,7 +4075,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"revision": "20240319",
|
"revision": "20240524",
|
||||||
"rootUrl": "https://storage.googleapis.com/",
|
"rootUrl": "https://storage.googleapis.com/",
|
||||||
"schemas": {
|
"schemas": {
|
||||||
"AnywhereCache": {
|
"AnywhereCache": {
|
||||||
|
|
@ -4662,6 +4694,53 @@
|
||||||
},
|
},
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
|
"BucketStorageLayout": {
|
||||||
|
"description": "The storage layout configuration of a bucket.",
|
||||||
|
"id": "BucketStorageLayout",
|
||||||
|
"properties": {
|
||||||
|
"bucket": {
|
||||||
|
"description": "The name of the bucket.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"customPlacementConfig": {
|
||||||
|
"description": "The bucket's custom placement configuration for Custom Dual Regions.",
|
||||||
|
"properties": {
|
||||||
|
"dataLocations": {
|
||||||
|
"description": "The list of regional locations in which data is placed.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"type": "array"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"hierarchicalNamespace": {
|
||||||
|
"description": "The bucket's hierarchical namespace configuration.",
|
||||||
|
"properties": {
|
||||||
|
"enabled": {
|
||||||
|
"description": "When set to true, hierarchical namespace is enabled for this bucket.",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"kind": {
|
||||||
|
"default": "storage#storageLayout",
|
||||||
|
"description": "The kind of item this is. For storage layout, this is always storage#storageLayout.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"location": {
|
||||||
|
"description": "The location of the bucket.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"locationType": {
|
||||||
|
"description": "The type of the bucket location.",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
"Buckets": {
|
"Buckets": {
|
||||||
"description": "A list of buckets.",
|
"description": "A list of buckets.",
|
||||||
"id": "Buckets",
|
"id": "Buckets",
|
||||||
|
|
|
||||||
|
|
@ -1257,6 +1257,90 @@ func (s *BucketAccessControls) MarshalJSON() ([]byte, error) {
|
||||||
return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
|
return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BucketStorageLayout: The storage layout configuration of a bucket.
|
||||||
|
type BucketStorageLayout struct {
|
||||||
|
// Bucket: The name of the bucket.
|
||||||
|
Bucket string `json:"bucket,omitempty"`
|
||||||
|
// CustomPlacementConfig: The bucket's custom placement configuration for
|
||||||
|
// Custom Dual Regions.
|
||||||
|
CustomPlacementConfig *BucketStorageLayoutCustomPlacementConfig `json:"customPlacementConfig,omitempty"`
|
||||||
|
// HierarchicalNamespace: The bucket's hierarchical namespace configuration.
|
||||||
|
HierarchicalNamespace *BucketStorageLayoutHierarchicalNamespace `json:"hierarchicalNamespace,omitempty"`
|
||||||
|
// Kind: The kind of item this is. For storage layout, this is always
|
||||||
|
// storage#storageLayout.
|
||||||
|
Kind string `json:"kind,omitempty"`
|
||||||
|
// Location: The location of the bucket.
|
||||||
|
Location string `json:"location,omitempty"`
|
||||||
|
// LocationType: The type of the bucket location.
|
||||||
|
LocationType string `json:"locationType,omitempty"`
|
||||||
|
|
||||||
|
// ServerResponse contains the HTTP response code and headers from the server.
|
||||||
|
googleapi.ServerResponse `json:"-"`
|
||||||
|
// ForceSendFields is a list of field names (e.g. "Bucket") to unconditionally
|
||||||
|
// include in API requests. By default, fields with empty or default values are
|
||||||
|
// omitted from API requests. See
|
||||||
|
// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
|
||||||
|
// details.
|
||||||
|
ForceSendFields []string `json:"-"`
|
||||||
|
// NullFields is a list of field names (e.g. "Bucket") to include in API
|
||||||
|
// requests with the JSON null value. By default, fields with empty values are
|
||||||
|
// omitted from API requests. See
|
||||||
|
// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
|
||||||
|
NullFields []string `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *BucketStorageLayout) MarshalJSON() ([]byte, error) {
|
||||||
|
type NoMethod BucketStorageLayout
|
||||||
|
return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BucketStorageLayoutCustomPlacementConfig: The bucket's custom placement
|
||||||
|
// configuration for Custom Dual Regions.
|
||||||
|
type BucketStorageLayoutCustomPlacementConfig struct {
|
||||||
|
// DataLocations: The list of regional locations in which data is placed.
|
||||||
|
DataLocations []string `json:"dataLocations,omitempty"`
|
||||||
|
// ForceSendFields is a list of field names (e.g. "DataLocations") to
|
||||||
|
// unconditionally include in API requests. By default, fields with empty or
|
||||||
|
// default values are omitted from API requests. See
|
||||||
|
// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
|
||||||
|
// details.
|
||||||
|
ForceSendFields []string `json:"-"`
|
||||||
|
// NullFields is a list of field names (e.g. "DataLocations") to include in API
|
||||||
|
// requests with the JSON null value. By default, fields with empty values are
|
||||||
|
// omitted from API requests. See
|
||||||
|
// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
|
||||||
|
NullFields []string `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *BucketStorageLayoutCustomPlacementConfig) MarshalJSON() ([]byte, error) {
|
||||||
|
type NoMethod BucketStorageLayoutCustomPlacementConfig
|
||||||
|
return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BucketStorageLayoutHierarchicalNamespace: The bucket's hierarchical
|
||||||
|
// namespace configuration.
|
||||||
|
type BucketStorageLayoutHierarchicalNamespace struct {
|
||||||
|
// Enabled: When set to true, hierarchical namespace is enabled for this
|
||||||
|
// bucket.
|
||||||
|
Enabled bool `json:"enabled,omitempty"`
|
||||||
|
// ForceSendFields is a list of field names (e.g. "Enabled") to unconditionally
|
||||||
|
// include in API requests. By default, fields with empty or default values are
|
||||||
|
// omitted from API requests. See
|
||||||
|
// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
|
||||||
|
// details.
|
||||||
|
ForceSendFields []string `json:"-"`
|
||||||
|
// NullFields is a list of field names (e.g. "Enabled") to include in API
|
||||||
|
// requests with the JSON null value. By default, fields with empty values are
|
||||||
|
// omitted from API requests. See
|
||||||
|
// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
|
||||||
|
NullFields []string `json:"-"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *BucketStorageLayoutHierarchicalNamespace) MarshalJSON() ([]byte, error) {
|
||||||
|
type NoMethod BucketStorageLayoutHierarchicalNamespace
|
||||||
|
return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields)
|
||||||
|
}
|
||||||
|
|
||||||
// Buckets: A list of buckets.
|
// Buckets: A list of buckets.
|
||||||
type Buckets struct {
|
type Buckets struct {
|
||||||
// Items: The list of items.
|
// Items: The list of items.
|
||||||
|
|
@ -4350,6 +4434,123 @@ func (c *BucketsGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, err
|
||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BucketsGetStorageLayoutCall struct {
|
||||||
|
s *Service
|
||||||
|
bucket string
|
||||||
|
urlParams_ gensupport.URLParams
|
||||||
|
ifNoneMatch_ string
|
||||||
|
ctx_ context.Context
|
||||||
|
header_ http.Header
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetStorageLayout: Returns the storage layout configuration for the specified
|
||||||
|
// bucket. Note that this operation requires storage.objects.list permission.
|
||||||
|
//
|
||||||
|
// - bucket: Name of a bucket.
|
||||||
|
func (r *BucketsService) GetStorageLayout(bucket string) *BucketsGetStorageLayoutCall {
|
||||||
|
c := &BucketsGetStorageLayoutCall{s: r.s, urlParams_: make(gensupport.URLParams)}
|
||||||
|
c.bucket = bucket
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prefix sets the optional parameter "prefix": An optional prefix used for
|
||||||
|
// permission check. It is useful when the caller only has storage.objects.list
|
||||||
|
// permission under a specific prefix.
|
||||||
|
func (c *BucketsGetStorageLayoutCall) Prefix(prefix string) *BucketsGetStorageLayoutCall {
|
||||||
|
c.urlParams_.Set("prefix", prefix)
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fields allows partial responses to be retrieved. See
|
||||||
|
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
|
||||||
|
// details.
|
||||||
|
func (c *BucketsGetStorageLayoutCall) Fields(s ...googleapi.Field) *BucketsGetStorageLayoutCall {
|
||||||
|
c.urlParams_.Set("fields", googleapi.CombineFields(s))
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// IfNoneMatch sets an optional parameter which makes the operation fail if the
|
||||||
|
// object's ETag matches the given value. This is useful for getting updates
|
||||||
|
// only after the object has changed since the last request.
|
||||||
|
func (c *BucketsGetStorageLayoutCall) IfNoneMatch(entityTag string) *BucketsGetStorageLayoutCall {
|
||||||
|
c.ifNoneMatch_ = entityTag
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// Context sets the context to be used in this call's Do method.
|
||||||
|
func (c *BucketsGetStorageLayoutCall) Context(ctx context.Context) *BucketsGetStorageLayoutCall {
|
||||||
|
c.ctx_ = ctx
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// Header returns a http.Header that can be modified by the caller to add
|
||||||
|
// headers to the request.
|
||||||
|
func (c *BucketsGetStorageLayoutCall) Header() http.Header {
|
||||||
|
if c.header_ == nil {
|
||||||
|
c.header_ = make(http.Header)
|
||||||
|
}
|
||||||
|
return c.header_
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *BucketsGetStorageLayoutCall) doRequest(alt string) (*http.Response, error) {
|
||||||
|
reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
|
||||||
|
if c.ifNoneMatch_ != "" {
|
||||||
|
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
|
||||||
|
}
|
||||||
|
var body io.Reader = nil
|
||||||
|
c.urlParams_.Set("alt", alt)
|
||||||
|
c.urlParams_.Set("prettyPrint", "false")
|
||||||
|
urls := googleapi.ResolveRelative(c.s.BasePath, "b/{bucket}/storageLayout")
|
||||||
|
urls += "?" + c.urlParams_.Encode()
|
||||||
|
req, err := http.NewRequest("GET", urls, body)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Header = reqHeaders
|
||||||
|
googleapi.Expand(req.URL, map[string]string{
|
||||||
|
"bucket": c.bucket,
|
||||||
|
})
|
||||||
|
return gensupport.SendRequest(c.ctx_, c.s.client, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do executes the "storage.buckets.getStorageLayout" call.
|
||||||
|
// Any non-2xx status code is an error. Response headers are in either
|
||||||
|
// *BucketStorageLayout.ServerResponse.Header or (if a response was returned at
|
||||||
|
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
|
||||||
|
// check whether the returned error was because http.StatusNotModified was
|
||||||
|
// returned.
|
||||||
|
func (c *BucketsGetStorageLayoutCall) Do(opts ...googleapi.CallOption) (*BucketStorageLayout, error) {
|
||||||
|
gensupport.SetOptions(c.urlParams_, opts...)
|
||||||
|
res, err := c.doRequest("json")
|
||||||
|
if res != nil && res.StatusCode == http.StatusNotModified {
|
||||||
|
if res.Body != nil {
|
||||||
|
res.Body.Close()
|
||||||
|
}
|
||||||
|
return nil, gensupport.WrapError(&googleapi.Error{
|
||||||
|
Code: res.StatusCode,
|
||||||
|
Header: res.Header,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer googleapi.CloseBody(res)
|
||||||
|
if err := googleapi.CheckResponse(res); err != nil {
|
||||||
|
return nil, gensupport.WrapError(err)
|
||||||
|
}
|
||||||
|
ret := &BucketStorageLayout{
|
||||||
|
ServerResponse: googleapi.ServerResponse{
|
||||||
|
Header: res.Header,
|
||||||
|
HTTPStatusCode: res.StatusCode,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
target := &ret
|
||||||
|
if err := gensupport.DecodeResponse(target, res); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
|
||||||
type BucketsInsertCall struct {
|
type BucketsInsertCall struct {
|
||||||
s *Service
|
s *Service
|
||||||
bucket *Bucket
|
bucket *Bucket
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2015 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.26.0
|
// protoc-gen-go v1.26.0
|
||||||
// protoc v3.12.2
|
// protoc v4.24.4
|
||||||
// source: google/api/annotations.proto
|
// source: google/api/annotations.proto
|
||||||
|
|
||||||
package annotations
|
package annotations
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
2
vendor/google.golang.org/genproto/googleapis/api/annotations/field_behavior.pb.go
generated
vendored
2
vendor/google.golang.org/genproto/googleapis/api/annotations/field_behavior.pb.go
generated
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.26.0
|
// protoc-gen-go v1.26.0
|
||||||
// protoc v3.21.9
|
// protoc v4.24.4
|
||||||
// source: google/api/http.proto
|
// source: google/api/http.proto
|
||||||
|
|
||||||
package annotations
|
package annotations
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.26.0
|
// protoc-gen-go v1.26.0
|
||||||
// protoc v3.21.9
|
// protoc v4.24.4
|
||||||
// source: google/api/resource.proto
|
// source: google/api/resource.proto
|
||||||
|
|
||||||
package annotations
|
package annotations
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.26.0
|
// protoc-gen-go v1.26.0
|
||||||
// protoc v3.21.9
|
// protoc v4.24.4
|
||||||
// source: google/api/routing.proto
|
// source: google/api/routing.proto
|
||||||
|
|
||||||
package annotations
|
package annotations
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2023 Google LLC
|
// Copyright 2024 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.26.0
|
// protoc-gen-go v1.26.0
|
||||||
// protoc v3.21.9
|
// protoc v4.24.4
|
||||||
// source: google/api/launch_stage.proto
|
// source: google/api/launch_stage.proto
|
||||||
|
|
||||||
package api
|
package api
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ How to get your contributions merged smoothly and quickly.
|
||||||
- **All tests need to be passing** before your change can be merged. We
|
- **All tests need to be passing** before your change can be merged. We
|
||||||
recommend you **run tests locally** before creating your PR to catch breakages
|
recommend you **run tests locally** before creating your PR to catch breakages
|
||||||
early on.
|
early on.
|
||||||
- `VET_SKIP_PROTO=1 ./vet.sh` to catch vet errors
|
- `./scripts/vet.sh` to catch vet errors
|
||||||
- `go test -cpu 1,4 -timeout 7m ./...` to run the tests
|
- `go test -cpu 1,4 -timeout 7m ./...` to run the tests
|
||||||
- `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode
|
- `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ for general contribution guidelines.
|
||||||
|
|
||||||
## Maintainers (in alphabetical order)
|
## Maintainers (in alphabetical order)
|
||||||
|
|
||||||
|
- [atollena](https://github.com/atollena), Datadog, Inc.
|
||||||
- [cesarghali](https://github.com/cesarghali), Google LLC
|
- [cesarghali](https://github.com/cesarghali), Google LLC
|
||||||
- [dfawley](https://github.com/dfawley), Google LLC
|
- [dfawley](https://github.com/dfawley), Google LLC
|
||||||
- [easwars](https://github.com/easwars), Google LLC
|
- [easwars](https://github.com/easwars), Google LLC
|
||||||
|
|
|
||||||
|
|
@ -30,17 +30,20 @@ testdeps:
|
||||||
GO111MODULE=on go get -d -v -t google.golang.org/grpc/...
|
GO111MODULE=on go get -d -v -t google.golang.org/grpc/...
|
||||||
|
|
||||||
vet: vetdeps
|
vet: vetdeps
|
||||||
./vet.sh
|
./scripts/vet.sh
|
||||||
|
|
||||||
vetdeps:
|
vetdeps:
|
||||||
./vet.sh -install
|
./scripts/vet.sh -install
|
||||||
|
|
||||||
.PHONY: \
|
.PHONY: \
|
||||||
all \
|
all \
|
||||||
build \
|
build \
|
||||||
clean \
|
clean \
|
||||||
|
deps \
|
||||||
proto \
|
proto \
|
||||||
test \
|
test \
|
||||||
|
testsubmodule \
|
||||||
testrace \
|
testrace \
|
||||||
|
testdeps \
|
||||||
vet \
|
vet \
|
||||||
vetdeps
|
vetdeps
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.32.0
|
// protoc-gen-go v1.33.0
|
||||||
// protoc v4.25.2
|
// protoc v4.25.2
|
||||||
// source: grpc/lb/v1/load_balancer.proto
|
// source: grpc/lb/v1/load_balancer.proto
|
||||||
|
|
||||||
|
|
|
||||||
11
vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go
generated
vendored
11
vendor/google.golang.org/grpc/balancer/grpclb/grpc_lb_v1/load_balancer_grpc.pb.go
generated
vendored
|
|
@ -34,8 +34,8 @@ import (
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
// is compatible with the grpc package it is being compiled against.
|
// is compatible with the grpc package it is being compiled against.
|
||||||
// Requires gRPC-Go v1.32.0 or later.
|
// Requires gRPC-Go v1.62.0 or later.
|
||||||
const _ = grpc.SupportPackageIsVersion7
|
const _ = grpc.SupportPackageIsVersion8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LoadBalancer_BalanceLoad_FullMethodName = "/grpc.lb.v1.LoadBalancer/BalanceLoad"
|
LoadBalancer_BalanceLoad_FullMethodName = "/grpc.lb.v1.LoadBalancer/BalanceLoad"
|
||||||
|
|
@ -58,11 +58,12 @@ func NewLoadBalancerClient(cc grpc.ClientConnInterface) LoadBalancerClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *loadBalancerClient) BalanceLoad(ctx context.Context, opts ...grpc.CallOption) (LoadBalancer_BalanceLoadClient, error) {
|
func (c *loadBalancerClient) BalanceLoad(ctx context.Context, opts ...grpc.CallOption) (LoadBalancer_BalanceLoadClient, error) {
|
||||||
stream, err := c.cc.NewStream(ctx, &LoadBalancer_ServiceDesc.Streams[0], LoadBalancer_BalanceLoad_FullMethodName, opts...)
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
stream, err := c.cc.NewStream(ctx, &LoadBalancer_ServiceDesc.Streams[0], LoadBalancer_BalanceLoad_FullMethodName, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
x := &loadBalancerBalanceLoadClient{stream}
|
x := &loadBalancerBalanceLoadClient{ClientStream: stream}
|
||||||
return x, nil
|
return x, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -116,7 +117,7 @@ func RegisterLoadBalancerServer(s grpc.ServiceRegistrar, srv LoadBalancerServer)
|
||||||
}
|
}
|
||||||
|
|
||||||
func _LoadBalancer_BalanceLoad_Handler(srv interface{}, stream grpc.ServerStream) error {
|
func _LoadBalancer_BalanceLoad_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
return srv.(LoadBalancerServer).BalanceLoad(&loadBalancerBalanceLoadServer{stream})
|
return srv.(LoadBalancerServer).BalanceLoad(&loadBalancerBalanceLoadServer{ServerStream: stream})
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoadBalancer_BalanceLoadServer interface {
|
type LoadBalancer_BalanceLoadServer interface {
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.32.0
|
// protoc-gen-go v1.33.0
|
||||||
// protoc v4.25.2
|
// protoc v4.25.2
|
||||||
// source: grpc/binlog/v1/binarylog.proto
|
// source: grpc/binlog/v1/binarylog.proto
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,6 @@ import (
|
||||||
"google.golang.org/grpc/internal/channelz"
|
"google.golang.org/grpc/internal/channelz"
|
||||||
"google.golang.org/grpc/internal/grpcsync"
|
"google.golang.org/grpc/internal/grpcsync"
|
||||||
"google.golang.org/grpc/internal/idle"
|
"google.golang.org/grpc/internal/idle"
|
||||||
"google.golang.org/grpc/internal/pretty"
|
|
||||||
iresolver "google.golang.org/grpc/internal/resolver"
|
iresolver "google.golang.org/grpc/internal/resolver"
|
||||||
"google.golang.org/grpc/internal/transport"
|
"google.golang.org/grpc/internal/transport"
|
||||||
"google.golang.org/grpc/keepalive"
|
"google.golang.org/grpc/keepalive"
|
||||||
|
|
@ -121,8 +120,9 @@ func (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*ires
|
||||||
// https://github.com/grpc/grpc/blob/master/doc/naming.md. e.g. to use dns
|
// https://github.com/grpc/grpc/blob/master/doc/naming.md. e.g. to use dns
|
||||||
// resolver, a "dns:///" prefix should be applied to the target.
|
// resolver, a "dns:///" prefix should be applied to the target.
|
||||||
//
|
//
|
||||||
// The DialOptions returned by WithBlock, WithTimeout, and
|
// The DialOptions returned by WithBlock, WithTimeout,
|
||||||
// WithReturnConnectionError are ignored by this function.
|
// WithReturnConnectionError, and FailOnNonTempDialError are ignored by this
|
||||||
|
// function.
|
||||||
func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) {
|
func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) {
|
||||||
cc := &ClientConn{
|
cc := &ClientConn{
|
||||||
target: target,
|
target: target,
|
||||||
|
|
@ -196,6 +196,8 @@ func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dial calls DialContext(context.Background(), target, opts...).
|
// Dial calls DialContext(context.Background(), target, opts...).
|
||||||
|
//
|
||||||
|
// Deprecated: use NewClient instead. Will be supported throughout 1.x.
|
||||||
func Dial(target string, opts ...DialOption) (*ClientConn, error) {
|
func Dial(target string, opts ...DialOption) (*ClientConn, error) {
|
||||||
return DialContext(context.Background(), target, opts...)
|
return DialContext(context.Background(), target, opts...)
|
||||||
}
|
}
|
||||||
|
|
@ -209,6 +211,8 @@ func Dial(target string, opts ...DialOption) (*ClientConn, error) {
|
||||||
// "passthrough" for backward compatibility. This distinction should not matter
|
// "passthrough" for backward compatibility. This distinction should not matter
|
||||||
// to most users, but could matter to legacy users that specify a custom dialer
|
// to most users, but could matter to legacy users that specify a custom dialer
|
||||||
// and expect it to receive the target string directly.
|
// and expect it to receive the target string directly.
|
||||||
|
//
|
||||||
|
// Deprecated: use NewClient instead. Will be supported throughout 1.x.
|
||||||
func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) {
|
func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) {
|
||||||
// At the end of this method, we kick the channel out of idle, rather than
|
// At the end of this method, we kick the channel out of idle, rather than
|
||||||
// waiting for the first rpc.
|
// waiting for the first rpc.
|
||||||
|
|
@ -838,6 +842,9 @@ func (cc *ClientConn) newAddrConnLocked(addrs []resolver.Address, opts balancer.
|
||||||
stateChan: make(chan struct{}),
|
stateChan: make(chan struct{}),
|
||||||
}
|
}
|
||||||
ac.ctx, ac.cancel = context.WithCancel(cc.ctx)
|
ac.ctx, ac.cancel = context.WithCancel(cc.ctx)
|
||||||
|
// Start with our address set to the first address; this may be updated if
|
||||||
|
// we connect to different addresses.
|
||||||
|
ac.channelz.ChannelMetrics.Target.Store(&addrs[0].Addr)
|
||||||
|
|
||||||
channelz.AddTraceEvent(logger, ac.channelz, 0, &channelz.TraceEvent{
|
channelz.AddTraceEvent(logger, ac.channelz, 0, &channelz.TraceEvent{
|
||||||
Desc: "Subchannel created",
|
Desc: "Subchannel created",
|
||||||
|
|
@ -929,10 +936,14 @@ func equalAddresses(a, b []resolver.Address) bool {
|
||||||
// updateAddrs updates ac.addrs with the new addresses list and handles active
|
// updateAddrs updates ac.addrs with the new addresses list and handles active
|
||||||
// connections or connection attempts.
|
// connections or connection attempts.
|
||||||
func (ac *addrConn) updateAddrs(addrs []resolver.Address) {
|
func (ac *addrConn) updateAddrs(addrs []resolver.Address) {
|
||||||
ac.mu.Lock()
|
|
||||||
channelz.Infof(logger, ac.channelz, "addrConn: updateAddrs curAddr: %v, addrs: %v", pretty.ToJSON(ac.curAddr), pretty.ToJSON(addrs))
|
|
||||||
|
|
||||||
addrs = copyAddressesWithoutBalancerAttributes(addrs)
|
addrs = copyAddressesWithoutBalancerAttributes(addrs)
|
||||||
|
limit := len(addrs)
|
||||||
|
if limit > 5 {
|
||||||
|
limit = 5
|
||||||
|
}
|
||||||
|
channelz.Infof(logger, ac.channelz, "addrConn: updateAddrs addrs (%d of %d): %v", limit, len(addrs), addrs[:limit])
|
||||||
|
|
||||||
|
ac.mu.Lock()
|
||||||
if equalAddresses(ac.addrs, addrs) {
|
if equalAddresses(ac.addrs, addrs) {
|
||||||
ac.mu.Unlock()
|
ac.mu.Unlock()
|
||||||
return
|
return
|
||||||
|
|
@ -1167,6 +1178,10 @@ type addrConn struct {
|
||||||
// is received, transport is closed, ac has been torn down).
|
// is received, transport is closed, ac has been torn down).
|
||||||
transport transport.ClientTransport // The current transport.
|
transport transport.ClientTransport // The current transport.
|
||||||
|
|
||||||
|
// This mutex is used on the RPC path, so its usage should be minimized as
|
||||||
|
// much as possible.
|
||||||
|
// TODO: Find a lock-free way to retrieve the transport and state from the
|
||||||
|
// addrConn.
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
curAddr resolver.Address // The current address.
|
curAddr resolver.Address // The current address.
|
||||||
addrs []resolver.Address // All addresses that the resolver resolved to.
|
addrs []resolver.Address // All addresses that the resolver resolved to.
|
||||||
|
|
@ -1292,6 +1307,7 @@ func (ac *addrConn) resetTransport() {
|
||||||
func (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error {
|
func (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error {
|
||||||
var firstConnErr error
|
var firstConnErr error
|
||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
|
ac.channelz.ChannelMetrics.Target.Store(&addr.Addr)
|
||||||
if ctx.Err() != nil {
|
if ctx.Err() != nil {
|
||||||
return errConnClosing
|
return errConnClosing
|
||||||
}
|
}
|
||||||
|
|
@ -1739,7 +1755,7 @@ func encodeAuthority(authority string) string {
|
||||||
return false
|
return false
|
||||||
case '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=': // Subdelim characters
|
case '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=': // Subdelim characters
|
||||||
return false
|
return false
|
||||||
case ':', '[', ']', '@': // Authority related delimeters
|
case ':', '[', ']', '@': // Authority related delimiters
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
// Everything else must be escaped.
|
// Everything else must be escaped.
|
||||||
|
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# This script serves as an example to demonstrate how to generate the gRPC-Go
|
|
||||||
# interface and the related messages from .proto file.
|
|
||||||
#
|
|
||||||
# It assumes the installation of i) Google proto buffer compiler at
|
|
||||||
# https://github.com/google/protobuf (after v2.6.1) and ii) the Go codegen
|
|
||||||
# plugin at https://github.com/golang/protobuf (after 2015-02-20). If you have
|
|
||||||
# not, please install them first.
|
|
||||||
#
|
|
||||||
# We recommend running this script at $GOPATH/src.
|
|
||||||
#
|
|
||||||
# If this is not what you need, feel free to make your own scripts. Again, this
|
|
||||||
# script is for demonstration purpose.
|
|
||||||
#
|
|
||||||
proto=$1
|
|
||||||
protoc --go_out=plugins=grpc:. $proto
|
|
||||||
|
|
@ -235,7 +235,7 @@ func (c *Code) UnmarshalJSON(b []byte) error {
|
||||||
|
|
||||||
if ci, err := strconv.ParseUint(string(b), 10, 32); err == nil {
|
if ci, err := strconv.ParseUint(string(b), 10, 32); err == nil {
|
||||||
if ci >= _maxCode {
|
if ci >= _maxCode {
|
||||||
return fmt.Errorf("invalid code: %q", ci)
|
return fmt.Errorf("invalid code: %d", ci)
|
||||||
}
|
}
|
||||||
|
|
||||||
*c = Code(ci)
|
*c = Code(ci)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.32.0
|
// protoc-gen-go v1.33.0
|
||||||
// protoc v4.25.2
|
// protoc v4.25.2
|
||||||
// source: grpc/gcp/altscontext.proto
|
// source: grpc/gcp/altscontext.proto
|
||||||
|
|
||||||
|
|
|
||||||
260
vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go
generated
vendored
260
vendor/google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp/handshaker.pb.go
generated
vendored
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.32.0
|
// protoc-gen-go v1.33.0
|
||||||
// protoc v4.25.2
|
// protoc v4.25.2
|
||||||
// source: grpc/gcp/handshaker.proto
|
// source: grpc/gcp/handshaker.proto
|
||||||
|
|
||||||
|
|
@ -458,11 +458,11 @@ type ServerHandshakeParameters struct {
|
||||||
// (Optional) A list of local identities supported by the server, if
|
// (Optional) A list of local identities supported by the server, if
|
||||||
// specified. Otherwise, the handshaker chooses a default local identity.
|
// specified. Otherwise, the handshaker chooses a default local identity.
|
||||||
LocalIdentities []*Identity `protobuf:"bytes,2,rep,name=local_identities,json=localIdentities,proto3" json:"local_identities,omitempty"`
|
LocalIdentities []*Identity `protobuf:"bytes,2,rep,name=local_identities,json=localIdentities,proto3" json:"local_identities,omitempty"`
|
||||||
// (Optional) An access token created by the caller only intended for use in
|
// A token created by the caller only intended for use in
|
||||||
// ALTS connections. The access token that should be used to authenticate to
|
// ALTS connections. The token should be used to authenticate to
|
||||||
// the peer. The access token MUST be strongly bound to the ALTS credentials
|
// the peer. The token MUST be strongly bound to the ALTS credentials
|
||||||
// used to establish the connection that the token is sent over.
|
// used to establish the connection that the token is sent over.
|
||||||
AccessToken *string `protobuf:"bytes,3,opt,name=access_token,json=accessToken,proto3,oneof" json:"access_token,omitempty"`
|
Token *string `protobuf:"bytes,3,opt,name=token,proto3,oneof" json:"token,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ServerHandshakeParameters) Reset() {
|
func (x *ServerHandshakeParameters) Reset() {
|
||||||
|
|
@ -511,9 +511,9 @@ func (x *ServerHandshakeParameters) GetLocalIdentities() []*Identity {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *ServerHandshakeParameters) GetAccessToken() string {
|
func (x *ServerHandshakeParameters) GetToken() string {
|
||||||
if x != nil && x.AccessToken != nil {
|
if x != nil && x.Token != nil {
|
||||||
return *x.AccessToken
|
return *x.Token
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
@ -1110,7 +1110,7 @@ var file_grpc_gcp_handshaker_proto_rawDesc = []byte{
|
||||||
0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61,
|
0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61,
|
||||||
0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
|
0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
|
||||||
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63,
|
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63,
|
||||||
0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbe, 0x01, 0x0a, 0x19, 0x53, 0x65,
|
0x63, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x19, 0x53, 0x65,
|
||||||
0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72,
|
0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72,
|
||||||
0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72,
|
0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x72,
|
||||||
0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
|
0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
|
||||||
|
|
@ -1119,130 +1119,128 @@ var file_grpc_gcp_handshaker_proto_rawDesc = []byte{
|
||||||
0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
|
0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
|
||||||
0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
|
0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79,
|
||||||
0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65,
|
0x52, 0x0f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65,
|
||||||
0x73, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65,
|
0x73, 0x12, 0x19, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
|
||||||
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73,
|
0x48, 0x00, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06,
|
||||||
0x73, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63,
|
0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa5, 0x04, 0x0a, 0x17, 0x53, 0x74, 0x61, 0x72, 0x74,
|
||||||
0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa5, 0x04, 0x0a, 0x17, 0x53,
|
0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52,
|
||||||
0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68,
|
0x65, 0x71, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||||
0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x12, 0x33, 0x0a, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63,
|
0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
|
||||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x18,
|
0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72,
|
||||||
0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x68, 0x61, 0x6e, 0x64, 0x73,
|
||||||
0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x6d, 0x0a, 0x14, 0x68,
|
0x68, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18,
|
||||||
0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
|
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70,
|
||||||
0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x72, 0x70, 0x63,
|
0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64,
|
||||||
0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
|
||||||
0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x2e, 0x48, 0x61, 0x6e,
|
|
||||||
0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
|
|
||||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65,
|
|
||||||
0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e,
|
|
||||||
0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e,
|
|
||||||
0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65,
|
|
||||||
0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
|
|
||||||
0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
|
|
||||||
0x74, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74,
|
|
||||||
0x12, 0x3b, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f,
|
|
||||||
0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
|
|
||||||
0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x72,
|
|
||||||
0x65, 0x6d, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x40, 0x0a,
|
|
||||||
0x0c, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20,
|
|
||||||
0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52,
|
|
||||||
0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
|
||||||
0x6e, 0x73, 0x52, 0x0b, 0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
|
|
||||||
0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a,
|
|
||||||
0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d,
|
|
||||||
0x65, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x6b, 0x0a, 0x18, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
|
|
||||||
0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
||||||
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
|
0x79, 0x52, 0x13, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61,
|
||||||
0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
|
0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74,
|
||||||
0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x65,
|
0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65,
|
||||||
0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72,
|
0x73, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f,
|
||||||
0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
|
0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63,
|
||||||
0x38, 0x01, 0x22, 0x62, 0x0a, 0x17, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68,
|
0x2e, 0x67, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x6c,
|
||||||
0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a,
|
0x6f, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0f,
|
||||||
0x08, 0x69, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
|
0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
|
||||||
0x07, 0x69, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77,
|
0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70,
|
||||||
0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x02,
|
0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74,
|
||||||
0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x74,
|
0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0c, 0x72, 0x70, 0x63,
|
||||||
0x65, 0x6e, 0x63, 0x79, 0x4d, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x6e, 0x64, 0x73,
|
0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||||
0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65,
|
0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63, 0x50, 0x72,
|
||||||
0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
|
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b,
|
||||||
0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43,
|
0x72, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d,
|
||||||
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65,
|
0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20,
|
||||||
0x71, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74,
|
0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a,
|
||||||
0x12, 0x46, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74,
|
0x65, 0x1a, 0x6b, 0x0a, 0x18, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
|
0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
|
||||||
0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e,
|
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
||||||
0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72,
|
0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
|
||||||
0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x65, 0x78, 0x74,
|
0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
|
||||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
|
0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74,
|
||||||
0x70, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d,
|
0x65, 0x72, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x62,
|
||||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x65, 0x78,
|
0x0a, 0x17, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d,
|
||||||
0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x9a,
|
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x5f,
|
||||||
0x03, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73,
|
0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x69, 0x6e, 0x42,
|
||||||
0x75, 0x6c, 0x74, 0x12, 0x31, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
|
0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f,
|
||||||
0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
|
0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
|
||||||
0x09, 0x52, 0x13, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72,
|
0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79,
|
||||||
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64,
|
0x4d, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65,
|
||||||
0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x72, 0x52, 0x65, 0x71, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73,
|
||||||
0x0e, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12,
|
0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70,
|
||||||
0x19, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28,
|
0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6c, 0x69, 0x65, 0x6e,
|
||||||
0x0c, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x0d, 0x70, 0x65,
|
0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52,
|
||||||
0x65, 0x72, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28,
|
0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x46, 0x0a, 0x0c,
|
||||||
0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65,
|
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01,
|
||||||
0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74,
|
0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x53, 0x74,
|
||||||
0x69, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65,
|
0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
|
||||||
0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72,
|
0x6b, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53,
|
||||||
0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52,
|
0x74, 0x61, 0x72, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01,
|
||||||
0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a,
|
0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x4e, 0x65,
|
||||||
0x0a, 0x11, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f,
|
0x78, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||||
0x70, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x43,
|
0x67, 0x65, 0x52, 0x65, 0x71, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x65, 0x78, 0x74, 0x42, 0x0b, 0x0a,
|
||||||
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65,
|
0x09, 0x72, 0x65, 0x71, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x9a, 0x03, 0x0a, 0x10, 0x48,
|
||||||
0x65, 0x72, 0x5f, 0x72, 0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
|
0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
|
||||||
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70,
|
0x31, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70,
|
||||||
0x2e, 0x52, 0x70, 0x63, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73,
|
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x61,
|
||||||
0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0f, 0x70, 0x65, 0x65, 0x72, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72,
|
0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
|
||||||
0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61,
|
0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f,
|
||||||
0x6d, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d,
|
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x63,
|
||||||
0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x40, 0x0a, 0x10, 0x48,
|
0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6b,
|
||||||
0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
|
0x65, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6b,
|
||||||
0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63,
|
0x65, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x0d, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x69,
|
||||||
0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02,
|
0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
|
||||||
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbe, 0x01,
|
0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
|
||||||
0x0a, 0x0e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
|
0x79, 0x52, 0x0c, 0x70, 0x65, 0x65, 0x72, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12,
|
||||||
0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01,
|
0x39, 0x0a, 0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
|
||||||
0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x6f, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12,
|
0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67,
|
||||||
0x25, 0x0a, 0x0e, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65,
|
0x63, 0x70, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x6c, 0x6f, 0x63,
|
||||||
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6f,
|
0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6b, 0x65,
|
||||||
0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
|
0x65, 0x70, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x18,
|
||||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
|
0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6b, 0x65, 0x65, 0x70, 0x43, 0x68, 0x61, 0x6e, 0x6e,
|
||||||
0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75,
|
0x65, 0x6c, 0x4f, 0x70, 0x65, 0x6e, 0x12, 0x49, 0x0a, 0x11, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x72,
|
||||||
0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74,
|
0x70, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
|
||||||
0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70,
|
0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x52, 0x70, 0x63,
|
||||||
|
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73,
|
||||||
|
0x52, 0x0f, 0x70, 0x65, 0x65, 0x72, 0x52, 0x70, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
|
||||||
|
0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73,
|
||||||
|
0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72,
|
||||||
|
0x61, 0x6d, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x40, 0x0a, 0x10, 0x48, 0x61, 0x6e, 0x64, 0x73,
|
||||||
|
0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63,
|
||||||
|
0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12,
|
||||||
|
0x18, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
||||||
|
0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xbe, 0x01, 0x0a, 0x0e, 0x48, 0x61,
|
||||||
|
0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1d, 0x0a, 0x0a,
|
||||||
|
0x6f, 0x75, 0x74, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
|
||||||
|
0x52, 0x09, 0x6f, 0x75, 0x74, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x62,
|
||||||
|
0x79, 0x74, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20,
|
||||||
|
0x01, 0x28, 0x0d, 0x52, 0x0d, 0x62, 0x79, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d,
|
||||||
|
0x65, 0x64, 0x12, 0x32, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01,
|
||||||
|
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61,
|
||||||
|
0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06,
|
||||||
|
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||||
|
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63,
|
||||||
|
0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74,
|
||||||
|
0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4a, 0x0a, 0x11, 0x48, 0x61,
|
||||||
|
0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12,
|
||||||
|
0x22, 0x0a, 0x1e, 0x48, 0x41, 0x4e, 0x44, 0x53, 0x48, 0x41, 0x4b, 0x45, 0x5f, 0x50, 0x52, 0x4f,
|
||||||
|
0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
|
||||||
|
0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
|
||||||
|
0x41, 0x4c, 0x54, 0x53, 0x10, 0x02, 0x2a, 0x45, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72,
|
||||||
|
0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a, 0x1c, 0x4e, 0x45, 0x54,
|
||||||
|
0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e,
|
||||||
|
0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54,
|
||||||
|
0x43, 0x50, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x02, 0x32, 0x5b, 0x0a,
|
||||||
|
0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69,
|
||||||
|
0x63, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x44, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b,
|
||||||
|
0x65, 0x12, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e,
|
||||||
|
0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x67, 0x72, 0x70,
|
||||||
0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72,
|
0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72,
|
||||||
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2a, 0x4a,
|
0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x6b, 0x0a, 0x15, 0x69, 0x6f,
|
||||||
0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
|
0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
|
||||||
0x63, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x41, 0x4e, 0x44, 0x53, 0x48, 0x41, 0x4b, 0x45,
|
0x6e, 0x61, 0x6c, 0x42, 0x0f, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x50,
|
||||||
0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
|
0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
|
||||||
0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4c, 0x53, 0x10, 0x01,
|
0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63,
|
||||||
0x12, 0x08, 0x0a, 0x04, 0x41, 0x4c, 0x54, 0x53, 0x10, 0x02, 0x2a, 0x45, 0x0a, 0x0f, 0x4e, 0x65,
|
0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61, 0x6c, 0x74, 0x73, 0x2f,
|
||||||
0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x20, 0x0a,
|
0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
|
||||||
0x1c, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f,
|
0x72, 0x70, 0x63, 0x5f, 0x67, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
|
|
||||||
0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10,
|
|
||||||
0x02, 0x32, 0x5b, 0x0a, 0x11, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x53,
|
|
||||||
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x44, 0x6f, 0x48, 0x61, 0x6e, 0x64,
|
|
||||||
0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x17, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70,
|
|
||||||
0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x18,
|
|
||||||
0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x67, 0x63, 0x70, 0x2e, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68,
|
|
||||||
0x61, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x42, 0x6b,
|
|
||||||
0x0a, 0x15, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x61, 0x6c, 0x74, 0x73, 0x2e, 0x69,
|
|
||||||
0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x42, 0x0f, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61,
|
|
||||||
0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67,
|
|
||||||
0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x72,
|
|
||||||
0x70, 0x63, 0x2f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x2f, 0x61,
|
|
||||||
0x6c, 0x74, 0x73, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x72, 0x6f,
|
|
||||||
0x74, 0x6f, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x67, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f,
|
|
||||||
0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@ import (
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
// is compatible with the grpc package it is being compiled against.
|
// is compatible with the grpc package it is being compiled against.
|
||||||
// Requires gRPC-Go v1.32.0 or later.
|
// Requires gRPC-Go v1.64.0 or later.
|
||||||
const _ = grpc.SupportPackageIsVersion7
|
const _ = grpc.SupportPackageIsVersion9
|
||||||
|
|
||||||
const (
|
const (
|
||||||
HandshakerService_DoHandshake_FullMethodName = "/grpc.gcp.HandshakerService/DoHandshake"
|
HandshakerService_DoHandshake_FullMethodName = "/grpc.gcp.HandshakerService/DoHandshake"
|
||||||
|
|
@ -49,7 +49,7 @@ type HandshakerServiceClient interface {
|
||||||
// messages with next. Each time client sends a request, the handshaker
|
// messages with next. Each time client sends a request, the handshaker
|
||||||
// service expects to respond. Client does not have to wait for service's
|
// service expects to respond. Client does not have to wait for service's
|
||||||
// response before sending next request.
|
// response before sending next request.
|
||||||
DoHandshake(ctx context.Context, opts ...grpc.CallOption) (HandshakerService_DoHandshakeClient, error)
|
DoHandshake(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[HandshakerReq, HandshakerResp], error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type handshakerServiceClient struct {
|
type handshakerServiceClient struct {
|
||||||
|
|
@ -60,36 +60,18 @@ func NewHandshakerServiceClient(cc grpc.ClientConnInterface) HandshakerServiceCl
|
||||||
return &handshakerServiceClient{cc}
|
return &handshakerServiceClient{cc}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *handshakerServiceClient) DoHandshake(ctx context.Context, opts ...grpc.CallOption) (HandshakerService_DoHandshakeClient, error) {
|
func (c *handshakerServiceClient) DoHandshake(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[HandshakerReq, HandshakerResp], error) {
|
||||||
stream, err := c.cc.NewStream(ctx, &HandshakerService_ServiceDesc.Streams[0], HandshakerService_DoHandshake_FullMethodName, opts...)
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
stream, err := c.cc.NewStream(ctx, &HandshakerService_ServiceDesc.Streams[0], HandshakerService_DoHandshake_FullMethodName, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
x := &handshakerServiceDoHandshakeClient{stream}
|
x := &grpc.GenericClientStream[HandshakerReq, HandshakerResp]{ClientStream: stream}
|
||||||
return x, nil
|
return x, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type HandshakerService_DoHandshakeClient interface {
|
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
|
||||||
Send(*HandshakerReq) error
|
type HandshakerService_DoHandshakeClient = grpc.BidiStreamingClient[HandshakerReq, HandshakerResp]
|
||||||
Recv() (*HandshakerResp, error)
|
|
||||||
grpc.ClientStream
|
|
||||||
}
|
|
||||||
|
|
||||||
type handshakerServiceDoHandshakeClient struct {
|
|
||||||
grpc.ClientStream
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *handshakerServiceDoHandshakeClient) Send(m *HandshakerReq) error {
|
|
||||||
return x.ClientStream.SendMsg(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *handshakerServiceDoHandshakeClient) Recv() (*HandshakerResp, error) {
|
|
||||||
m := new(HandshakerResp)
|
|
||||||
if err := x.ClientStream.RecvMsg(m); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return m, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// HandshakerServiceServer is the server API for HandshakerService service.
|
// HandshakerServiceServer is the server API for HandshakerService service.
|
||||||
// All implementations must embed UnimplementedHandshakerServiceServer
|
// All implementations must embed UnimplementedHandshakerServiceServer
|
||||||
|
|
@ -101,7 +83,7 @@ type HandshakerServiceServer interface {
|
||||||
// messages with next. Each time client sends a request, the handshaker
|
// messages with next. Each time client sends a request, the handshaker
|
||||||
// service expects to respond. Client does not have to wait for service's
|
// service expects to respond. Client does not have to wait for service's
|
||||||
// response before sending next request.
|
// response before sending next request.
|
||||||
DoHandshake(HandshakerService_DoHandshakeServer) error
|
DoHandshake(grpc.BidiStreamingServer[HandshakerReq, HandshakerResp]) error
|
||||||
mustEmbedUnimplementedHandshakerServiceServer()
|
mustEmbedUnimplementedHandshakerServiceServer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -109,7 +91,7 @@ type HandshakerServiceServer interface {
|
||||||
type UnimplementedHandshakerServiceServer struct {
|
type UnimplementedHandshakerServiceServer struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (UnimplementedHandshakerServiceServer) DoHandshake(HandshakerService_DoHandshakeServer) error {
|
func (UnimplementedHandshakerServiceServer) DoHandshake(grpc.BidiStreamingServer[HandshakerReq, HandshakerResp]) error {
|
||||||
return status.Errorf(codes.Unimplemented, "method DoHandshake not implemented")
|
return status.Errorf(codes.Unimplemented, "method DoHandshake not implemented")
|
||||||
}
|
}
|
||||||
func (UnimplementedHandshakerServiceServer) mustEmbedUnimplementedHandshakerServiceServer() {}
|
func (UnimplementedHandshakerServiceServer) mustEmbedUnimplementedHandshakerServiceServer() {}
|
||||||
|
|
@ -126,30 +108,11 @@ func RegisterHandshakerServiceServer(s grpc.ServiceRegistrar, srv HandshakerServ
|
||||||
}
|
}
|
||||||
|
|
||||||
func _HandshakerService_DoHandshake_Handler(srv interface{}, stream grpc.ServerStream) error {
|
func _HandshakerService_DoHandshake_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
return srv.(HandshakerServiceServer).DoHandshake(&handshakerServiceDoHandshakeServer{stream})
|
return srv.(HandshakerServiceServer).DoHandshake(&grpc.GenericServerStream[HandshakerReq, HandshakerResp]{ServerStream: stream})
|
||||||
}
|
}
|
||||||
|
|
||||||
type HandshakerService_DoHandshakeServer interface {
|
// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
|
||||||
Send(*HandshakerResp) error
|
type HandshakerService_DoHandshakeServer = grpc.BidiStreamingServer[HandshakerReq, HandshakerResp]
|
||||||
Recv() (*HandshakerReq, error)
|
|
||||||
grpc.ServerStream
|
|
||||||
}
|
|
||||||
|
|
||||||
type handshakerServiceDoHandshakeServer struct {
|
|
||||||
grpc.ServerStream
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *handshakerServiceDoHandshakeServer) Send(m *HandshakerResp) error {
|
|
||||||
return x.ServerStream.SendMsg(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *handshakerServiceDoHandshakeServer) Recv() (*HandshakerReq, error) {
|
|
||||||
m := new(HandshakerReq)
|
|
||||||
if err := x.ServerStream.RecvMsg(m); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return m, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// HandshakerService_ServiceDesc is the grpc.ServiceDesc for HandshakerService service.
|
// HandshakerService_ServiceDesc is the grpc.ServiceDesc for HandshakerService service.
|
||||||
// It's only intended for direct use with grpc.RegisterService,
|
// It's only intended for direct use with grpc.RegisterService,
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.32.0
|
// protoc-gen-go v1.33.0
|
||||||
// protoc v4.25.2
|
// protoc v4.25.2
|
||||||
// source: grpc/gcp/transport_security_common.proto
|
// source: grpc/gcp/transport_security_common.proto
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ import (
|
||||||
|
|
||||||
"google.golang.org/grpc/attributes"
|
"google.golang.org/grpc/attributes"
|
||||||
icredentials "google.golang.org/grpc/internal/credentials"
|
icredentials "google.golang.org/grpc/internal/credentials"
|
||||||
"google.golang.org/protobuf/protoadapt"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PerRPCCredentials defines the common interface for the credentials which need to
|
// PerRPCCredentials defines the common interface for the credentials which need to
|
||||||
|
|
@ -237,7 +237,7 @@ func ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one.
|
// CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one.
|
||||||
// It returns success if 1) the condition is satisified or 2) AuthInfo struct does not implement GetCommonAuthInfo() method
|
// It returns success if 1) the condition is satisfied or 2) AuthInfo struct does not implement GetCommonAuthInfo() method
|
||||||
// or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility.
|
// or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility.
|
||||||
//
|
//
|
||||||
// This API is experimental.
|
// This API is experimental.
|
||||||
|
|
@ -287,5 +287,5 @@ type ChannelzSecurityValue interface {
|
||||||
type OtherChannelzSecurityValue struct {
|
type OtherChannelzSecurityValue struct {
|
||||||
ChannelzSecurityValue
|
ChannelzSecurityValue
|
||||||
Name string
|
Name string
|
||||||
Value protoadapt.MessageV1
|
Value proto.Message
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -300,6 +300,9 @@ func withBackoff(bs internalbackoff.Strategy) DialOption {
|
||||||
//
|
//
|
||||||
// Use of this feature is not recommended. For more information, please see:
|
// Use of this feature is not recommended. For more information, please see:
|
||||||
// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md
|
// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md
|
||||||
|
//
|
||||||
|
// Deprecated: this DialOption is not supported by NewClient.
|
||||||
|
// Will be supported throughout 1.x.
|
||||||
func WithBlock() DialOption {
|
func WithBlock() DialOption {
|
||||||
return newFuncDialOption(func(o *dialOptions) {
|
return newFuncDialOption(func(o *dialOptions) {
|
||||||
o.block = true
|
o.block = true
|
||||||
|
|
@ -314,10 +317,8 @@ func WithBlock() DialOption {
|
||||||
// Use of this feature is not recommended. For more information, please see:
|
// Use of this feature is not recommended. For more information, please see:
|
||||||
// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md
|
// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md
|
||||||
//
|
//
|
||||||
// # Experimental
|
// Deprecated: this DialOption is not supported by NewClient.
|
||||||
//
|
// Will be supported throughout 1.x.
|
||||||
// Notice: This API is EXPERIMENTAL and may be changed or removed in a
|
|
||||||
// later release.
|
|
||||||
func WithReturnConnectionError() DialOption {
|
func WithReturnConnectionError() DialOption {
|
||||||
return newFuncDialOption(func(o *dialOptions) {
|
return newFuncDialOption(func(o *dialOptions) {
|
||||||
o.block = true
|
o.block = true
|
||||||
|
|
@ -387,8 +388,8 @@ func WithCredentialsBundle(b credentials.Bundle) DialOption {
|
||||||
// WithTimeout returns a DialOption that configures a timeout for dialing a
|
// WithTimeout returns a DialOption that configures a timeout for dialing a
|
||||||
// ClientConn initially. This is valid if and only if WithBlock() is present.
|
// ClientConn initially. This is valid if and only if WithBlock() is present.
|
||||||
//
|
//
|
||||||
// Deprecated: use DialContext instead of Dial and context.WithTimeout
|
// Deprecated: this DialOption is not supported by NewClient.
|
||||||
// instead. Will be supported throughout 1.x.
|
// Will be supported throughout 1.x.
|
||||||
func WithTimeout(d time.Duration) DialOption {
|
func WithTimeout(d time.Duration) DialOption {
|
||||||
return newFuncDialOption(func(o *dialOptions) {
|
return newFuncDialOption(func(o *dialOptions) {
|
||||||
o.timeout = d
|
o.timeout = d
|
||||||
|
|
@ -470,9 +471,8 @@ func withBinaryLogger(bl binarylog.Logger) DialOption {
|
||||||
// Use of this feature is not recommended. For more information, please see:
|
// Use of this feature is not recommended. For more information, please see:
|
||||||
// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md
|
// https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md
|
||||||
//
|
//
|
||||||
// # Experimental
|
// Deprecated: this DialOption is not supported by NewClient.
|
||||||
//
|
// This API may be changed or removed in a
|
||||||
// Notice: This API is EXPERIMENTAL and may be changed or removed in a
|
|
||||||
// later release.
|
// later release.
|
||||||
func FailOnNonTempDialError(f bool) DialOption {
|
func FailOnNonTempDialError(f bool) DialOption {
|
||||||
return newFuncDialOption(func(o *dialOptions) {
|
return newFuncDialOption(func(o *dialOptions) {
|
||||||
|
|
@ -601,12 +601,22 @@ func WithDisableRetry() DialOption {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MaxHeaderListSizeDialOption is a DialOption that specifies the maximum
|
||||||
|
// (uncompressed) size of header list that the client is prepared to accept.
|
||||||
|
type MaxHeaderListSizeDialOption struct {
|
||||||
|
MaxHeaderListSize uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o MaxHeaderListSizeDialOption) apply(do *dialOptions) {
|
||||||
|
do.copts.MaxHeaderListSize = &o.MaxHeaderListSize
|
||||||
|
}
|
||||||
|
|
||||||
// WithMaxHeaderListSize returns a DialOption that specifies the maximum
|
// WithMaxHeaderListSize returns a DialOption that specifies the maximum
|
||||||
// (uncompressed) size of header list that the client is prepared to accept.
|
// (uncompressed) size of header list that the client is prepared to accept.
|
||||||
func WithMaxHeaderListSize(s uint32) DialOption {
|
func WithMaxHeaderListSize(s uint32) DialOption {
|
||||||
return newFuncDialOption(func(o *dialOptions) {
|
return MaxHeaderListSizeDialOption{
|
||||||
o.copts.MaxHeaderListSize = &s
|
MaxHeaderListSize: s,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithDisableHealthCheck disables the LB channel health checking for all
|
// WithDisableHealthCheck disables the LB channel health checking for all
|
||||||
|
|
@ -648,7 +658,7 @@ func defaultDialOptions() dialOptions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// withGetMinConnectDeadline specifies the function that clientconn uses to
|
// withMinConnectDeadline specifies the function that clientconn uses to
|
||||||
// get minConnectDeadline. This can be used to make connection attempts happen
|
// get minConnectDeadline. This can be used to make connection attempts happen
|
||||||
// faster/slower.
|
// faster/slower.
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// versions:
|
// versions:
|
||||||
// protoc-gen-go v1.32.0
|
// protoc-gen-go v1.33.0
|
||||||
// protoc v4.25.2
|
// protoc v4.25.2
|
||||||
// source: grpc/health/v1/health.proto
|
// source: grpc/health/v1/health.proto
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@ import (
|
||||||
|
|
||||||
// This is a compile-time assertion to ensure that this generated file
|
// This is a compile-time assertion to ensure that this generated file
|
||||||
// is compatible with the grpc package it is being compiled against.
|
// is compatible with the grpc package it is being compiled against.
|
||||||
// Requires gRPC-Go v1.32.0 or later.
|
// Requires gRPC-Go v1.62.0 or later.
|
||||||
const _ = grpc.SupportPackageIsVersion7
|
const _ = grpc.SupportPackageIsVersion8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
Health_Check_FullMethodName = "/grpc.health.v1.Health/Check"
|
Health_Check_FullMethodName = "/grpc.health.v1.Health/Check"
|
||||||
|
|
@ -81,8 +81,9 @@ func NewHealthClient(cc grpc.ClientConnInterface) HealthClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) {
|
func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) {
|
||||||
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
out := new(HealthCheckResponse)
|
out := new(HealthCheckResponse)
|
||||||
err := c.cc.Invoke(ctx, Health_Check_FullMethodName, in, out, opts...)
|
err := c.cc.Invoke(ctx, Health_Check_FullMethodName, in, out, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -90,11 +91,12 @@ func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts .
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) {
|
func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) {
|
||||||
stream, err := c.cc.NewStream(ctx, &Health_ServiceDesc.Streams[0], Health_Watch_FullMethodName, opts...)
|
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
|
||||||
|
stream, err := c.cc.NewStream(ctx, &Health_ServiceDesc.Streams[0], Health_Watch_FullMethodName, cOpts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
x := &healthWatchClient{stream}
|
x := &healthWatchClient{ClientStream: stream}
|
||||||
if err := x.ClientStream.SendMsg(in); err != nil {
|
if err := x.ClientStream.SendMsg(in); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -198,7 +200,7 @@ func _Health_Watch_Handler(srv interface{}, stream grpc.ServerStream) error {
|
||||||
if err := stream.RecvMsg(m); err != nil {
|
if err := stream.RecvMsg(m); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return srv.(HealthServer).Watch(m, &healthWatchServer{stream})
|
return srv.(HealthServer).Watch(m, &healthWatchServer{ServerStream: stream})
|
||||||
}
|
}
|
||||||
|
|
||||||
type Health_WatchServer interface {
|
type Health_WatchServer interface {
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,6 @@ func ParseConfig(cfg json.RawMessage) (serviceconfig.LoadBalancingConfig, error)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error parsing config for policy %q: %v", name, err)
|
return nil, fmt.Errorf("error parsing config for policy %q: %v", name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &lbConfig{childBuilder: builder, childConfig: cfg}, nil
|
return &lbConfig{childBuilder: builder, childConfig: cfg}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
1
vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go
generated
vendored
1
vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go
generated
vendored
|
|
@ -169,7 +169,6 @@ func (gsb *Balancer) latestBalancer() *balancerWrapper {
|
||||||
func (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error {
|
func (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error {
|
||||||
// The resolver data is only relevant to the most recent LB Policy.
|
// The resolver data is only relevant to the most recent LB Policy.
|
||||||
balToUpdate := gsb.latestBalancer()
|
balToUpdate := gsb.latestBalancer()
|
||||||
|
|
||||||
gsbCfg, ok := state.BalancerConfig.(*lbConfig)
|
gsbCfg, ok := state.BalancerConfig.(*lbConfig)
|
||||||
if ok {
|
if ok {
|
||||||
// Switch to the child in the config unless it is already active.
|
// Switch to the child in the config unless it is already active.
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ type TruncatingMethodLogger struct {
|
||||||
callID uint64
|
callID uint64
|
||||||
idWithinCallGen *callIDGenerator
|
idWithinCallGen *callIDGenerator
|
||||||
|
|
||||||
sink Sink // TODO(blog): make this plugable.
|
sink Sink // TODO(blog): make this pluggable.
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTruncatingMethodLogger returns a new truncating method logger.
|
// NewTruncatingMethodLogger returns a new truncating method logger.
|
||||||
|
|
@ -80,7 +80,7 @@ func NewTruncatingMethodLogger(h, m uint64) *TruncatingMethodLogger {
|
||||||
callID: idGen.next(),
|
callID: idGen.next(),
|
||||||
idWithinCallGen: &callIDGenerator{},
|
idWithinCallGen: &callIDGenerator{},
|
||||||
|
|
||||||
sink: DefaultSink, // TODO(blog): make it plugable.
|
sink: DefaultSink, // TODO(blog): make it pluggable.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -397,7 +397,7 @@ func metadataKeyOmit(key string) bool {
|
||||||
switch key {
|
switch key {
|
||||||
case "lb-token", ":path", ":authority", "content-encoding", "content-type", "user-agent", "te":
|
case "lb-token", ":path", ":authority", "content-encoding", "content-type", "user-agent", "te":
|
||||||
return true
|
return true
|
||||||
case "grpc-trace-bin": // grpc-trace-bin is special because it's visiable to users.
|
case "grpc-trace-bin": // grpc-trace-bin is special because it's visible to users.
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return strings.HasPrefix(key, "grpc-")
|
return strings.HasPrefix(key, "grpc-")
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,6 @@ import (
|
||||||
var (
|
var (
|
||||||
// TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false").
|
// TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false").
|
||||||
TXTErrIgnore = boolFromEnv("GRPC_GO_IGNORE_TXT_ERRORS", true)
|
TXTErrIgnore = boolFromEnv("GRPC_GO_IGNORE_TXT_ERRORS", true)
|
||||||
// AdvertiseCompressors is set if registered compressor should be advertised
|
|
||||||
// ("GRPC_GO_ADVERTISE_COMPRESSORS" is not "false").
|
|
||||||
AdvertiseCompressors = boolFromEnv("GRPC_GO_ADVERTISE_COMPRESSORS", true)
|
|
||||||
// RingHashCap indicates the maximum ring size which defaults to 4096
|
// RingHashCap indicates the maximum ring size which defaults to 4096
|
||||||
// entries but may be overridden by setting the environment variable
|
// entries but may be overridden by setting the environment variable
|
||||||
// "GRPC_RING_HASH_CAP". This does not override the default bounds
|
// "GRPC_RING_HASH_CAP". This does not override the default bounds
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,6 @@ package grpcutil
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"google.golang.org/grpc/internal/envconfig"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// RegisteredCompressorNames holds names of the registered compressors.
|
// RegisteredCompressorNames holds names of the registered compressors.
|
||||||
|
|
@ -40,8 +38,5 @@ func IsCompressorNameRegistered(name string) bool {
|
||||||
// RegisteredCompressors returns a string of registered compressor names
|
// RegisteredCompressors returns a string of registered compressor names
|
||||||
// separated by comma.
|
// separated by comma.
|
||||||
func RegisteredCompressors() string {
|
func RegisteredCompressors() string {
|
||||||
if !envconfig.AdvertiseCompressors {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return strings.Join(RegisteredCompressorNames, ",")
|
return strings.Join(RegisteredCompressorNames, ",")
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,18 +41,24 @@ import (
|
||||||
"google.golang.org/grpc/serviceconfig"
|
"google.golang.org/grpc/serviceconfig"
|
||||||
)
|
)
|
||||||
|
|
||||||
// EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB
|
var (
|
||||||
// addresses from SRV records. Must not be changed after init time.
|
// EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB
|
||||||
var EnableSRVLookups = false
|
// addresses from SRV records. Must not be changed after init time.
|
||||||
|
EnableSRVLookups = false
|
||||||
|
|
||||||
// ResolvingTimeout specifies the maximum duration for a DNS resolution request.
|
// MinResolutionInterval is the minimum interval at which re-resolutions are
|
||||||
// If the timeout expires before a response is received, the request will be canceled.
|
// allowed. This helps to prevent excessive re-resolution.
|
||||||
//
|
MinResolutionInterval = 30 * time.Second
|
||||||
// It is recommended to set this value at application startup. Avoid modifying this variable
|
|
||||||
// after initialization as it's not thread-safe for concurrent modification.
|
|
||||||
var ResolvingTimeout = 30 * time.Second
|
|
||||||
|
|
||||||
var logger = grpclog.Component("dns")
|
// ResolvingTimeout specifies the maximum duration for a DNS resolution request.
|
||||||
|
// If the timeout expires before a response is received, the request will be canceled.
|
||||||
|
//
|
||||||
|
// It is recommended to set this value at application startup. Avoid modifying this variable
|
||||||
|
// after initialization as it's not thread-safe for concurrent modification.
|
||||||
|
ResolvingTimeout = 30 * time.Second
|
||||||
|
|
||||||
|
logger = grpclog.Component("dns")
|
||||||
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
resolver.Register(NewBuilder())
|
resolver.Register(NewBuilder())
|
||||||
|
|
@ -208,7 +214,7 @@ func (d *dnsResolver) watcher() {
|
||||||
// Success resolving, wait for the next ResolveNow. However, also wait 30
|
// Success resolving, wait for the next ResolveNow. However, also wait 30
|
||||||
// seconds at the very least to prevent constantly re-resolving.
|
// seconds at the very least to prevent constantly re-resolving.
|
||||||
backoffIndex = 1
|
backoffIndex = 1
|
||||||
waitTime = internal.MinResolutionRate
|
waitTime = MinResolutionInterval
|
||||||
select {
|
select {
|
||||||
case <-d.ctx.Done():
|
case <-d.ctx.Done():
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import (
|
||||||
|
|
||||||
// NetResolver groups the methods on net.Resolver that are used by the DNS
|
// NetResolver groups the methods on net.Resolver that are used by the DNS
|
||||||
// resolver implementation. This allows the default net.Resolver instance to be
|
// resolver implementation. This allows the default net.Resolver instance to be
|
||||||
// overidden from tests.
|
// overridden from tests.
|
||||||
type NetResolver interface {
|
type NetResolver interface {
|
||||||
LookupHost(ctx context.Context, host string) (addrs []string, err error)
|
LookupHost(ctx context.Context, host string) (addrs []string, err error)
|
||||||
LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error)
|
LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error)
|
||||||
|
|
@ -50,10 +50,6 @@ var (
|
||||||
|
|
||||||
// The following vars are overridden from tests.
|
// The following vars are overridden from tests.
|
||||||
var (
|
var (
|
||||||
// MinResolutionRate is the minimum rate at which re-resolutions are
|
|
||||||
// allowed. This helps to prevent excessive re-resolution.
|
|
||||||
MinResolutionRate = 30 * time.Second
|
|
||||||
|
|
||||||
// TimeAfterFunc is used by the DNS resolver to wait for the given duration
|
// TimeAfterFunc is used by the DNS resolver to wait for the given duration
|
||||||
// to elapse. In non-test code, this is implemented by time.After. In test
|
// to elapse. In non-test code, this is implemented by time.After. In test
|
||||||
// code, this can be used to control the amount of time the resolver is
|
// code, this can be used to control the amount of time the resolver is
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,7 @@ type goAway struct {
|
||||||
code http2.ErrCode
|
code http2.ErrCode
|
||||||
debugData []byte
|
debugData []byte
|
||||||
headsUp bool
|
headsUp bool
|
||||||
closeConn error // if set, loopyWriter will exit, resulting in conn closure
|
closeConn error // if set, loopyWriter will exit with this error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*goAway) isTransportResponseFrame() bool { return false }
|
func (*goAway) isTransportResponseFrame() bool { return false }
|
||||||
|
|
@ -336,7 +336,7 @@ func (c *controlBuffer) put(it cbItem) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *controlBuffer) executeAndPut(f func(it any) bool, it cbItem) (bool, error) {
|
func (c *controlBuffer) executeAndPut(f func() bool, it cbItem) (bool, error) {
|
||||||
var wakeUp bool
|
var wakeUp bool
|
||||||
c.mu.Lock()
|
c.mu.Lock()
|
||||||
if c.err != nil {
|
if c.err != nil {
|
||||||
|
|
@ -344,7 +344,7 @@ func (c *controlBuffer) executeAndPut(f func(it any) bool, it cbItem) (bool, err
|
||||||
return false, c.err
|
return false, c.err
|
||||||
}
|
}
|
||||||
if f != nil {
|
if f != nil {
|
||||||
if !f(it) { // f wasn't successful
|
if !f() { // f wasn't successful
|
||||||
c.mu.Unlock()
|
c.mu.Unlock()
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
@ -495,21 +495,22 @@ type loopyWriter struct {
|
||||||
ssGoAwayHandler func(*goAway) (bool, error)
|
ssGoAwayHandler func(*goAway) (bool, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger) *loopyWriter {
|
func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error)) *loopyWriter {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
l := &loopyWriter{
|
l := &loopyWriter{
|
||||||
side: s,
|
side: s,
|
||||||
cbuf: cbuf,
|
cbuf: cbuf,
|
||||||
sendQuota: defaultWindowSize,
|
sendQuota: defaultWindowSize,
|
||||||
oiws: defaultWindowSize,
|
oiws: defaultWindowSize,
|
||||||
estdStreams: make(map[uint32]*outStream),
|
estdStreams: make(map[uint32]*outStream),
|
||||||
activeStreams: newOutStreamList(),
|
activeStreams: newOutStreamList(),
|
||||||
framer: fr,
|
framer: fr,
|
||||||
hBuf: &buf,
|
hBuf: &buf,
|
||||||
hEnc: hpack.NewEncoder(&buf),
|
hEnc: hpack.NewEncoder(&buf),
|
||||||
bdpEst: bdpEst,
|
bdpEst: bdpEst,
|
||||||
conn: conn,
|
conn: conn,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
|
ssGoAwayHandler: goAwayHandler,
|
||||||
}
|
}
|
||||||
return l
|
return l
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -114,11 +114,11 @@ type http2Client struct {
|
||||||
streamQuota int64
|
streamQuota int64
|
||||||
streamsQuotaAvailable chan struct{}
|
streamsQuotaAvailable chan struct{}
|
||||||
waitingStreams uint32
|
waitingStreams uint32
|
||||||
nextID uint32
|
|
||||||
registeredCompressors string
|
registeredCompressors string
|
||||||
|
|
||||||
// Do not access controlBuf with mu held.
|
// Do not access controlBuf with mu held.
|
||||||
mu sync.Mutex // guard the following variables
|
mu sync.Mutex // guard the following variables
|
||||||
|
nextID uint32
|
||||||
state transportState
|
state transportState
|
||||||
activeStreams map[uint32]*Stream
|
activeStreams map[uint32]*Stream
|
||||||
// prevGoAway ID records the Last-Stream-ID in the previous GOAway frame.
|
// prevGoAway ID records the Last-Stream-ID in the previous GOAway frame.
|
||||||
|
|
@ -408,10 +408,10 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
|
||||||
readerErrCh := make(chan error, 1)
|
readerErrCh := make(chan error, 1)
|
||||||
go t.reader(readerErrCh)
|
go t.reader(readerErrCh)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err == nil {
|
|
||||||
err = <-readerErrCh
|
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// writerDone should be closed since the loopy goroutine
|
||||||
|
// wouldn't have started in the case this function returns an error.
|
||||||
|
close(t.writerDone)
|
||||||
t.Close(err)
|
t.Close(err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
@ -458,8 +458,12 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts
|
||||||
if err := t.framer.writer.Flush(); err != nil {
|
if err := t.framer.writer.Flush(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
// Block until the server preface is received successfully or an error occurs.
|
||||||
|
if err = <-readerErrCh; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
go func() {
|
go func() {
|
||||||
t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger)
|
t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler)
|
||||||
if err := t.loopy.run(); !isIOError(err) {
|
if err := t.loopy.run(); !isIOError(err) {
|
||||||
// Immediately close the connection, as the loopy writer returns
|
// Immediately close the connection, as the loopy writer returns
|
||||||
// when there are no more active streams and we were draining (the
|
// when there are no more active streams and we were draining (the
|
||||||
|
|
@ -517,6 +521,17 @@ func (t *http2Client) getPeer() *peer.Peer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OutgoingGoAwayHandler writes a GOAWAY to the connection. Always returns (false, err) as we want the GoAway
|
||||||
|
// to be the last frame loopy writes to the transport.
|
||||||
|
func (t *http2Client) outgoingGoAwayHandler(g *goAway) (bool, error) {
|
||||||
|
t.mu.Lock()
|
||||||
|
defer t.mu.Unlock()
|
||||||
|
if err := t.framer.fr.WriteGoAway(t.nextID-2, http2.ErrCodeNo, g.debugData); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return false, g.closeConn
|
||||||
|
}
|
||||||
|
|
||||||
func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) {
|
func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) {
|
||||||
aud := t.createAudience(callHdr)
|
aud := t.createAudience(callHdr)
|
||||||
ri := credentials.RequestInfo{
|
ri := credentials.RequestInfo{
|
||||||
|
|
@ -781,7 +796,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
|
||||||
firstTry := true
|
firstTry := true
|
||||||
var ch chan struct{}
|
var ch chan struct{}
|
||||||
transportDrainRequired := false
|
transportDrainRequired := false
|
||||||
checkForStreamQuota := func(it any) bool {
|
checkForStreamQuota := func() bool {
|
||||||
if t.streamQuota <= 0 { // Can go negative if server decreases it.
|
if t.streamQuota <= 0 { // Can go negative if server decreases it.
|
||||||
if firstTry {
|
if firstTry {
|
||||||
t.waitingStreams++
|
t.waitingStreams++
|
||||||
|
|
@ -793,23 +808,24 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
|
||||||
t.waitingStreams--
|
t.waitingStreams--
|
||||||
}
|
}
|
||||||
t.streamQuota--
|
t.streamQuota--
|
||||||
h := it.(*headerFrame)
|
|
||||||
h.streamID = t.nextID
|
|
||||||
t.nextID += 2
|
|
||||||
|
|
||||||
// Drain client transport if nextID > MaxStreamID which signals gRPC that
|
|
||||||
// the connection is closed and a new one must be created for subsequent RPCs.
|
|
||||||
transportDrainRequired = t.nextID > MaxStreamID
|
|
||||||
|
|
||||||
s.id = h.streamID
|
|
||||||
s.fc = &inFlow{limit: uint32(t.initialWindowSize)}
|
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
if t.state == draining || t.activeStreams == nil { // Can be niled from Close().
|
if t.state == draining || t.activeStreams == nil { // Can be niled from Close().
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
return false // Don't create a stream if the transport is already closed.
|
return false // Don't create a stream if the transport is already closed.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hdr.streamID = t.nextID
|
||||||
|
t.nextID += 2
|
||||||
|
// Drain client transport if nextID > MaxStreamID which signals gRPC that
|
||||||
|
// the connection is closed and a new one must be created for subsequent RPCs.
|
||||||
|
transportDrainRequired = t.nextID > MaxStreamID
|
||||||
|
|
||||||
|
s.id = hdr.streamID
|
||||||
|
s.fc = &inFlow{limit: uint32(t.initialWindowSize)}
|
||||||
t.activeStreams[s.id] = s
|
t.activeStreams[s.id] = s
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
|
|
||||||
if t.streamQuota > 0 && t.waitingStreams > 0 {
|
if t.streamQuota > 0 && t.waitingStreams > 0 {
|
||||||
select {
|
select {
|
||||||
case t.streamsQuotaAvailable <- struct{}{}:
|
case t.streamsQuotaAvailable <- struct{}{}:
|
||||||
|
|
@ -819,13 +835,12 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
var hdrListSizeErr error
|
var hdrListSizeErr error
|
||||||
checkForHeaderListSize := func(it any) bool {
|
checkForHeaderListSize := func() bool {
|
||||||
if t.maxSendHeaderListSize == nil {
|
if t.maxSendHeaderListSize == nil {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
hdrFrame := it.(*headerFrame)
|
|
||||||
var sz int64
|
var sz int64
|
||||||
for _, f := range hdrFrame.hf {
|
for _, f := range hdr.hf {
|
||||||
if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) {
|
if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) {
|
||||||
hdrListSizeErr = status.Errorf(codes.Internal, "header list size to send violates the maximum size (%d bytes) set by server", *t.maxSendHeaderListSize)
|
hdrListSizeErr = status.Errorf(codes.Internal, "header list size to send violates the maximum size (%d bytes) set by server", *t.maxSendHeaderListSize)
|
||||||
return false
|
return false
|
||||||
|
|
@ -834,8 +849,8 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream,
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
success, err := t.controlBuf.executeAndPut(func(it any) bool {
|
success, err := t.controlBuf.executeAndPut(func() bool {
|
||||||
return checkForHeaderListSize(it) && checkForStreamQuota(it)
|
return checkForHeaderListSize() && checkForStreamQuota()
|
||||||
}, hdr)
|
}, hdr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Connection closed.
|
// Connection closed.
|
||||||
|
|
@ -946,7 +961,7 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.
|
||||||
rst: rst,
|
rst: rst,
|
||||||
rstCode: rstCode,
|
rstCode: rstCode,
|
||||||
}
|
}
|
||||||
addBackStreamQuota := func(any) bool {
|
addBackStreamQuota := func() bool {
|
||||||
t.streamQuota++
|
t.streamQuota++
|
||||||
if t.streamQuota > 0 && t.waitingStreams > 0 {
|
if t.streamQuota > 0 && t.waitingStreams > 0 {
|
||||||
select {
|
select {
|
||||||
|
|
@ -966,7 +981,7 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.
|
||||||
|
|
||||||
// Close kicks off the shutdown process of the transport. This should be called
|
// Close kicks off the shutdown process of the transport. This should be called
|
||||||
// only once on a transport. Once it is called, the transport should not be
|
// only once on a transport. Once it is called, the transport should not be
|
||||||
// accessed any more.
|
// accessed anymore.
|
||||||
func (t *http2Client) Close(err error) {
|
func (t *http2Client) Close(err error) {
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
// Make sure we only close once.
|
// Make sure we only close once.
|
||||||
|
|
@ -991,7 +1006,10 @@ func (t *http2Client) Close(err error) {
|
||||||
t.kpDormancyCond.Signal()
|
t.kpDormancyCond.Signal()
|
||||||
}
|
}
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
t.controlBuf.finish()
|
// Per HTTP/2 spec, a GOAWAY frame must be sent before closing the
|
||||||
|
// connection. See https://httpwg.org/specs/rfc7540.html#GOAWAY.
|
||||||
|
t.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte("client transport shutdown"), closeConn: err})
|
||||||
|
<-t.writerDone
|
||||||
t.cancel()
|
t.cancel()
|
||||||
t.conn.Close()
|
t.conn.Close()
|
||||||
channelz.RemoveEntry(t.channelz.ID)
|
channelz.RemoveEntry(t.channelz.ID)
|
||||||
|
|
@ -1099,7 +1117,7 @@ func (t *http2Client) updateWindow(s *Stream, n uint32) {
|
||||||
// for the transport and the stream based on the current bdp
|
// for the transport and the stream based on the current bdp
|
||||||
// estimation.
|
// estimation.
|
||||||
func (t *http2Client) updateFlowControl(n uint32) {
|
func (t *http2Client) updateFlowControl(n uint32) {
|
||||||
updateIWS := func(any) bool {
|
updateIWS := func() bool {
|
||||||
t.initialWindowSize = int32(n)
|
t.initialWindowSize = int32(n)
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
for _, s := range t.activeStreams {
|
for _, s := range t.activeStreams {
|
||||||
|
|
@ -1252,7 +1270,7 @@ func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) {
|
||||||
}
|
}
|
||||||
updateFuncs = append(updateFuncs, updateStreamQuota)
|
updateFuncs = append(updateFuncs, updateStreamQuota)
|
||||||
}
|
}
|
||||||
t.controlBuf.executeAndPut(func(any) bool {
|
t.controlBuf.executeAndPut(func() bool {
|
||||||
for _, f := range updateFuncs {
|
for _, f := range updateFuncs {
|
||||||
f()
|
f()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -330,8 +330,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport,
|
||||||
t.handleSettings(sf)
|
t.handleSettings(sf)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger)
|
t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler)
|
||||||
t.loopy.ssGoAwayHandler = t.outgoingGoAwayHandler
|
|
||||||
err := t.loopy.run()
|
err := t.loopy.run()
|
||||||
close(t.loopyWriterDone)
|
close(t.loopyWriterDone)
|
||||||
if !isIOError(err) {
|
if !isIOError(err) {
|
||||||
|
|
@ -860,7 +859,7 @@ func (t *http2Server) handleSettings(f *http2.SettingsFrame) {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
t.controlBuf.executeAndPut(func(any) bool {
|
t.controlBuf.executeAndPut(func() bool {
|
||||||
for _, f := range updateFuncs {
|
for _, f := range updateFuncs {
|
||||||
f()
|
f()
|
||||||
}
|
}
|
||||||
|
|
@ -1014,12 +1013,13 @@ func (t *http2Server) writeHeaderLocked(s *Stream) error {
|
||||||
headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress})
|
headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress})
|
||||||
}
|
}
|
||||||
headerFields = appendHeaderFieldsFromMD(headerFields, s.header)
|
headerFields = appendHeaderFieldsFromMD(headerFields, s.header)
|
||||||
success, err := t.controlBuf.executeAndPut(t.checkForHeaderListSize, &headerFrame{
|
hf := &headerFrame{
|
||||||
streamID: s.id,
|
streamID: s.id,
|
||||||
hf: headerFields,
|
hf: headerFields,
|
||||||
endStream: false,
|
endStream: false,
|
||||||
onWrite: t.setResetPingStrikes,
|
onWrite: t.setResetPingStrikes,
|
||||||
})
|
}
|
||||||
|
success, err := t.controlBuf.executeAndPut(func() bool { return t.checkForHeaderListSize(hf) }, hf)
|
||||||
if !success {
|
if !success {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -1208,7 +1208,7 @@ func (t *http2Server) keepalive() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if outstandingPing && kpTimeoutLeft <= 0 {
|
if outstandingPing && kpTimeoutLeft <= 0 {
|
||||||
t.Close(fmt.Errorf("keepalive ping not acked within timeout %s", t.kp.Time))
|
t.Close(fmt.Errorf("keepalive ping not acked within timeout %s", t.kp.Timeout))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !outstandingPing {
|
if !outstandingPing {
|
||||||
|
|
|
||||||
|
|
@ -304,7 +304,7 @@ func (s *Stream) isHeaderSent() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
// updateHeaderSent updates headerSent and returns true
|
// updateHeaderSent updates headerSent and returns true
|
||||||
// if it was alreay set. It is valid only on server-side.
|
// if it was already set. It is valid only on server-side.
|
||||||
func (s *Stream) updateHeaderSent() bool {
|
func (s *Stream) updateHeaderSent() bool {
|
||||||
return atomic.SwapUint32(&s.headerSent, 1) == 1
|
return atomic.SwapUint32(&s.headerSent, 1) == 1
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,21 @@ func Pairs(kv ...string) MD {
|
||||||
return md
|
return md
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String implements the Stringer interface for pretty-printing a MD.
|
||||||
|
// Ordering of the values is non-deterministic as it ranges over a map.
|
||||||
|
func (md MD) String() string {
|
||||||
|
var sb strings.Builder
|
||||||
|
fmt.Fprintf(&sb, "MD{")
|
||||||
|
for k, v := range md {
|
||||||
|
if sb.Len() > 3 {
|
||||||
|
fmt.Fprintf(&sb, ", ")
|
||||||
|
}
|
||||||
|
fmt.Fprintf(&sb, "%s=[%s]", k, strings.Join(v, ", "))
|
||||||
|
}
|
||||||
|
fmt.Fprintf(&sb, "}")
|
||||||
|
return sb.String()
|
||||||
|
}
|
||||||
|
|
||||||
// Len returns the number of items in md.
|
// Len returns the number of items in md.
|
||||||
func (md MD) Len() int {
|
func (md MD) Len() int {
|
||||||
return len(md)
|
return len(md)
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,9 @@ package peer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"google.golang.org/grpc/credentials"
|
"google.golang.org/grpc/credentials"
|
||||||
)
|
)
|
||||||
|
|
@ -39,6 +41,34 @@ type Peer struct {
|
||||||
AuthInfo credentials.AuthInfo
|
AuthInfo credentials.AuthInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String ensures the Peer types implements the Stringer interface in order to
|
||||||
|
// allow to print a context with a peerKey value effectively.
|
||||||
|
func (p *Peer) String() string {
|
||||||
|
if p == nil {
|
||||||
|
return "Peer<nil>"
|
||||||
|
}
|
||||||
|
sb := &strings.Builder{}
|
||||||
|
sb.WriteString("Peer{")
|
||||||
|
if p.Addr != nil {
|
||||||
|
fmt.Fprintf(sb, "Addr: '%s', ", p.Addr.String())
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(sb, "Addr: <nil>, ")
|
||||||
|
}
|
||||||
|
if p.LocalAddr != nil {
|
||||||
|
fmt.Fprintf(sb, "LocalAddr: '%s', ", p.LocalAddr.String())
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(sb, "LocalAddr: <nil>, ")
|
||||||
|
}
|
||||||
|
if p.AuthInfo != nil {
|
||||||
|
fmt.Fprintf(sb, "AuthInfo: '%s'", p.AuthInfo.AuthType())
|
||||||
|
} else {
|
||||||
|
fmt.Fprintf(sb, "AuthInfo: <nil>")
|
||||||
|
}
|
||||||
|
sb.WriteString("}")
|
||||||
|
|
||||||
|
return sb.String()
|
||||||
|
}
|
||||||
|
|
||||||
type peerKey struct{}
|
type peerKey struct{}
|
||||||
|
|
||||||
// NewContext creates a new context with peer information attached.
|
// NewContext creates a new context with peer information attached.
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ package grpc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
|
@ -117,7 +118,7 @@ func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer.
|
||||||
if lastPickErr != nil {
|
if lastPickErr != nil {
|
||||||
errStr = "latest balancer error: " + lastPickErr.Error()
|
errStr = "latest balancer error: " + lastPickErr.Error()
|
||||||
} else {
|
} else {
|
||||||
errStr = ctx.Err().Error()
|
errStr = fmt.Sprintf("received context error while waiting for new LB policy update: %s", ctx.Err().Error())
|
||||||
}
|
}
|
||||||
switch ctx.Err() {
|
switch ctx.Err() {
|
||||||
case context.DeadlineExceeded:
|
case context.DeadlineExceeded:
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ type pfConfig struct {
|
||||||
serviceconfig.LoadBalancingConfig `json:"-"`
|
serviceconfig.LoadBalancingConfig `json:"-"`
|
||||||
|
|
||||||
// If set to true, instructs the LB policy to shuffle the order of the list
|
// If set to true, instructs the LB policy to shuffle the order of the list
|
||||||
// of addresses received from the name resolver before attempting to
|
// of endpoints received from the name resolver before attempting to
|
||||||
// connect to them.
|
// connect to them.
|
||||||
ShuffleAddressList bool `json:"shuffleAddressList"`
|
ShuffleAddressList bool `json:"shuffleAddressList"`
|
||||||
}
|
}
|
||||||
|
|
@ -94,8 +94,7 @@ func (b *pickfirstBalancer) ResolverError(err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
|
func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error {
|
||||||
addrs := state.ResolverState.Addresses
|
if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 {
|
||||||
if len(addrs) == 0 {
|
|
||||||
// The resolver reported an empty address list. Treat it like an error by
|
// The resolver reported an empty address list. Treat it like an error by
|
||||||
// calling b.ResolverError.
|
// calling b.ResolverError.
|
||||||
if b.subConn != nil {
|
if b.subConn != nil {
|
||||||
|
|
@ -107,22 +106,49 @@ func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState
|
||||||
b.ResolverError(errors.New("produced zero addresses"))
|
b.ResolverError(errors.New("produced zero addresses"))
|
||||||
return balancer.ErrBadResolverState
|
return balancer.ErrBadResolverState
|
||||||
}
|
}
|
||||||
|
|
||||||
// We don't have to guard this block with the env var because ParseConfig
|
// We don't have to guard this block with the env var because ParseConfig
|
||||||
// already does so.
|
// already does so.
|
||||||
cfg, ok := state.BalancerConfig.(pfConfig)
|
cfg, ok := state.BalancerConfig.(pfConfig)
|
||||||
if state.BalancerConfig != nil && !ok {
|
if state.BalancerConfig != nil && !ok {
|
||||||
return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v", state.BalancerConfig, state.BalancerConfig)
|
return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v", state.BalancerConfig, state.BalancerConfig)
|
||||||
}
|
}
|
||||||
if cfg.ShuffleAddressList {
|
|
||||||
addrs = append([]resolver.Address{}, addrs...)
|
|
||||||
grpcrand.Shuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] })
|
|
||||||
}
|
|
||||||
|
|
||||||
if b.logger.V(2) {
|
if b.logger.V(2) {
|
||||||
b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
|
b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var addrs []resolver.Address
|
||||||
|
if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 {
|
||||||
|
// Perform the optional shuffling described in gRFC A62. The shuffling will
|
||||||
|
// change the order of endpoints but not touch the order of the addresses
|
||||||
|
// within each endpoint. - A61
|
||||||
|
if cfg.ShuffleAddressList {
|
||||||
|
endpoints = append([]resolver.Endpoint{}, endpoints...)
|
||||||
|
grpcrand.Shuffle(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] })
|
||||||
|
}
|
||||||
|
|
||||||
|
// "Flatten the list by concatenating the ordered list of addresses for each
|
||||||
|
// of the endpoints, in order." - A61
|
||||||
|
for _, endpoint := range endpoints {
|
||||||
|
// "In the flattened list, interleave addresses from the two address
|
||||||
|
// families, as per RFC-8304 section 4." - A61
|
||||||
|
// TODO: support the above language.
|
||||||
|
addrs = append(addrs, endpoint.Addresses...)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Endpoints not set, process addresses until we migrate resolver
|
||||||
|
// emissions fully to Endpoints. The top channel does wrap emitted
|
||||||
|
// addresses with endpoints, however some balancers such as weighted
|
||||||
|
// target do not forwarrd the corresponding correct endpoints down/split
|
||||||
|
// endpoints properly. Once all balancers correctly forward endpoints
|
||||||
|
// down, can delete this else conditional.
|
||||||
|
addrs = state.ResolverState.Addresses
|
||||||
|
if cfg.ShuffleAddressList {
|
||||||
|
addrs = append([]resolver.Address{}, addrs...)
|
||||||
|
grpcrand.Shuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if b.subConn != nil {
|
if b.subConn != nil {
|
||||||
b.cc.UpdateAddresses(b.subConn, addrs)
|
b.cc.UpdateAddresses(b.subConn, addrs)
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ LEGACY_SOURCES=(
|
||||||
|
|
||||||
# Generates only the new gRPC Service symbols
|
# Generates only the new gRPC Service symbols
|
||||||
SOURCES=(
|
SOURCES=(
|
||||||
$(git ls-files --exclude-standard --cached --others "*.proto" | grep -v '^\(profiling/proto/service.proto\|reflection/grpc_reflection_v1alpha/reflection.proto\)$')
|
$(git ls-files --exclude-standard --cached --others "*.proto" | grep -v '^profiling/proto/service.proto$')
|
||||||
${WORKDIR}/grpc-proto/grpc/gcp/altscontext.proto
|
${WORKDIR}/grpc-proto/grpc/gcp/altscontext.proto
|
||||||
${WORKDIR}/grpc-proto/grpc/gcp/handshaker.proto
|
${WORKDIR}/grpc-proto/grpc/gcp/handshaker.proto
|
||||||
${WORKDIR}/grpc-proto/grpc/gcp/transport_security_common.proto
|
${WORKDIR}/grpc-proto/grpc/gcp/transport_security_common.proto
|
||||||
|
|
@ -93,7 +93,7 @@ Mgrpc/testing/empty.proto=google.golang.org/grpc/interop/grpc_testing
|
||||||
|
|
||||||
for src in ${SOURCES[@]}; do
|
for src in ${SOURCES[@]}; do
|
||||||
echo "protoc ${src}"
|
echo "protoc ${src}"
|
||||||
protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS}:${WORKDIR}/out \
|
protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS},use_generic_streams_experimental=true:${WORKDIR}/out \
|
||||||
-I"." \
|
-I"." \
|
||||||
-I${WORKDIR}/grpc-proto \
|
-I${WORKDIR}/grpc-proto \
|
||||||
-I${WORKDIR}/googleapis \
|
-I${WORKDIR}/googleapis \
|
||||||
|
|
@ -118,6 +118,6 @@ mv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/
|
||||||
|
|
||||||
# grpc_testing_not_regenerate/*.pb.go are not re-generated,
|
# grpc_testing_not_regenerate/*.pb.go are not re-generated,
|
||||||
# see grpc_testing_not_regenerate/README.md for details.
|
# see grpc_testing_not_regenerate/README.md for details.
|
||||||
rm ${WORKDIR}/out/google.golang.org/grpc/reflection/grpc_testing_not_regenerate/*.pb.go
|
rm ${WORKDIR}/out/google.golang.org/grpc/reflection/test/grpc_testing_not_regenerate/*.pb.go
|
||||||
|
|
||||||
cp -R ${WORKDIR}/out/google.golang.org/grpc/* .
|
cp -R ${WORKDIR}/out/google.golang.org/grpc/* .
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,6 @@
|
||||||
|
|
||||||
// Package dns implements a dns resolver to be installed as the default resolver
|
// Package dns implements a dns resolver to be installed as the default resolver
|
||||||
// in grpc.
|
// in grpc.
|
||||||
//
|
|
||||||
// Deprecated: this package is imported by grpc and should not need to be
|
|
||||||
// imported directly by users.
|
|
||||||
package dns
|
package dns
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -52,3 +49,12 @@ func SetResolvingTimeout(timeout time.Duration) {
|
||||||
func NewBuilder() resolver.Builder {
|
func NewBuilder() resolver.Builder {
|
||||||
return dns.NewBuilder()
|
return dns.NewBuilder()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetMinResolutionInterval sets the default minimum interval at which DNS
|
||||||
|
// re-resolutions are allowed. This helps to prevent excessive re-resolution.
|
||||||
|
//
|
||||||
|
// It must be called only at application startup, before any gRPC calls are
|
||||||
|
// made. Modifying this value after initialization is not thread-safe.
|
||||||
|
func SetMinResolutionInterval(d time.Duration) {
|
||||||
|
dns.MinResolutionInterval = d
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -964,7 +964,7 @@ func setCallInfoCodec(c *callInfo) error {
|
||||||
|
|
||||||
// The SupportPackageIsVersion variables are referenced from generated protocol
|
// The SupportPackageIsVersion variables are referenced from generated protocol
|
||||||
// buffer files to ensure compatibility with the gRPC version used. The latest
|
// buffer files to ensure compatibility with the gRPC version used. The latest
|
||||||
// support package version is 7.
|
// support package version is 9.
|
||||||
//
|
//
|
||||||
// Older versions are kept for compatibility.
|
// Older versions are kept for compatibility.
|
||||||
//
|
//
|
||||||
|
|
@ -976,6 +976,7 @@ const (
|
||||||
SupportPackageIsVersion6 = true
|
SupportPackageIsVersion6 = true
|
||||||
SupportPackageIsVersion7 = true
|
SupportPackageIsVersion7 = true
|
||||||
SupportPackageIsVersion8 = true
|
SupportPackageIsVersion8 = true
|
||||||
|
SupportPackageIsVersion9 = true
|
||||||
)
|
)
|
||||||
|
|
||||||
const grpcUA = "grpc-go/" + Version
|
const grpcUA = "grpc-go/" + Version
|
||||||
|
|
|
||||||
|
|
@ -527,12 +527,22 @@ func ConnectionTimeout(d time.Duration) ServerOption {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MaxHeaderListSizeServerOption is a ServerOption that sets the max
|
||||||
|
// (uncompressed) size of header list that the server is prepared to accept.
|
||||||
|
type MaxHeaderListSizeServerOption struct {
|
||||||
|
MaxHeaderListSize uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o MaxHeaderListSizeServerOption) apply(so *serverOptions) {
|
||||||
|
so.maxHeaderListSize = &o.MaxHeaderListSize
|
||||||
|
}
|
||||||
|
|
||||||
// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size
|
// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size
|
||||||
// of header list that the server is prepared to accept.
|
// of header list that the server is prepared to accept.
|
||||||
func MaxHeaderListSize(s uint32) ServerOption {
|
func MaxHeaderListSize(s uint32) ServerOption {
|
||||||
return newFuncServerOption(func(o *serverOptions) {
|
return MaxHeaderListSizeServerOption{
|
||||||
o.maxHeaderListSize = &s
|
MaxHeaderListSize: s,
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// HeaderTableSize returns a ServerOption that sets the size of dynamic
|
// HeaderTableSize returns a ServerOption that sets the size of dynamic
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult {
|
||||||
var rsc jsonSC
|
var rsc jsonSC
|
||||||
err := json.Unmarshal([]byte(js), &rsc)
|
err := json.Unmarshal([]byte(js), &rsc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warningf("grpc: unmarshaling service config %s: %v", js, err)
|
logger.Warningf("grpc: unmarshalling service config %s: %v", js, err)
|
||||||
return &serviceconfig.ParseResult{Err: err}
|
return &serviceconfig.ParseResult{Err: err}
|
||||||
}
|
}
|
||||||
sc := ServiceConfig{
|
sc := ServiceConfig{
|
||||||
|
|
@ -219,7 +219,7 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult {
|
||||||
Timeout: (*time.Duration)(m.Timeout),
|
Timeout: (*time.Duration)(m.Timeout),
|
||||||
}
|
}
|
||||||
if mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil {
|
if mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil {
|
||||||
logger.Warningf("grpc: unmarshaling service config %s: %v", js, err)
|
logger.Warningf("grpc: unmarshalling service config %s: %v", js, err)
|
||||||
return &serviceconfig.ParseResult{Err: err}
|
return &serviceconfig.ParseResult{Err: err}
|
||||||
}
|
}
|
||||||
if m.MaxRequestMessageBytes != nil {
|
if m.MaxRequestMessageBytes != nil {
|
||||||
|
|
@ -239,13 +239,13 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult {
|
||||||
for i, n := range *m.Name {
|
for i, n := range *m.Name {
|
||||||
path, err := n.generatePath()
|
path, err := n.generatePath()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warningf("grpc: error unmarshaling service config %s due to methodConfig[%d]: %v", js, i, err)
|
logger.Warningf("grpc: error unmarshalling service config %s due to methodConfig[%d]: %v", js, i, err)
|
||||||
return &serviceconfig.ParseResult{Err: err}
|
return &serviceconfig.ParseResult{Err: err}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := paths[path]; ok {
|
if _, ok := paths[path]; ok {
|
||||||
err = errDuplicatedName
|
err = errDuplicatedName
|
||||||
logger.Warningf("grpc: error unmarshaling service config %s due to methodConfig[%d]: %v", js, i, err)
|
logger.Warningf("grpc: error unmarshalling service config %s due to methodConfig[%d]: %v", js, i, err)
|
||||||
return &serviceconfig.ParseResult{Err: err}
|
return &serviceconfig.ParseResult{Err: err}
|
||||||
}
|
}
|
||||||
paths[path] = struct{}{}
|
paths[path] = struct{}{}
|
||||||
|
|
|
||||||
|
|
@ -73,9 +73,12 @@ func (*PickerUpdated) isRPCStats() {}
|
||||||
type InPayload struct {
|
type InPayload struct {
|
||||||
// Client is true if this InPayload is from client side.
|
// Client is true if this InPayload is from client side.
|
||||||
Client bool
|
Client bool
|
||||||
// Payload is the payload with original type.
|
// Payload is the payload with original type. This may be modified after
|
||||||
|
// the call to HandleRPC which provides the InPayload returns and must be
|
||||||
|
// copied if needed later.
|
||||||
Payload any
|
Payload any
|
||||||
// Data is the serialized message payload.
|
// Data is the serialized message payload.
|
||||||
|
// Deprecated: Data will be removed in the next release.
|
||||||
Data []byte
|
Data []byte
|
||||||
|
|
||||||
// Length is the size of the uncompressed payload data. Does not include any
|
// Length is the size of the uncompressed payload data. Does not include any
|
||||||
|
|
@ -143,9 +146,12 @@ func (s *InTrailer) isRPCStats() {}
|
||||||
type OutPayload struct {
|
type OutPayload struct {
|
||||||
// Client is true if this OutPayload is from client side.
|
// Client is true if this OutPayload is from client side.
|
||||||
Client bool
|
Client bool
|
||||||
// Payload is the payload with original type.
|
// Payload is the payload with original type. This may be modified after
|
||||||
|
// the call to HandleRPC which provides the OutPayload returns and must be
|
||||||
|
// copied if needed later.
|
||||||
Payload any
|
Payload any
|
||||||
// Data is the serialized message payload.
|
// Data is the serialized message payload.
|
||||||
|
// Deprecated: Data will be removed in the next release.
|
||||||
Data []byte
|
Data []byte
|
||||||
// Length is the size of the uncompressed payload data. Does not include any
|
// Length is the size of the uncompressed payload data. Does not include any
|
||||||
// framing (gRPC or HTTP/2).
|
// framing (gRPC or HTTP/2).
|
||||||
|
|
|
||||||
|
|
@ -516,6 +516,7 @@ func (a *csAttempt) newStream() error {
|
||||||
return toRPCErr(nse.Err)
|
return toRPCErr(nse.Err)
|
||||||
}
|
}
|
||||||
a.s = s
|
a.s = s
|
||||||
|
a.ctx = s.Context()
|
||||||
a.p = &parser{r: s, recvBufferPool: a.cs.cc.dopts.recvBufferPool}
|
a.p = &parser{r: s, recvBufferPool: a.cs.cc.dopts.recvBufferPool}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,152 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Copyright 2024 gRPC 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 grpc
|
||||||
|
|
||||||
|
// ServerStreamingClient represents the client side of a server-streaming (one
|
||||||
|
// request, many responses) RPC. It is generic over the type of the response
|
||||||
|
// message. It is used in generated code.
|
||||||
|
type ServerStreamingClient[Res any] interface {
|
||||||
|
Recv() (*Res, error)
|
||||||
|
ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// ServerStreamingServer represents the server side of a server-streaming (one
|
||||||
|
// request, many responses) RPC. It is generic over the type of the response
|
||||||
|
// message. It is used in generated code.
|
||||||
|
type ServerStreamingServer[Res any] interface {
|
||||||
|
Send(*Res) error
|
||||||
|
ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClientStreamingClient represents the client side of a client-streaming (many
|
||||||
|
// requests, one response) RPC. It is generic over both the type of the request
|
||||||
|
// message stream and the type of the unary response message. It is used in
|
||||||
|
// generated code.
|
||||||
|
type ClientStreamingClient[Req any, Res any] interface {
|
||||||
|
Send(*Req) error
|
||||||
|
CloseAndRecv() (*Res, error)
|
||||||
|
ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// ClientStreamingServer represents the server side of a client-streaming (many
|
||||||
|
// requests, one response) RPC. It is generic over both the type of the request
|
||||||
|
// message stream and the type of the unary response message. It is used in
|
||||||
|
// generated code.
|
||||||
|
type ClientStreamingServer[Req any, Res any] interface {
|
||||||
|
Recv() (*Req, error)
|
||||||
|
SendAndClose(*Res) error
|
||||||
|
ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// BidiStreamingClient represents the client side of a bidirectional-streaming
|
||||||
|
// (many requests, many responses) RPC. It is generic over both the type of the
|
||||||
|
// request message stream and the type of the response message stream. It is
|
||||||
|
// used in generated code.
|
||||||
|
type BidiStreamingClient[Req any, Res any] interface {
|
||||||
|
Send(*Req) error
|
||||||
|
Recv() (*Res, error)
|
||||||
|
ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// BidiStreamingServer represents the server side of a bidirectional-streaming
|
||||||
|
// (many requests, many responses) RPC. It is generic over both the type of the
|
||||||
|
// request message stream and the type of the response message stream. It is
|
||||||
|
// used in generated code.
|
||||||
|
type BidiStreamingServer[Req any, Res any] interface {
|
||||||
|
Recv() (*Req, error)
|
||||||
|
Send(*Res) error
|
||||||
|
ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
// GenericClientStream implements the ServerStreamingClient, ClientStreamingClient,
|
||||||
|
// and BidiStreamingClient interfaces. It is used in generated code.
|
||||||
|
type GenericClientStream[Req any, Res any] struct {
|
||||||
|
ClientStream
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ ServerStreamingClient[string] = (*GenericClientStream[int, string])(nil)
|
||||||
|
var _ ClientStreamingClient[int, string] = (*GenericClientStream[int, string])(nil)
|
||||||
|
var _ BidiStreamingClient[int, string] = (*GenericClientStream[int, string])(nil)
|
||||||
|
|
||||||
|
// Send pushes one message into the stream of requests to be consumed by the
|
||||||
|
// server. The type of message which can be sent is determined by the Req type
|
||||||
|
// parameter of the GenericClientStream receiver.
|
||||||
|
func (x *GenericClientStream[Req, Res]) Send(m *Req) error {
|
||||||
|
return x.ClientStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recv reads one message from the stream of responses generated by the server.
|
||||||
|
// The type of the message returned is determined by the Res type parameter
|
||||||
|
// of the GenericClientStream receiver.
|
||||||
|
func (x *GenericClientStream[Req, Res]) Recv() (*Res, error) {
|
||||||
|
m := new(Res)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// CloseAndRecv closes the sending side of the stream, then receives the unary
|
||||||
|
// response from the server. The type of message which it returns is determined
|
||||||
|
// by the Res type parameter of the GenericClientStream receiver.
|
||||||
|
func (x *GenericClientStream[Req, Res]) CloseAndRecv() (*Res, error) {
|
||||||
|
if err := x.ClientStream.CloseSend(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
m := new(Res)
|
||||||
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GenericServerStream implements the ServerStreamingServer, ClientStreamingServer,
|
||||||
|
// and BidiStreamingServer interfaces. It is used in generated code.
|
||||||
|
type GenericServerStream[Req any, Res any] struct {
|
||||||
|
ServerStream
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ ServerStreamingServer[string] = (*GenericServerStream[int, string])(nil)
|
||||||
|
var _ ClientStreamingServer[int, string] = (*GenericServerStream[int, string])(nil)
|
||||||
|
var _ BidiStreamingServer[int, string] = (*GenericServerStream[int, string])(nil)
|
||||||
|
|
||||||
|
// Send pushes one message into the stream of responses to be consumed by the
|
||||||
|
// client. The type of message which can be sent is determined by the Res
|
||||||
|
// type parameter of the serverStreamServer receiver.
|
||||||
|
func (x *GenericServerStream[Req, Res]) Send(m *Res) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SendAndClose pushes the unary response to the client. The type of message
|
||||||
|
// which can be sent is determined by the Res type parameter of the
|
||||||
|
// clientStreamServer receiver.
|
||||||
|
func (x *GenericServerStream[Req, Res]) SendAndClose(m *Res) error {
|
||||||
|
return x.ServerStream.SendMsg(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recv reads one message from the stream of requests generated by the client.
|
||||||
|
// The type of the message returned is determined by the Req type parameter
|
||||||
|
// of the clientStreamServer receiver.
|
||||||
|
func (x *GenericServerStream[Req, Res]) Recv() (*Req, error) {
|
||||||
|
m := new(Req)
|
||||||
|
if err := x.ServerStream.RecvMsg(m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|
@ -19,4 +19,4 @@
|
||||||
package grpc
|
package grpc
|
||||||
|
|
||||||
// Version is the current grpc version.
|
// Version is the current grpc version.
|
||||||
const Version = "1.63.2"
|
const Version = "1.64.0"
|
||||||
|
|
|
||||||
|
|
@ -1,195 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -ex # Exit on error; debugging enabled.
|
|
||||||
set -o pipefail # Fail a pipe if any sub-command fails.
|
|
||||||
|
|
||||||
# not makes sure the command passed to it does not exit with a return code of 0.
|
|
||||||
not() {
|
|
||||||
# This is required instead of the earlier (! $COMMAND) because subshells and
|
|
||||||
# pipefail don't work the same on Darwin as in Linux.
|
|
||||||
! "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
die() {
|
|
||||||
echo "$@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
fail_on_output() {
|
|
||||||
tee /dev/stderr | not read
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check to make sure it's safe to modify the user's git repo.
|
|
||||||
git status --porcelain | fail_on_output
|
|
||||||
|
|
||||||
# Undo any edits made by this script.
|
|
||||||
cleanup() {
|
|
||||||
git reset --hard HEAD
|
|
||||||
}
|
|
||||||
trap cleanup EXIT
|
|
||||||
|
|
||||||
PATH="${HOME}/go/bin:${GOROOT}/bin:${PATH}"
|
|
||||||
go version
|
|
||||||
|
|
||||||
if [[ "$1" = "-install" ]]; then
|
|
||||||
# Install the pinned versions as defined in module tools.
|
|
||||||
pushd ./test/tools
|
|
||||||
go install \
|
|
||||||
golang.org/x/tools/cmd/goimports \
|
|
||||||
honnef.co/go/tools/cmd/staticcheck \
|
|
||||||
github.com/client9/misspell/cmd/misspell
|
|
||||||
popd
|
|
||||||
if [[ -z "${VET_SKIP_PROTO}" ]]; then
|
|
||||||
if [[ "${GITHUB_ACTIONS}" = "true" ]]; then
|
|
||||||
PROTOBUF_VERSION=25.2 # a.k.a. v4.22.0 in pb.go files.
|
|
||||||
PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip
|
|
||||||
pushd /home/runner/go
|
|
||||||
wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME}
|
|
||||||
unzip ${PROTOC_FILENAME}
|
|
||||||
bin/protoc --version
|
|
||||||
popd
|
|
||||||
elif not which protoc > /dev/null; then
|
|
||||||
die "Please install protoc into your path"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
elif [[ "$#" -ne 0 ]]; then
|
|
||||||
die "Unknown argument(s): $*"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# - Check that generated proto files are up to date.
|
|
||||||
if [[ -z "${VET_SKIP_PROTO}" ]]; then
|
|
||||||
make proto && git status --porcelain 2>&1 | fail_on_output || \
|
|
||||||
(git status; git --no-pager diff; exit 1)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n "${VET_ONLY_PROTO}" ]]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# - Ensure all source files contain a copyright message.
|
|
||||||
# (Done in two parts because Darwin "git grep" has broken support for compound
|
|
||||||
# exclusion matches.)
|
|
||||||
(grep -L "DO NOT EDIT" $(git grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)" -- '*.go') || true) | fail_on_output
|
|
||||||
|
|
||||||
# - Make sure all tests in grpc and grpc/test use leakcheck via Teardown.
|
|
||||||
not grep 'func Test[^(]' *_test.go
|
|
||||||
not grep 'func Test[^(]' test/*.go
|
|
||||||
|
|
||||||
# - Check for typos in test function names
|
|
||||||
git grep 'func (s) ' -- "*_test.go" | not grep -v 'func (s) Test'
|
|
||||||
git grep 'func [A-Z]' -- "*_test.go" | not grep -v 'func Test\|Benchmark\|Example'
|
|
||||||
|
|
||||||
# - Do not import x/net/context.
|
|
||||||
not git grep -l 'x/net/context' -- "*.go"
|
|
||||||
|
|
||||||
# - Do not use time.After except in tests. It has the potential to leak the
|
|
||||||
# timer since there is no way to stop it early.
|
|
||||||
git grep -l 'time.After(' -- "*.go" | not grep -v '_test.go\|test_utils\|testutils'
|
|
||||||
|
|
||||||
# - Do not import math/rand for real library code. Use internal/grpcrand for
|
|
||||||
# thread safety.
|
|
||||||
git grep -l '"math/rand"' -- "*.go" 2>&1 | not grep -v '^examples\|^interop/stress\|grpcrand\|^benchmark\|wrr_test'
|
|
||||||
|
|
||||||
# - Do not use "interface{}"; use "any" instead.
|
|
||||||
git grep -l 'interface{}' -- "*.go" 2>&1 | not grep -v '\.pb\.go\|protoc-gen-go-grpc\|grpc_testing_not_regenerate'
|
|
||||||
|
|
||||||
# - Do not call grpclog directly. Use grpclog.Component instead.
|
|
||||||
git grep -l -e 'grpclog.I' --or -e 'grpclog.W' --or -e 'grpclog.E' --or -e 'grpclog.F' --or -e 'grpclog.V' -- "*.go" | not grep -v '^grpclog/component.go\|^internal/grpctest/tlogger_test.go'
|
|
||||||
|
|
||||||
# - Ensure all ptypes proto packages are renamed when importing.
|
|
||||||
not git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go"
|
|
||||||
|
|
||||||
# - Ensure all usages of grpc_testing package are renamed when importing.
|
|
||||||
not git grep "\(import \|^\s*\)\"google.golang.org/grpc/interop/grpc_testing" -- "*.go"
|
|
||||||
|
|
||||||
# - Ensure all xds proto imports are renamed to *pb or *grpc.
|
|
||||||
git grep '"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb "\|grpc "'
|
|
||||||
|
|
||||||
misspell -error .
|
|
||||||
|
|
||||||
# - gofmt, goimports, go vet, go mod tidy.
|
|
||||||
# Perform these checks on each module inside gRPC.
|
|
||||||
for MOD_FILE in $(find . -name 'go.mod'); do
|
|
||||||
MOD_DIR=$(dirname ${MOD_FILE})
|
|
||||||
pushd ${MOD_DIR}
|
|
||||||
go vet -all ./... | fail_on_output
|
|
||||||
gofmt -s -d -l . 2>&1 | fail_on_output
|
|
||||||
goimports -l . 2>&1 | not grep -vE "\.pb\.go"
|
|
||||||
|
|
||||||
go mod tidy -compat=1.19
|
|
||||||
git status --porcelain 2>&1 | fail_on_output || \
|
|
||||||
(git status; git --no-pager diff; exit 1)
|
|
||||||
popd
|
|
||||||
done
|
|
||||||
|
|
||||||
# - Collection of static analysis checks
|
|
||||||
SC_OUT="$(mktemp)"
|
|
||||||
staticcheck -go 1.19 -checks 'all' ./... > "${SC_OUT}" || true
|
|
||||||
|
|
||||||
# Error for anything other than checks that need exclusions.
|
|
||||||
grep -v "(ST1000)" "${SC_OUT}" | grep -v "(SA1019)" | grep -v "(ST1003)" | not grep -v "(ST1019)\|\(other import of\)"
|
|
||||||
|
|
||||||
# Exclude underscore checks for generated code.
|
|
||||||
grep "(ST1003)" "${SC_OUT}" | not grep -v '\(.pb.go:\)\|\(code_string_test.go:\)\|\(grpc_testing_not_regenerate\)'
|
|
||||||
|
|
||||||
# Error for duplicate imports not including grpc protos.
|
|
||||||
grep "(ST1019)\|\(other import of\)" "${SC_OUT}" | not grep -Fv 'XXXXX PleaseIgnoreUnused
|
|
||||||
channelz/grpc_channelz_v1"
|
|
||||||
go-control-plane/envoy
|
|
||||||
grpclb/grpc_lb_v1"
|
|
||||||
health/grpc_health_v1"
|
|
||||||
interop/grpc_testing"
|
|
||||||
orca/v3"
|
|
||||||
proto/grpc_gcp"
|
|
||||||
proto/grpc_lookup_v1"
|
|
||||||
reflection/grpc_reflection_v1"
|
|
||||||
reflection/grpc_reflection_v1alpha"
|
|
||||||
XXXXX PleaseIgnoreUnused'
|
|
||||||
|
|
||||||
# Error for any package comments not in generated code.
|
|
||||||
grep "(ST1000)" "${SC_OUT}" | not grep -v "\.pb\.go:"
|
|
||||||
|
|
||||||
# Only ignore the following deprecated types/fields/functions and exclude
|
|
||||||
# generated code.
|
|
||||||
grep "(SA1019)" "${SC_OUT}" | not grep -Fv 'XXXXX PleaseIgnoreUnused
|
|
||||||
XXXXX Protobuf related deprecation errors:
|
|
||||||
"github.com/golang/protobuf
|
|
||||||
.pb.go:
|
|
||||||
grpc_testing_not_regenerate
|
|
||||||
: ptypes.
|
|
||||||
proto.RegisterType
|
|
||||||
XXXXX gRPC internal usage deprecation errors:
|
|
||||||
"google.golang.org/grpc
|
|
||||||
: grpc.
|
|
||||||
: v1alpha.
|
|
||||||
: v1alphareflectionpb.
|
|
||||||
BalancerAttributes is deprecated:
|
|
||||||
CredsBundle is deprecated:
|
|
||||||
Metadata is deprecated: use Attributes instead.
|
|
||||||
NewSubConn is deprecated:
|
|
||||||
OverrideServerName is deprecated:
|
|
||||||
RemoveSubConn is deprecated:
|
|
||||||
SecurityVersion is deprecated:
|
|
||||||
Target is deprecated: Use the Target field in the BuildOptions instead.
|
|
||||||
UpdateAddresses is deprecated:
|
|
||||||
UpdateSubConnState is deprecated:
|
|
||||||
balancer.ErrTransientFailure is deprecated:
|
|
||||||
grpc/reflection/v1alpha/reflection.proto
|
|
||||||
SwitchTo is deprecated:
|
|
||||||
XXXXX xDS deprecated fields we support
|
|
||||||
.ExactMatch
|
|
||||||
.PrefixMatch
|
|
||||||
.SafeRegexMatch
|
|
||||||
.SuffixMatch
|
|
||||||
GetContainsMatch
|
|
||||||
GetExactMatch
|
|
||||||
GetMatchSubjectAltNames
|
|
||||||
GetPrefixMatch
|
|
||||||
GetSafeRegexMatch
|
|
||||||
GetSuffixMatch
|
|
||||||
GetTlsCertificateCertificateProviderInstance
|
|
||||||
GetValidationContextCertificateProviderInstance
|
|
||||||
XXXXX PleaseIgnoreUnused'
|
|
||||||
|
|
||||||
echo SUCCESS
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
# cloud.google.com/go v0.113.0
|
# cloud.google.com/go v0.114.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.20
|
||||||
cloud.google.com/go/internal
|
cloud.google.com/go/internal
|
||||||
cloud.google.com/go/internal/optional
|
cloud.google.com/go/internal/optional
|
||||||
cloud.google.com/go/internal/trace
|
cloud.google.com/go/internal/trace
|
||||||
cloud.google.com/go/internal/version
|
cloud.google.com/go/internal/version
|
||||||
# cloud.google.com/go/auth v0.4.1
|
# cloud.google.com/go/auth v0.4.2
|
||||||
## explicit; go 1.19
|
## explicit; go 1.20
|
||||||
cloud.google.com/go/auth
|
cloud.google.com/go/auth
|
||||||
cloud.google.com/go/auth/credentials
|
cloud.google.com/go/auth/credentials
|
||||||
cloud.google.com/go/auth/credentials/internal/externalaccount
|
cloud.google.com/go/auth/credentials/internal/externalaccount
|
||||||
|
|
@ -1181,7 +1181,7 @@ golang.org/x/text/unicode/norm
|
||||||
# golang.org/x/time v0.5.0
|
# golang.org/x/time v0.5.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/time/rate
|
golang.org/x/time/rate
|
||||||
# google.golang.org/api v0.181.0
|
# google.golang.org/api v0.182.0
|
||||||
## explicit; go 1.20
|
## explicit; go 1.20
|
||||||
google.golang.org/api/googleapi
|
google.golang.org/api/googleapi
|
||||||
google.golang.org/api/googleapi/transport
|
google.golang.org/api/googleapi/transport
|
||||||
|
|
@ -1204,16 +1204,16 @@ google.golang.org/api/transport/http/internal/propagation
|
||||||
google.golang.org/genproto/googleapis/type/date
|
google.golang.org/genproto/googleapis/type/date
|
||||||
google.golang.org/genproto/googleapis/type/expr
|
google.golang.org/genproto/googleapis/type/expr
|
||||||
google.golang.org/genproto/protobuf/field_mask
|
google.golang.org/genproto/protobuf/field_mask
|
||||||
# google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae
|
# google.golang.org/genproto/googleapis/api v0.0.0-20240513163218-0867130af1f8
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
google.golang.org/genproto/googleapis/api
|
google.golang.org/genproto/googleapis/api
|
||||||
google.golang.org/genproto/googleapis/api/annotations
|
google.golang.org/genproto/googleapis/api/annotations
|
||||||
# google.golang.org/genproto/googleapis/rpc v0.0.0-20240513163218-0867130af1f8
|
# google.golang.org/genproto/googleapis/rpc v0.0.0-20240521202816-d264139d666e
|
||||||
## explicit; go 1.19
|
## explicit; go 1.20
|
||||||
google.golang.org/genproto/googleapis/rpc/code
|
google.golang.org/genproto/googleapis/rpc/code
|
||||||
google.golang.org/genproto/googleapis/rpc/errdetails
|
google.golang.org/genproto/googleapis/rpc/errdetails
|
||||||
google.golang.org/genproto/googleapis/rpc/status
|
google.golang.org/genproto/googleapis/rpc/status
|
||||||
# google.golang.org/grpc v1.63.2
|
# google.golang.org/grpc v1.64.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
google.golang.org/grpc
|
google.golang.org/grpc
|
||||||
google.golang.org/grpc/attributes
|
google.golang.org/grpc/attributes
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue