mirror of https://github.com/kubernetes/kops.git
Update dependencies
This commit is contained in:
parent
cfaac30d37
commit
9d64553bf6
50
go.mod
50
go.mod
|
@ -14,30 +14,30 @@ require (
|
|||
github.com/Masterminds/sprig/v3 v3.2.3
|
||||
github.com/apparentlymart/go-cidr v1.1.0
|
||||
github.com/aws/amazon-ec2-instance-selector/v2 v2.4.1
|
||||
github.com/aws/aws-sdk-go v1.48.15
|
||||
github.com/aws/aws-sdk-go v1.49.13
|
||||
github.com/blang/semver/v4 v4.0.0
|
||||
github.com/cert-manager/cert-manager v1.13.2
|
||||
github.com/cert-manager/cert-manager v1.13.3
|
||||
github.com/digitalocean/godo v1.107.0
|
||||
github.com/go-ini/ini v1.67.0
|
||||
github.com/go-logr/logr v1.3.0
|
||||
github.com/go-logr/logr v1.4.1
|
||||
github.com/gogo/protobuf v1.3.2
|
||||
github.com/google/go-cmp v0.6.0
|
||||
github.com/google/go-containerregistry v0.17.0
|
||||
github.com/google/go-tpm v0.9.0
|
||||
github.com/google/go-tpm-tools v0.4.2
|
||||
github.com/google/uuid v1.4.0
|
||||
github.com/google/uuid v1.5.0
|
||||
github.com/gophercloud/gophercloud v1.8.0
|
||||
github.com/hetznercloud/hcloud-go v1.52.0
|
||||
github.com/hetznercloud/hcloud-go v1.53.0
|
||||
github.com/jacksontj/memberlistmesh v0.0.0-20190905163944-93462b9d2bb7
|
||||
github.com/mitchellh/mapstructure v1.5.0
|
||||
github.com/pelletier/go-toml v1.9.5
|
||||
github.com/pkg/sftp v1.13.6
|
||||
github.com/prometheus/client_golang v1.17.0
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21
|
||||
github.com/prometheus/client_golang v1.18.0
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.22
|
||||
github.com/sergi/go-diff v1.3.1
|
||||
github.com/spf13/cobra v1.8.0
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/spf13/viper v1.18.0
|
||||
github.com/spf13/viper v1.18.2
|
||||
github.com/spotinst/spotinst-sdk-go v1.171.0
|
||||
github.com/stretchr/testify v1.8.4
|
||||
github.com/weaveworks/mesh v0.0.0-20191105120815-58dbcc3e8e63
|
||||
|
@ -48,24 +48,24 @@ require (
|
|||
go.opentelemetry.io/otel/trace v1.21.0
|
||||
go.opentelemetry.io/proto/otlp v1.0.0
|
||||
go.uber.org/multierr v1.11.0
|
||||
golang.org/x/crypto v0.16.0
|
||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb
|
||||
golang.org/x/crypto v0.17.0
|
||||
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b
|
||||
golang.org/x/net v0.19.0
|
||||
golang.org/x/oauth2 v0.15.0
|
||||
golang.org/x/sync v0.5.0
|
||||
golang.org/x/sys v0.15.0
|
||||
google.golang.org/api v0.153.0
|
||||
google.golang.org/grpc v1.59.0
|
||||
google.golang.org/protobuf v1.31.0
|
||||
google.golang.org/api v0.154.0
|
||||
google.golang.org/grpc v1.60.1
|
||||
google.golang.org/protobuf v1.32.0
|
||||
gopkg.in/gcfg.v1 v1.2.3
|
||||
gopkg.in/inf.v0 v0.9.1
|
||||
gopkg.in/square/go-jose.v2 v2.6.0
|
||||
helm.sh/helm/v3 v3.13.2
|
||||
helm.sh/helm/v3 v3.13.3
|
||||
k8s.io/api v0.29.0
|
||||
k8s.io/apimachinery v0.29.0
|
||||
k8s.io/cli-runtime v0.29.0
|
||||
k8s.io/client-go v0.29.0
|
||||
k8s.io/cloud-provider-aws v1.28.3
|
||||
k8s.io/cloud-provider-aws v1.29.1
|
||||
k8s.io/cloud-provider-gcp/providers v0.28.2
|
||||
k8s.io/component-base v0.29.0
|
||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01
|
||||
|
@ -171,7 +171,7 @@ require (
|
|||
github.com/mattn/go-ieproxy v0.0.1 // indirect
|
||||
github.com/mattn/go-isatty v0.0.17 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.13 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
|
||||
github.com/miekg/dns v1.1.55 // indirect
|
||||
github.com/mitchellh/copystructure v1.2.0 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
|
@ -201,9 +201,9 @@ require (
|
|||
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
|
||||
github.com/prometheus/common v0.44.0 // indirect
|
||||
github.com/prometheus/procfs v0.11.1 // indirect
|
||||
github.com/prometheus/client_model v0.5.0 // indirect
|
||||
github.com/prometheus/common v0.45.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/rivo/uniseg v0.2.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
||||
|
@ -227,17 +227,17 @@ require (
|
|||
golang.org/x/time v0.5.0 // indirect
|
||||
golang.org/x/tools v0.16.0 // indirect
|
||||
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
|
||||
google.golang.org/appengine v1.6.8 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
k8s.io/apiextensions-apiserver v0.28.3 // indirect
|
||||
k8s.io/cloud-provider v0.28.3 // indirect
|
||||
k8s.io/apiextensions-apiserver v0.28.4 // indirect
|
||||
k8s.io/cloud-provider v0.29.0 // indirect
|
||||
k8s.io/component-helpers v0.29.0 // indirect
|
||||
k8s.io/csi-translation-lib v0.28.3 // indirect
|
||||
k8s.io/csi-translation-lib v0.29.0 // indirect
|
||||
k8s.io/klog v1.0.0 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
|
||||
oras.land/oras-go v1.2.4 // indirect
|
||||
|
|
106
go.sum
106
go.sum
|
@ -78,8 +78,8 @@ github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z
|
|||
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||
github.com/aws/amazon-ec2-instance-selector/v2 v2.4.1 h1:DmxtwV+pkakkVRhxKcAgnLbxCxvT7k8DBG271dfKPZ8=
|
||||
github.com/aws/amazon-ec2-instance-selector/v2 v2.4.1/go.mod h1:AEJrtkLkCkfIBIazidrVrgZqaXl+9dxI/wRgjdw+7G0=
|
||||
github.com/aws/aws-sdk-go v1.48.15 h1:Gad2C4pLzuZDd5CA0Rvkfko6qUDDTOYru145gkO7w/Y=
|
||||
github.com/aws/aws-sdk-go v1.48.15/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
|
||||
github.com/aws/aws-sdk-go v1.49.13 h1:f4mGztsgnx2dR9r8FQYa9YW/RsKb+N7bgef4UGrOW1Y=
|
||||
github.com/aws/aws-sdk-go v1.49.13/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
|
@ -96,8 +96,8 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0Bsq
|
|||
github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=
|
||||
github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cert-manager/cert-manager v1.13.2 h1:LG8+OLvxtc49CSyfjW7zHSyvlt7JVaHgRGyhfdvPpkk=
|
||||
github.com/cert-manager/cert-manager v1.13.2/go.mod h1:AdfSU8muS+bj3C46YaD1VrlpXh672z5MeW/k1k5Sl1w=
|
||||
github.com/cert-manager/cert-manager v1.13.3 h1:3R4G0RI7K0OkTZhWlVOC5SGZMYa2NwqmQJoyKydrz/M=
|
||||
github.com/cert-manager/cert-manager v1.13.3/go.mod h1:BM2+Pt/NmSv1Zr25/MHv6BgIEF9IUxA1xAjp80qkxgc=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
|
||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
|
@ -200,8 +200,9 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V
|
|||
github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
|
||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
||||
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo=
|
||||
|
@ -241,6 +242,7 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq
|
|||
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
||||
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
|
||||
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k=
|
||||
|
@ -296,8 +298,8 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
|
|||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
|
||||
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
|
||||
github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas=
|
||||
|
@ -348,8 +350,8 @@ github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06A
|
|||
github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
|
||||
github.com/hashicorp/memberlist v0.3.1 h1:MXgUXLqva1QvpVEDQW1IQLG0wivQAtmFlHRQ+1vWZfM=
|
||||
github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
|
||||
github.com/hetznercloud/hcloud-go v1.52.0 h1:3r9pEulTOBB9BoArSgpQYUQVTy+Xjkg0k/QAU4c6dQ8=
|
||||
github.com/hetznercloud/hcloud-go v1.52.0/go.mod h1:VzDWThl47lOnZXY0q5/LPFD+M62pfe/52TV+mOrpp9Q=
|
||||
github.com/hetznercloud/hcloud-go v1.53.0 h1:xThhlJc6MdpvDAqVB7bAw+nAQuCpQMwsf3yanCis4rM=
|
||||
github.com/hetznercloud/hcloud-go v1.53.0/go.mod h1:VzDWThl47lOnZXY0q5/LPFD+M62pfe/52TV+mOrpp9Q=
|
||||
github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
|
||||
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
|
||||
|
@ -414,8 +416,8 @@ github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRC
|
|||
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
|
||||
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
|
||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
|
||||
github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo=
|
||||
|
@ -510,27 +512,27 @@ github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4
|
|||
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
|
||||
github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
|
||||
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
|
||||
github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
|
||||
github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
|
||||
github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
|
||||
github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM=
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
|
||||
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
|
||||
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
|
||||
github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
|
||||
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
|
||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
|
||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
|
||||
github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
|
||||
github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
|
||||
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
|
||||
github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
|
||||
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
|
||||
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
||||
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
|
@ -545,8 +547,8 @@ github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6g
|
|||
github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ=
|
||||
github.com/sahilm/fuzzy v0.1.0 h1:FzWGaw2Opqyu+794ZQ9SYifWv2EIXpwP4q8dY1kDAwI=
|
||||
github.com/sahilm/fuzzy v0.1.0/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21 h1:yWfiTPwYxB0l5fGMhl/G+liULugVIHD9AU77iNLrURQ=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.21/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.22 h1:wJrcTdddKOI8TFxs8cemnhKP2EmKy3yfUKHj3ZdfzYo=
|
||||
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.22/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
|
||||
|
@ -570,8 +572,8 @@ github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0=
|
|||
github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.18.0 h1:pN6W1ub/G4OfnM+NR9p7xP9R6TltLUzp5JG9yZD3Qg0=
|
||||
github.com/spf13/viper v1.18.0/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
|
||||
github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
|
||||
github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
|
||||
github.com/spotinst/spotinst-sdk-go v1.171.0 h1:ZihMPEjkpIkSpawWLJt9RtCRY4mOQMGlfrkVmA03000=
|
||||
github.com/spotinst/spotinst-sdk-go v1.171.0/go.mod h1:Ku9c4p+kRWnQqmXkzGcTMHLcQKgLHrQZISxeKY7mPqE=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
|
@ -649,11 +651,11 @@ golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0
|
|||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
|
||||
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8=
|
||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
|
||||
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b h1:kLiC65FbiHWFAOu+lxwNPujcsl8VYyTYYEZnsOO1WK4=
|
||||
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
|
@ -670,7 +672,6 @@ golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73r
|
|||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
|
@ -745,6 +746,7 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
|||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
|
@ -770,28 +772,28 @@ 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=
|
||||
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
|
||||
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
|
||||
google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4=
|
||||
google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY=
|
||||
google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050=
|
||||
google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc=
|
||||
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.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
|
||||
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
|
||||
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc=
|
||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
|
||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM=
|
||||
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.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
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.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
|
||||
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
|
||||
google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
|
||||
google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
|
||||
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-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
|
@ -803,8 +805,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
|
|||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
|
||||
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
@ -833,32 +835,32 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
|||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
|
||||
gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
|
||||
helm.sh/helm/v3 v3.13.2 h1:IcO9NgmmpetJODLZhR3f3q+6zzyXVKlRizKFwbi7K8w=
|
||||
helm.sh/helm/v3 v3.13.2/go.mod h1:GIHDwZggaTGbedevTlrQ6DB++LBN6yuQdeGj0HNaDx0=
|
||||
helm.sh/helm/v3 v3.13.3 h1:0zPEdGqHcubehJHP9emCtzRmu8oYsJFRrlVF3TFj8xY=
|
||||
helm.sh/helm/v3 v3.13.3/go.mod h1:3OKO33yI3p4YEXtTITN2+4oScsHeQe71KuzhlZ+aPfg=
|
||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
k8s.io/api v0.29.0 h1:NiCdQMY1QOp1H8lfRyeEf8eOwV6+0xA6XEE44ohDX2A=
|
||||
k8s.io/api v0.29.0/go.mod h1:sdVmXoz2Bo/cb77Pxi71IPTSErEW32xa4aXwKH7gfBA=
|
||||
k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08=
|
||||
k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc=
|
||||
k8s.io/apiextensions-apiserver v0.28.4 h1:AZpKY/7wQ8n+ZYDtNHbAJBb+N4AXXJvyZx6ww6yAJvU=
|
||||
k8s.io/apiextensions-apiserver v0.28.4/go.mod h1:pgQIZ1U8eJSMQcENew/0ShUTlePcSGFq6dxSxf2mwPM=
|
||||
k8s.io/apimachinery v0.29.0 h1:+ACVktwyicPz0oc6MTMLwa2Pw3ouLAfAon1wPLtG48o=
|
||||
k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis=
|
||||
k8s.io/cli-runtime v0.29.0 h1:q2kC3cex4rOBLfPOnMSzV2BIrrQlx97gxHJs21KxKS4=
|
||||
k8s.io/cli-runtime v0.29.0/go.mod h1:VKudXp3X7wR45L+nER85YUzOQIru28HQpXr0mTdeCrk=
|
||||
k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8=
|
||||
k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38=
|
||||
k8s.io/cloud-provider v0.28.3 h1:9u+JjA3zIn0nqLOOa8tWnprFkffguSAhfBvo8p7LhBQ=
|
||||
k8s.io/cloud-provider v0.28.3/go.mod h1:shAJxdrKu+SwwGUhkodxByPjaH8KBFZqXo6jU1F0ehI=
|
||||
k8s.io/cloud-provider-aws v1.28.3 h1:JcgtHCxO3rMV3OzncW/UL3iPRgHAPnklkz6OG+DJJV4=
|
||||
k8s.io/cloud-provider-aws v1.28.3/go.mod h1:Au90yabJ9C0GxpP/U3XzoP3RmkJOyXzNgopJaxwIBWo=
|
||||
k8s.io/cloud-provider v0.29.0 h1:Qgk/jHsSKGRk/ltTlN6e7eaNuuamLROOzVBd0RPp94M=
|
||||
k8s.io/cloud-provider v0.29.0/go.mod h1:gBCt7YYKFV4oUcJ/0xF9lS/9il4MxKunJ+ZKvh39WGo=
|
||||
k8s.io/cloud-provider-aws v1.29.1 h1:v/17MNk1l79IkzDw/njmzKq0HHq3p9UvY9VmqJC7gmg=
|
||||
k8s.io/cloud-provider-aws v1.29.1/go.mod h1:NV7fBE8dddkF1wa7v+ljEue2AKi5VsFgMtZ9kTRnB1c=
|
||||
k8s.io/cloud-provider-gcp/providers v0.28.2 h1:I65pFTLNMQSj7YuW3Mg3pZIXmw0naCmF6TGAuz4/sZE=
|
||||
k8s.io/cloud-provider-gcp/providers v0.28.2/go.mod h1:P8dxRvvLtX7xUwVUzA/QOqv8taCzBaVsVMnjnpjmYXE=
|
||||
k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
|
||||
k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M=
|
||||
k8s.io/component-helpers v0.29.0 h1:Y8W70NGeitKxWwhsPo/vEQbQx5VqJV+3xfLpP3V1VxU=
|
||||
k8s.io/component-helpers v0.29.0/go.mod h1:j2coxVfmzTOXWSE6sta0MTgNSr572Dcx68F6DD+8fWc=
|
||||
k8s.io/csi-translation-lib v0.28.3 h1:7deV+HZjV418AGikSDPW8dyzTpm4K3tNbQUp3KmR7cs=
|
||||
k8s.io/csi-translation-lib v0.28.3/go.mod h1:zlrYwakCz2yji9/8EaJk+afIKPrYXPNXXLDO8DVuuTk=
|
||||
k8s.io/csi-translation-lib v0.29.0 h1:we4X1yUlDikvm5Rv0dwMuPHNw6KwjwsQiAuOPWXha8M=
|
||||
k8s.io/csi-translation-lib v0.29.0/go.mod h1:Cp6t3CNBSm1dXS17V8IImUjkqfIB6KCj8Fs8wf6uyTA=
|
||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks=
|
||||
k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
||||
k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
|
||||
|
|
|
@ -65,7 +65,7 @@ require (
|
|||
github.com/aliyun/credentials-go v1.2.3 // indirect
|
||||
github.com/apparentlymart/go-cidr v1.1.0 // indirect
|
||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
|
||||
github.com/aws/aws-sdk-go v1.48.15 // indirect
|
||||
github.com/aws/aws-sdk-go v1.49.13 // indirect
|
||||
github.com/aws/aws-sdk-go-v2 v1.18.1 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/config v1.18.27 // indirect
|
||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.26 // indirect
|
||||
|
@ -106,6 +106,7 @@ require (
|
|||
github.com/emicklei/proto v1.10.0 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
|
||||
github.com/ghodss/yaml v1.0.0 // indirect
|
||||
|
@ -115,7 +116,7 @@ require (
|
|||
github.com/go-git/go-git/v5 v5.11.0 // indirect
|
||||
github.com/go-ini/ini v1.67.0 // indirect
|
||||
github.com/go-jose/go-jose/v3 v3.0.0 // indirect
|
||||
github.com/go-logr/logr v1.3.0 // indirect
|
||||
github.com/go-logr/logr v1.4.1 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/go-openapi/analysis v0.21.4 // indirect
|
||||
|
@ -149,7 +150,7 @@ require (
|
|||
github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea // indirect
|
||||
github.com/google/licenseclassifier/v2 v2.0.0 // indirect
|
||||
github.com/google/s2a-go v0.1.7 // indirect
|
||||
github.com/google/uuid v1.4.0 // indirect
|
||||
github.com/google/uuid v1.5.0 // indirect
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
|
||||
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
|
||||
github.com/gophercloud/gophercloud v1.8.0 // indirect
|
||||
|
@ -176,7 +177,7 @@ require (
|
|||
github.com/magiconair/properties v1.8.7 // indirect
|
||||
github.com/mailru/easyjson v0.7.7 // indirect
|
||||
github.com/mattn/go-ieproxy v0.0.1 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
|
||||
github.com/miekg/pkcs11 v1.1.1 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||
|
@ -201,10 +202,10 @@ require (
|
|||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pkg/sftp v1.13.6 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/prometheus/client_golang v1.17.0 // indirect
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
|
||||
github.com/prometheus/common v0.44.0 // indirect
|
||||
github.com/prometheus/procfs v0.11.1 // indirect
|
||||
github.com/prometheus/client_golang v1.18.0 // indirect
|
||||
github.com/prometheus/client_model v0.5.0 // indirect
|
||||
github.com/prometheus/common v0.45.0 // indirect
|
||||
github.com/prometheus/procfs v0.12.0 // indirect
|
||||
github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b // indirect
|
||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect
|
||||
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
||||
|
@ -227,7 +228,7 @@ require (
|
|||
github.com/spf13/afero v1.11.0 // indirect
|
||||
github.com/spf13/cast v1.6.0 // indirect
|
||||
github.com/spf13/cobra v1.8.0 // indirect
|
||||
github.com/spf13/viper v1.18.0 // indirect
|
||||
github.com/spf13/viper v1.18.2 // indirect
|
||||
github.com/spiffe/go-spiffe/v2 v2.1.6 // indirect
|
||||
github.com/subosito/gotenv v1.6.0 // indirect
|
||||
github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect
|
||||
|
@ -248,6 +249,8 @@ require (
|
|||
gitlab.alpinelinux.org/alpine/go v0.7.0 // indirect
|
||||
go.mongodb.org/mongo-driver v1.11.3 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
|
||||
go.opentelemetry.io/otel v1.21.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.21.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.21.0 // indirect
|
||||
|
@ -256,8 +259,8 @@ require (
|
|||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/zap v1.24.0 // indirect
|
||||
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
|
||||
golang.org/x/crypto v0.16.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb // indirect
|
||||
golang.org/x/crypto v0.17.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b // indirect
|
||||
golang.org/x/mod v0.14.0 // indirect
|
||||
golang.org/x/net v0.19.0 // indirect
|
||||
golang.org/x/oauth2 v0.15.0 // indirect
|
||||
|
@ -269,13 +272,13 @@ require (
|
|||
golang.org/x/tools v0.16.0 // indirect
|
||||
golang.org/x/tools/go/vcs v0.1.0-deprecated // indirect
|
||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
||||
google.golang.org/api v0.153.0 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
|
||||
google.golang.org/grpc v1.59.0 // indirect
|
||||
google.golang.org/protobuf v1.31.0 // indirect
|
||||
google.golang.org/api v0.154.0 // indirect
|
||||
google.golang.org/appengine v1.6.8 // indirect
|
||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect
|
||||
google.golang.org/grpc v1.60.1 // indirect
|
||||
google.golang.org/protobuf v1.32.0 // indirect
|
||||
gopkg.in/gcfg.v1 v1.2.3 // indirect
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
|
@ -283,7 +286,7 @@ require (
|
|||
gopkg.in/warnings.v0 v0.1.2 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
k8s.io/cloud-provider v0.28.3 // indirect
|
||||
k8s.io/cloud-provider v0.29.0 // indirect
|
||||
k8s.io/cloud-provider-gcp/providers v0.28.2 // indirect
|
||||
k8s.io/component-base v0.29.0 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
|
||||
|
|
|
@ -167,8 +167,8 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY
|
|||
github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so=
|
||||
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw=
|
||||
github.com/aws/aws-sdk-go v1.48.15 h1:Gad2C4pLzuZDd5CA0Rvkfko6qUDDTOYru145gkO7w/Y=
|
||||
github.com/aws/aws-sdk-go v1.48.15/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
|
||||
github.com/aws/aws-sdk-go v1.49.13 h1:f4mGztsgnx2dR9r8FQYa9YW/RsKb+N7bgef4UGrOW1Y=
|
||||
github.com/aws/aws-sdk-go v1.49.13/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk=
|
||||
github.com/aws/aws-sdk-go-v2 v1.7.1/go.mod h1:L5LuPC1ZgDr2xQS7AmIec/Jlc7O/Y1u2KxJyNVab250=
|
||||
github.com/aws/aws-sdk-go-v2 v1.14.0/go.mod h1:ZA3Y8V0LrlWj63MQAnRHgKf/5QB//LSZCPNWlWrNGLU=
|
||||
github.com/aws/aws-sdk-go-v2 v1.18.1 h1:+tefE750oAb7ZQGzla6bLkOwfcQCEtC5y2RqoqCeqKo=
|
||||
|
@ -251,6 +251,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
|
|||
github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
|
||||
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
|
||||
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
|
||||
github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
|
||||
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
|
||||
|
@ -323,6 +325,8 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
|
|||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA=
|
||||
github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE=
|
||||
github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
|
||||
github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/facebookgo/clock v0.0.0-20150410010913-600d898af40a h1:yDWHCSQ40h88yih2JAcL6Ls/kVkSE8GFACTGVnMPruw=
|
||||
|
@ -334,6 +338,8 @@ github.com/facebookgo/muster v0.0.0-20150708232844-fd3d7953fd52/go.mod h1:yIquW8
|
|||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
|
||||
github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
|
||||
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
|
||||
github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
|
||||
github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
|
||||
|
@ -372,8 +378,9 @@ github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2
|
|||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY=
|
||||
github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
|
||||
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
|
@ -559,8 +566,8 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
|
|||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4=
|
||||
github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU=
|
||||
github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
|
||||
github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
|
@ -715,8 +722,8 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx
|
|||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg=
|
||||
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=
|
||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo=
|
||||
github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY=
|
||||
|
@ -818,21 +825,21 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF
|
|||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
|
||||
github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q=
|
||||
github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY=
|
||||
github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
|
||||
github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
|
||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM=
|
||||
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU=
|
||||
github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=
|
||||
github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI=
|
||||
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
|
||||
github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY=
|
||||
github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY=
|
||||
github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM=
|
||||
github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI=
|
||||
github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY=
|
||||
github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
|
||||
github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b h1:zd/2RNzIRkoGGMjE+YIsZ85CnDIz672JK2F3Zl4vux4=
|
||||
github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78=
|
||||
|
@ -931,8 +938,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
|||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
|
||||
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
github.com/spf13/viper v1.18.0 h1:pN6W1ub/G4OfnM+NR9p7xP9R6TltLUzp5JG9yZD3Qg0=
|
||||
github.com/spf13/viper v1.18.0/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
|
||||
github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ=
|
||||
github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk=
|
||||
github.com/spiffe/go-spiffe/v2 v2.1.6 h1:4SdizuQieFyL9eNU+SPiCArH4kynzaKOOj0VvM8R7Xo=
|
||||
github.com/spiffe/go-spiffe/v2 v2.1.6/go.mod h1:eVDqm9xFvyqao6C+eQensb9ZPkyNEeaUbqbBpOhBnNk=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
|
@ -1037,6 +1044,10 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE=
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo=
|
||||
go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc=
|
||||
go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo=
|
||||
go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4=
|
||||
|
@ -1084,8 +1095,8 @@ golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw
|
|||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
|
||||
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
|
||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
|
@ -1094,8 +1105,8 @@ golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE
|
|||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8=
|
||||
golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
|
||||
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b h1:kLiC65FbiHWFAOu+lxwNPujcsl8VYyTYYEZnsOO1WK4=
|
||||
golang.org/x/exp v0.0.0-20231226003508-02704c960a9b/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
|
@ -1251,6 +1262,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
|
@ -1317,15 +1329,15 @@ google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb
|
|||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
|
||||
google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4=
|
||||
google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY=
|
||||
google.golang.org/api v0.154.0 h1:X7QkVKZBskztmpPKWQXgjJRPA2dJYrL6r+sYPRLj050=
|
||||
google.golang.org/api v0.154.0/go.mod h1:qhSMkM85hgqiokIYsrRyKxrjfBeIhgl4Z2JmeRkYylc=
|
||||
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.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
|
||||
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
|
||||
google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
|
@ -1340,12 +1352,12 @@ google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvx
|
|||
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
||||
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ=
|
||||
google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17 h1:JpwMPBpFN3uKhdaekDpiNlImDdkUAyiJ6ez/uxGaUSo=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc=
|
||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
|
||||
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
|
@ -1356,8 +1368,8 @@ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
|
|||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||
google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
|
||||
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
|
||||
google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
|
||||
google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
|
||||
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-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
|
@ -1369,8 +1381,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD
|
|||
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
|
||||
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc=
|
||||
gopkg.in/alexcesaro/statsd.v2 v2.0.0/go.mod h1:i0ubccKGzBVNBpdGV5MocxyA/XlLUJzA7SLonnE4drU=
|
||||
|
@ -1426,8 +1438,8 @@ k8s.io/apimachinery v0.29.0 h1:+ACVktwyicPz0oc6MTMLwa2Pw3ouLAfAon1wPLtG48o=
|
|||
k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis=
|
||||
k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8=
|
||||
k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38=
|
||||
k8s.io/cloud-provider v0.28.3 h1:9u+JjA3zIn0nqLOOa8tWnprFkffguSAhfBvo8p7LhBQ=
|
||||
k8s.io/cloud-provider v0.28.3/go.mod h1:shAJxdrKu+SwwGUhkodxByPjaH8KBFZqXo6jU1F0ehI=
|
||||
k8s.io/cloud-provider v0.29.0 h1:Qgk/jHsSKGRk/ltTlN6e7eaNuuamLROOzVBd0RPp94M=
|
||||
k8s.io/cloud-provider v0.29.0/go.mod h1:gBCt7YYKFV4oUcJ/0xF9lS/9il4MxKunJ+ZKvh39WGo=
|
||||
k8s.io/cloud-provider-gcp/providers v0.28.2 h1:I65pFTLNMQSj7YuW3Mg3pZIXmw0naCmF6TGAuz4/sZE=
|
||||
k8s.io/cloud-provider-gcp/providers v0.28.2/go.mod h1:P8dxRvvLtX7xUwVUzA/QOqv8taCzBaVsVMnjnpjmYXE=
|
||||
k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s=
|
||||
|
|
|
@ -442,6 +442,17 @@ func (c *Config) WithUseDualStack(enable bool) *Config {
|
|||
return c
|
||||
}
|
||||
|
||||
// WithUseFIPSEndpoint sets a config UseFIPSEndpoint value returning a Config
|
||||
// pointer for chaining.
|
||||
func (c *Config) WithUseFIPSEndpoint(enable bool) *Config {
|
||||
if enable {
|
||||
c.UseFIPSEndpoint = endpoints.FIPSEndpointStateEnabled
|
||||
} else {
|
||||
c.UseFIPSEndpoint = endpoints.FIPSEndpointStateDisabled
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// WithEC2MetadataDisableTimeoutOverride sets a config EC2MetadataDisableTimeoutOverride value
|
||||
// returning a Config pointer for chaining.
|
||||
func (c *Config) WithEC2MetadataDisableTimeoutOverride(enable bool) *Config {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,4 +5,4 @@ package aws
|
|||
const SDKName = "aws-sdk-go"
|
||||
|
||||
// SDKVersion is the version of this SDK
|
||||
const SDKVersion = "1.48.15"
|
||||
const SDKVersion = "1.49.13"
|
||||
|
|
|
@ -58035,6 +58035,25 @@ type AdvertiseByoipCidrInput struct {
|
|||
// the required permissions, the error response is DryRunOperation. Otherwise,
|
||||
// it is UnauthorizedOperation.
|
||||
DryRun *bool `type:"boolean"`
|
||||
|
||||
// If you have Local Zones (https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html)
|
||||
// enabled, you can choose a network border group for Local Zones when you provision
|
||||
// and advertise a BYOIPv4 CIDR. Choose the network border group carefully as
|
||||
// the EIP and the Amazon Web Services resource it is associated with must reside
|
||||
// in the same network border group.
|
||||
//
|
||||
// You can provision BYOIP address ranges to and advertise them in the following
|
||||
// Local Zone network border groups:
|
||||
//
|
||||
// * us-east-1-dfw-2
|
||||
//
|
||||
// * us-west-2-lax-1
|
||||
//
|
||||
// * us-west-2-phx-2
|
||||
//
|
||||
// You cannot provision or advertise BYOIPv6 address ranges in Local Zones at
|
||||
// this time.
|
||||
NetworkBorderGroup *string `type:"string"`
|
||||
}
|
||||
|
||||
// String returns the string representation.
|
||||
|
@ -58086,6 +58105,12 @@ func (s *AdvertiseByoipCidrInput) SetDryRun(v bool) *AdvertiseByoipCidrInput {
|
|||
return s
|
||||
}
|
||||
|
||||
// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
|
||||
func (s *AdvertiseByoipCidrInput) SetNetworkBorderGroup(v string) *AdvertiseByoipCidrInput {
|
||||
s.NetworkBorderGroup = &v
|
||||
return s
|
||||
}
|
||||
|
||||
type AdvertiseByoipCidrOutput struct {
|
||||
_ struct{} `type:"structure"`
|
||||
|
||||
|
@ -64318,6 +64343,25 @@ type ByoipCidr struct {
|
|||
// The description of the address range.
|
||||
Description *string `locationName:"description" type:"string"`
|
||||
|
||||
// If you have Local Zones (https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html)
|
||||
// enabled, you can choose a network border group for Local Zones when you provision
|
||||
// and advertise a BYOIPv4 CIDR. Choose the network border group carefully as
|
||||
// the EIP and the Amazon Web Services resource it is associated with must reside
|
||||
// in the same network border group.
|
||||
//
|
||||
// You can provision BYOIP address ranges to and advertise them in the following
|
||||
// Local Zone network border groups:
|
||||
//
|
||||
// * us-east-1-dfw-2
|
||||
//
|
||||
// * us-west-2-lax-1
|
||||
//
|
||||
// * us-west-2-phx-2
|
||||
//
|
||||
// You cannot provision or advertise BYOIPv6 address ranges in Local Zones at
|
||||
// this time.
|
||||
NetworkBorderGroup *string `locationName:"networkBorderGroup" type:"string"`
|
||||
|
||||
// The state of the address pool.
|
||||
State *string `locationName:"state" type:"string" enum:"ByoipCidrState"`
|
||||
|
||||
|
@ -64362,6 +64406,12 @@ func (s *ByoipCidr) SetDescription(v string) *ByoipCidr {
|
|||
return s
|
||||
}
|
||||
|
||||
// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
|
||||
func (s *ByoipCidr) SetNetworkBorderGroup(v string) *ByoipCidr {
|
||||
s.NetworkBorderGroup = &v
|
||||
return s
|
||||
}
|
||||
|
||||
// SetState sets the State field's value.
|
||||
func (s *ByoipCidr) SetState(v string) *ByoipCidr {
|
||||
s.State = &v
|
||||
|
@ -135752,6 +135802,11 @@ type InstanceNetworkInterfaceSpecification struct {
|
|||
// for eth0, and can only be assigned to a new network interface, not an existing
|
||||
// one. You cannot specify more than one network interface in the request. If
|
||||
// launching into a default subnet, the default value is true.
|
||||
//
|
||||
// Starting on February 1, 2024, Amazon Web Services will charge for all public
|
||||
// IPv4 addresses, including public IPv4 addresses associated with running instances
|
||||
// and Elastic IP addresses. For more information, see the Public IPv4 Address
|
||||
// tab on the Amazon VPC pricing page (http://aws.amazon.com/vpc/pricing/).
|
||||
AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"`
|
||||
|
||||
// A security group connection tracking specification that enables you to set
|
||||
|
@ -142771,20 +142826,18 @@ type LaunchTemplateInstanceMetadataOptions struct {
|
|||
// Possible values: Integers from 1 to 64
|
||||
HttpPutResponseHopLimit *int64 `locationName:"httpPutResponseHopLimit" type:"integer"`
|
||||
|
||||
// Indicates whether IMDSv2 is optional or required.
|
||||
// Indicates whether IMDSv2 is required.
|
||||
//
|
||||
// optional - When IMDSv2 is optional, you can choose to retrieve instance metadata
|
||||
// with or without a session token in your request. If you retrieve the IAM
|
||||
// role credentials without a token, the IMDSv1 role credentials are returned.
|
||||
// If you retrieve the IAM role credentials using a valid session token, the
|
||||
// IMDSv2 role credentials are returned.
|
||||
// * optional - IMDSv2 is optional. You can choose whether to send a session
|
||||
// token in your instance metadata retrieval requests. If you retrieve IAM
|
||||
// role credentials without a session token, you receive the IMDSv1 role
|
||||
// credentials. If you retrieve IAM role credentials using a valid session
|
||||
// token, you receive the IMDSv2 role credentials.
|
||||
//
|
||||
// required - When IMDSv2 is required, you must send a session token with any
|
||||
// instance metadata retrieval requests. In this state, retrieving the IAM role
|
||||
// credentials always returns IMDSv2 credentials; IMDSv1 credentials are not
|
||||
// available.
|
||||
//
|
||||
// Default: optional
|
||||
// * required - IMDSv2 is required. You must send a session token in your
|
||||
// instance metadata retrieval requests. With this option, retrieving the
|
||||
// IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials
|
||||
// are not available.
|
||||
HttpTokens *string `locationName:"httpTokens" type:"string" enum:"LaunchTemplateHttpTokensState"`
|
||||
|
||||
// Set to enabled to allow access to instance tags from the instance metadata.
|
||||
|
@ -142884,22 +142937,21 @@ type LaunchTemplateInstanceMetadataOptionsRequest struct {
|
|||
// Possible values: Integers from 1 to 64
|
||||
HttpPutResponseHopLimit *int64 `type:"integer"`
|
||||
|
||||
// IMDSv2 uses token-backed sessions. Set the use of HTTP tokens to optional
|
||||
// (in other words, set the use of IMDSv2 to optional) or required (in other
|
||||
// words, set the use of IMDSv2 to required).
|
||||
// Indicates whether IMDSv2 is required.
|
||||
//
|
||||
// * optional - When IMDSv2 is optional, you can choose to retrieve instance
|
||||
// metadata with or without a session token in your request. If you retrieve
|
||||
// the IAM role credentials without a token, the IMDSv1 role credentials
|
||||
// are returned. If you retrieve the IAM role credentials using a valid session
|
||||
// token, the IMDSv2 role credentials are returned.
|
||||
// * optional - IMDSv2 is optional. You can choose whether to send a session
|
||||
// token in your instance metadata retrieval requests. If you retrieve IAM
|
||||
// role credentials without a session token, you receive the IMDSv1 role
|
||||
// credentials. If you retrieve IAM role credentials using a valid session
|
||||
// token, you receive the IMDSv2 role credentials.
|
||||
//
|
||||
// * required - When IMDSv2 is required, you must send a session token with
|
||||
// any instance metadata retrieval requests. In this state, retrieving the
|
||||
// * required - IMDSv2 is required. You must send a session token in your
|
||||
// instance metadata retrieval requests. With this option, retrieving the
|
||||
// IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials
|
||||
// are not available.
|
||||
//
|
||||
// Default: optional
|
||||
// Default: If the value of ImdsSupport for the Amazon Machine Image (AMI) for
|
||||
// your instance is v2.0, the default is required.
|
||||
HttpTokens *string `type:"string" enum:"LaunchTemplateHttpTokensState"`
|
||||
|
||||
// Set to enabled to allow access to instance tags from the instance metadata.
|
||||
|
@ -142974,6 +143026,11 @@ type LaunchTemplateInstanceNetworkInterfaceSpecification struct {
|
|||
|
||||
// Indicates whether to associate a public IPv4 address with eth0 for a new
|
||||
// network interface.
|
||||
//
|
||||
// Starting on February 1, 2024, Amazon Web Services will charge for all public
|
||||
// IPv4 addresses, including public IPv4 addresses associated with running instances
|
||||
// and Elastic IP addresses. For more information, see the Public IPv4 Address
|
||||
// tab on the Amazon VPC pricing page (http://aws.amazon.com/vpc/pricing/).
|
||||
AssociatePublicIpAddress *bool `locationName:"associatePublicIpAddress" type:"boolean"`
|
||||
|
||||
// A security group connection tracking specification that enables you to set
|
||||
|
@ -143210,6 +143267,11 @@ type LaunchTemplateInstanceNetworkInterfaceSpecificationRequest struct {
|
|||
AssociateCarrierIpAddress *bool `type:"boolean"`
|
||||
|
||||
// Associates a public IPv4 address with eth0 for a new network interface.
|
||||
//
|
||||
// Starting on February 1, 2024, Amazon Web Services will charge for all public
|
||||
// IPv4 addresses, including public IPv4 addresses associated with running instances
|
||||
// and Elastic IP addresses. For more information, see the Public IPv4 Address
|
||||
// tab on the Amazon VPC pricing page (http://aws.amazon.com/vpc/pricing/).
|
||||
AssociatePublicIpAddress *bool `type:"boolean"`
|
||||
|
||||
// A security group connection tracking specification that enables you to set
|
||||
|
@ -161174,6 +161236,25 @@ type ProvisionByoipCidrInput struct {
|
|||
// Reserved.
|
||||
MultiRegion *bool `type:"boolean"`
|
||||
|
||||
// If you have Local Zones (https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html)
|
||||
// enabled, you can choose a network border group for Local Zones when you provision
|
||||
// and advertise a BYOIPv4 CIDR. Choose the network border group carefully as
|
||||
// the EIP and the Amazon Web Services resource it is associated with must reside
|
||||
// in the same network border group.
|
||||
//
|
||||
// You can provision BYOIP address ranges to and advertise them in the following
|
||||
// Local Zone network border groups:
|
||||
//
|
||||
// * us-east-1-dfw-2
|
||||
//
|
||||
// * us-west-2-lax-1
|
||||
//
|
||||
// * us-west-2-phx-2
|
||||
//
|
||||
// You cannot provision or advertise BYOIPv6 address ranges in Local Zones at
|
||||
// this time.
|
||||
NetworkBorderGroup *string `type:"string"`
|
||||
|
||||
// The tags to apply to the address pool.
|
||||
PoolTagSpecifications []*TagSpecification `locationName:"PoolTagSpecification" locationNameList:"item" type:"list"`
|
||||
|
||||
|
@ -161250,6 +161331,12 @@ func (s *ProvisionByoipCidrInput) SetMultiRegion(v bool) *ProvisionByoipCidrInpu
|
|||
return s
|
||||
}
|
||||
|
||||
// SetNetworkBorderGroup sets the NetworkBorderGroup field's value.
|
||||
func (s *ProvisionByoipCidrInput) SetNetworkBorderGroup(v string) *ProvisionByoipCidrInput {
|
||||
s.NetworkBorderGroup = &v
|
||||
return s
|
||||
}
|
||||
|
||||
// SetPoolTagSpecifications sets the PoolTagSpecifications field's value.
|
||||
func (s *ProvisionByoipCidrInput) SetPoolTagSpecifications(v []*TagSpecification) *ProvisionByoipCidrInput {
|
||||
s.PoolTagSpecifications = v
|
||||
|
@ -165874,23 +165961,7 @@ type RequestLaunchTemplateData struct {
|
|||
SecurityGroups []*string `locationName:"SecurityGroup" locationNameList:"SecurityGroup" type:"list"`
|
||||
|
||||
// The tags to apply to the resources that are created during instance launch.
|
||||
//
|
||||
// You can specify tags for the following resources only:
|
||||
//
|
||||
// * Instances
|
||||
//
|
||||
// * Volumes
|
||||
//
|
||||
// * Elastic graphics
|
||||
//
|
||||
// * Spot Instance requests
|
||||
//
|
||||
// * Network interfaces
|
||||
//
|
||||
// To tag a resource after it has been created, see CreateTags (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html).
|
||||
//
|
||||
// To tag the launch template itself, you must use the TagSpecification (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html)
|
||||
// parameter.
|
||||
// These tags are not applied to the launch template.
|
||||
TagSpecifications []*LaunchTemplateTagSpecificationRequest `locationName:"TagSpecification" locationNameList:"LaunchTemplateTagSpecificationRequest" type:"list"`
|
||||
|
||||
// The user data to make available to the instance. You must provide base64-encoded
|
||||
|
@ -194347,6 +194418,33 @@ const (
|
|||
|
||||
// InstanceTypeDl2q24xlarge is a InstanceType enum value
|
||||
InstanceTypeDl2q24xlarge = "dl2q.24xlarge"
|
||||
|
||||
// InstanceTypeMac2M2Metal is a InstanceType enum value
|
||||
InstanceTypeMac2M2Metal = "mac2-m2.metal"
|
||||
|
||||
// InstanceTypeI4i12xlarge is a InstanceType enum value
|
||||
InstanceTypeI4i12xlarge = "i4i.12xlarge"
|
||||
|
||||
// InstanceTypeI4i24xlarge is a InstanceType enum value
|
||||
InstanceTypeI4i24xlarge = "i4i.24xlarge"
|
||||
|
||||
// InstanceTypeC7iMetal24xl is a InstanceType enum value
|
||||
InstanceTypeC7iMetal24xl = "c7i.metal-24xl"
|
||||
|
||||
// InstanceTypeC7iMetal48xl is a InstanceType enum value
|
||||
InstanceTypeC7iMetal48xl = "c7i.metal-48xl"
|
||||
|
||||
// InstanceTypeM7iMetal24xl is a InstanceType enum value
|
||||
InstanceTypeM7iMetal24xl = "m7i.metal-24xl"
|
||||
|
||||
// InstanceTypeM7iMetal48xl is a InstanceType enum value
|
||||
InstanceTypeM7iMetal48xl = "m7i.metal-48xl"
|
||||
|
||||
// InstanceTypeR7iMetal24xl is a InstanceType enum value
|
||||
InstanceTypeR7iMetal24xl = "r7i.metal-24xl"
|
||||
|
||||
// InstanceTypeR7iMetal48xl is a InstanceType enum value
|
||||
InstanceTypeR7iMetal48xl = "r7i.metal-48xl"
|
||||
)
|
||||
|
||||
// InstanceType_Values returns all elements of the InstanceType enum
|
||||
|
@ -195124,6 +195222,15 @@ func InstanceType_Values() []string {
|
|||
InstanceTypeR7i24xlarge,
|
||||
InstanceTypeR7i48xlarge,
|
||||
InstanceTypeDl2q24xlarge,
|
||||
InstanceTypeMac2M2Metal,
|
||||
InstanceTypeI4i12xlarge,
|
||||
InstanceTypeI4i24xlarge,
|
||||
InstanceTypeC7iMetal24xl,
|
||||
InstanceTypeC7iMetal48xl,
|
||||
InstanceTypeM7iMetal24xl,
|
||||
InstanceTypeM7iMetal48xl,
|
||||
InstanceTypeR7iMetal24xl,
|
||||
InstanceTypeR7iMetal48xl,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1360,10 +1360,10 @@ func (c *IAM) CreateOpenIDConnectProviderRequest(input *CreateOpenIDConnectProvi
|
|||
// Amazon Web Services secures communication with some OIDC identity providers
|
||||
// (IdPs) through our library of trusted root certificate authorities (CAs)
|
||||
// instead of using a certificate thumbprint to verify your IdP server certificate.
|
||||
// These OIDC IdPs include Auth0, GitHub, Google, and those that use an Amazon
|
||||
// S3 bucket to host a JSON Web Key Set (JWKS) endpoint. In these cases, your
|
||||
// legacy thumbprint remains in your configuration, but is no longer used for
|
||||
// validation.
|
||||
// In these cases, your legacy thumbprint remains in your configuration, but
|
||||
// is no longer used for validation. These OIDC IdPs include Auth0, GitHub,
|
||||
// GitLab, Google, and those that use an Amazon S3 bucket to host a JSON Web
|
||||
// Key Set (JWKS) endpoint.
|
||||
//
|
||||
// The trust for the OIDC provider is derived from the IAM provider that this
|
||||
// operation creates. Therefore, it is best to limit access to the CreateOpenIDConnectProvider
|
||||
|
@ -16953,10 +16953,10 @@ func (c *IAM) UpdateOpenIDConnectProviderThumbprintRequest(input *UpdateOpenIDCo
|
|||
// Amazon Web Services secures communication with some OIDC identity providers
|
||||
// (IdPs) through our library of trusted root certificate authorities (CAs)
|
||||
// instead of using a certificate thumbprint to verify your IdP server certificate.
|
||||
// These OIDC IdPs include Auth0, GitHub, Google, and those that use an Amazon
|
||||
// S3 bucket to host a JSON Web Key Set (JWKS) endpoint. In these cases, your
|
||||
// legacy thumbprint remains in your configuration, but is no longer used for
|
||||
// validation.
|
||||
// In these cases, your legacy thumbprint remains in your configuration, but
|
||||
// is no longer used for validation. These OIDC IdPs include Auth0, GitHub,
|
||||
// GitLab, Google, and those that use an Amazon S3 bucket to host a JSON Web
|
||||
// Key Set (JWKS) endpoint.
|
||||
//
|
||||
// Trust for the OIDC provider is derived from the provider certificate and
|
||||
// is validated by the thumbprint. Therefore, it is best to limit access to
|
||||
|
|
|
@ -75,6 +75,9 @@ func (c *KMS) CancelKeyDeletionRequest(input *CancelKeyDeletionInput) (req *requ
|
|||
//
|
||||
// Related operations: ScheduleKeyDeletion
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -270,6 +273,9 @@ func (c *KMS) ConnectCustomKeyStoreRequest(input *ConnectCustomKeyStoreInput) (r
|
|||
//
|
||||
// - UpdateCustomKeyStore
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -470,6 +476,9 @@ func (c *KMS) CreateAliasRequest(input *CreateAliasInput) (req *request.Request,
|
|||
//
|
||||
// - UpdateAlias
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -664,6 +673,9 @@ func (c *KMS) CreateCustomKeyStoreRequest(input *CreateCustomKeyStoreInput) (req
|
|||
//
|
||||
// - UpdateCustomKeyStore
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -791,7 +803,7 @@ func (c *KMS) CreateCustomKeyStoreRequest(input *CreateCustomKeyStoreInput) (req
|
|||
// - XksProxyVpcEndpointServiceInvalidConfigurationException
|
||||
// The request was rejected because the Amazon VPC endpoint service configuration
|
||||
// does not fulfill the requirements for an external key store proxy. For details,
|
||||
// see the exception message and review the requirements (kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// see the exception message and review the requirements (https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// for Amazon VPC endpoint service connectivity for an external key store.
|
||||
//
|
||||
// - XksProxyInvalidResponseException
|
||||
|
@ -922,6 +934,9 @@ func (c *KMS) CreateGrantRequest(input *CreateGrantInput) (req *request.Request,
|
|||
//
|
||||
// - RevokeGrant
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -1218,6 +1233,9 @@ func (c *KMS) CreateKeyRequest(input *CreateKeyInput) (req *request.Request, out
|
|||
//
|
||||
// - ScheduleKeyDeletion
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -1462,10 +1480,10 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output
|
|||
// or any Amazon Web Services SDK. Use the Recipient parameter to provide the
|
||||
// attestation document for the enclave. Instead of the plaintext data, the
|
||||
// response includes the plaintext data encrypted with the public key from the
|
||||
// attestation document (CiphertextForRecipient).For information about the interaction
|
||||
// between KMS and Amazon Web Services Nitro Enclaves, see How Amazon Web Services
|
||||
// Nitro Enclaves uses KMS (https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html)
|
||||
// in the Key Management Service Developer Guide..
|
||||
// attestation document (CiphertextForRecipient). For information about the
|
||||
// interaction between KMS and Amazon Web Services Nitro Enclaves, see How Amazon
|
||||
// Web Services Nitro Enclaves uses KMS (https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html)
|
||||
// in the Key Management Service Developer Guide.
|
||||
//
|
||||
// The KMS key that you use for this operation must be in a compatible key state.
|
||||
// For details, see Key states of KMS keys (https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)
|
||||
|
@ -1488,6 +1506,9 @@ func (c *KMS) DecryptRequest(input *DecryptInput) (req *request.Request, output
|
|||
//
|
||||
// - ReEncrypt
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -1672,6 +1693,9 @@ func (c *KMS) DeleteAliasRequest(input *DeleteAliasInput) (req *request.Request,
|
|||
//
|
||||
// - UpdateAlias
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -1827,6 +1851,9 @@ func (c *KMS) DeleteCustomKeyStoreRequest(input *DeleteCustomKeyStoreInput) (req
|
|||
//
|
||||
// - UpdateCustomKeyStore
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -1971,6 +1998,9 @@ func (c *KMS) DeleteImportedKeyMaterialRequest(input *DeleteImportedKeyMaterialI
|
|||
//
|
||||
// - ImportKeyMaterial
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2140,6 +2170,9 @@ func (c *KMS) DescribeCustomKeyStoresRequest(input *DescribeCustomKeyStoresInput
|
|||
//
|
||||
// - UpdateCustomKeyStore
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2288,11 +2321,11 @@ func (c *KMS) DescribeKeyRequest(input *DescribeKeyInput) (req *request.Request,
|
|||
// signing, or generating and verifying MACs) and the algorithms that the KMS
|
||||
// key supports.
|
||||
//
|
||||
// For multi-Region keys (kms/latest/developerguide/multi-region-keys-overview.html),
|
||||
// For multi-Region keys (https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html),
|
||||
// DescribeKey displays the primary key and all related replica keys. For KMS
|
||||
// keys in CloudHSM key stores (kms/latest/developerguide/keystore-cloudhsm.html),
|
||||
// keys in CloudHSM key stores (https://docs.aws.amazon.com/kms/latest/developerguide/keystore-cloudhsm.html),
|
||||
// it includes information about the key store, such as the key store ID and
|
||||
// the CloudHSM cluster ID. For KMS keys in external key stores (kms/latest/developerguide/keystore-external.html),
|
||||
// the CloudHSM cluster ID. For KMS keys in external key stores (https://docs.aws.amazon.com/kms/latest/developerguide/keystore-external.html),
|
||||
// it includes the custom key store ID and the ID of the external key.
|
||||
//
|
||||
// DescribeKey does not return the following information:
|
||||
|
@ -2338,6 +2371,9 @@ func (c *KMS) DescribeKeyRequest(input *DescribeKeyInput) (req *request.Request,
|
|||
//
|
||||
// - ListRetirableGrants
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2448,6 +2484,9 @@ func (c *KMS) DisableKeyRequest(input *DisableKeyInput) (req *request.Request, o
|
|||
//
|
||||
// Related operations: EnableKey
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2593,6 +2632,9 @@ func (c *KMS) DisableKeyRotationRequest(input *DisableKeyRotationInput) (req *re
|
|||
//
|
||||
// - GetKeyRotationStatus
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2752,6 +2794,9 @@ func (c *KMS) DisconnectCustomKeyStoreRequest(input *DisconnectCustomKeyStoreInp
|
|||
//
|
||||
// - UpdateCustomKeyStore
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2879,6 +2924,9 @@ func (c *KMS) EnableKeyRequest(input *EnableKeyInput) (req *request.Request, out
|
|||
//
|
||||
// Related operations: DisableKey
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -2994,7 +3042,7 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ
|
|||
// Enables automatic rotation of the key material (https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)
|
||||
// of the specified symmetric encryption KMS key.
|
||||
//
|
||||
// When you enable automatic rotation of acustomer managed KMS key (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk),
|
||||
// When you enable automatic rotation of a customer managed KMS key (https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk),
|
||||
// KMS rotates the key material of the KMS key one year (approximately 365 days)
|
||||
// from the enable date and every year thereafter. You can monitor rotation
|
||||
// of the key material for your KMS keys in CloudTrail and Amazon CloudWatch.
|
||||
|
@ -3043,6 +3091,9 @@ func (c *KMS) EnableKeyRotationRequest(input *EnableKeyRotationInput) (req *requ
|
|||
//
|
||||
// - GetKeyRotationStatus
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -3220,6 +3271,9 @@ func (c *KMS) EncryptRequest(input *EncryptInput) (req *request.Request, output
|
|||
//
|
||||
// - GenerateDataKeyPair
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -3445,6 +3499,9 @@ func (c *KMS) GenerateDataKeyRequest(input *GenerateDataKeyInput) (req *request.
|
|||
//
|
||||
// - GenerateDataKeyWithoutPlaintext
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -3582,8 +3639,8 @@ func (c *KMS) GenerateDataKeyPairRequest(input *GenerateDataKeyPairInput) (req *
|
|||
// private key that is encrypted under the symmetric encryption KMS key you
|
||||
// specify. You can use the data key pair to perform asymmetric cryptography
|
||||
// and implement digital signatures outside of KMS. The bytes in the keys are
|
||||
// random; they not related to the caller or to the KMS key that is used to
|
||||
// encrypt the private key.
|
||||
// random; they are not related to the caller or to the KMS key that is used
|
||||
// to encrypt the private key.
|
||||
//
|
||||
// You can use the public key that GenerateDataKeyPair returns to encrypt data
|
||||
// or verify a signature outside of KMS. Then, store the encrypted private key
|
||||
|
@ -3660,6 +3717,9 @@ func (c *KMS) GenerateDataKeyPairRequest(input *GenerateDataKeyPairInput) (req *
|
|||
//
|
||||
// - GenerateDataKeyWithoutPlaintext
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -3854,6 +3914,9 @@ func (c *KMS) GenerateDataKeyPairWithoutPlaintextRequest(input *GenerateDataKeyP
|
|||
//
|
||||
// - GenerateDataKeyWithoutPlaintext
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -4060,6 +4123,9 @@ func (c *KMS) GenerateDataKeyWithoutPlaintextRequest(input *GenerateDataKeyWitho
|
|||
//
|
||||
// - GenerateDataKeyPairWithoutPlaintext
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -4226,6 +4292,9 @@ func (c *KMS) GenerateMacRequest(input *GenerateMacInput) (req *request.Request,
|
|||
//
|
||||
// Related operations: VerifyMac
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -4383,6 +4452,9 @@ func (c *KMS) GenerateRandomRequest(input *GenerateRandomInput) (req *request.Re
|
|||
// Required permissions: kms:GenerateRandom (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)
|
||||
// (IAM policy)
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -4510,7 +4582,10 @@ func (c *KMS) GetKeyPolicyRequest(input *GetKeyPolicyInput) (req *request.Reques
|
|||
// Required permissions: kms:GetKeyPolicy (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)
|
||||
// (key policy)
|
||||
//
|
||||
// Related operations: PutKeyPolicy
|
||||
// Related operations: PutKeyPolicy (https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
|
@ -4676,6 +4751,9 @@ func (c *KMS) GetKeyRotationStatusRequest(input *GetKeyRotationStatusInput) (req
|
|||
//
|
||||
// - EnableKeyRotation
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -4800,11 +4878,11 @@ func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput)
|
|||
// Origin value of EXTERNAL to create a KMS key with no key material. You can
|
||||
// import key material for a symmetric encryption KMS key, HMAC KMS key, asymmetric
|
||||
// encryption KMS key, or asymmetric signing KMS key. You can also import key
|
||||
// material into a multi-Region key (kms/latest/developerguide/multi-region-keys-overview.html)
|
||||
// material into a multi-Region key (https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)
|
||||
// of any supported type. However, you can't import key material into a KMS
|
||||
// key in a custom key store (kms/latest/developerguide/custom-key-store-overview.html).
|
||||
// key in a custom key store (https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).
|
||||
// You can also use GetParametersForImport to get a public key and import token
|
||||
// to reimport the original key material (kms/latest/developerguide/importing-keys.html#reimport-key-material)
|
||||
// to reimport the original key material (https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html#reimport-key-material)
|
||||
// into a KMS key whose key material expired or was deleted.
|
||||
//
|
||||
// GetParametersForImport returns the items that you need to import your key
|
||||
|
@ -4853,6 +4931,9 @@ func (c *KMS) GetParametersForImportRequest(input *GetParametersForImportInput)
|
|||
//
|
||||
// - DeleteImportedKeyMaterial
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -5017,6 +5098,9 @@ func (c *KMS) GetPublicKeyRequest(input *GetPublicKeyInput) (req *request.Reques
|
|||
//
|
||||
// Related operations: CreateKey
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -5256,6 +5340,9 @@ func (c *KMS) ImportKeyMaterialRequest(input *ImportKeyMaterialInput) (req *requ
|
|||
//
|
||||
// - GetParametersForImport
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -5431,6 +5518,9 @@ func (c *KMS) ListAliasesRequest(input *ListAliasesInput) (req *request.Request,
|
|||
//
|
||||
// - UpdateAlias
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -5615,6 +5705,9 @@ func (c *KMS) ListGrantsRequest(input *ListGrantsInput) (req *request.Request, o
|
|||
//
|
||||
// - RevokeGrant
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -5799,7 +5892,10 @@ func (c *KMS) ListKeyPoliciesRequest(input *ListKeyPoliciesInput) (req *request.
|
|||
//
|
||||
// - GetKeyPolicy
|
||||
//
|
||||
// - PutKeyPolicy
|
||||
// - PutKeyPolicy (https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
|
@ -5983,6 +6079,9 @@ func (c *KMS) ListKeysRequest(input *ListKeysInput) (req *request.Request, outpu
|
|||
//
|
||||
// - ListResourceTags
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -6149,6 +6248,9 @@ func (c *KMS) ListResourceTagsRequest(input *ListResourceTagsInput) (req *reques
|
|||
//
|
||||
// - UntagResource
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -6311,14 +6413,22 @@ func (c *KMS) ListRetirableGrantsRequest(input *ListRetirableGrantsInput) (req *
|
|||
// grants in several programming languages, see Programming grants (https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html).
|
||||
//
|
||||
// Cross-account use: You must specify a principal in your Amazon Web Services
|
||||
// account. However, this operation can return grants in any Amazon Web Services
|
||||
// account. You do not need kms:ListRetirableGrants permission (or any other
|
||||
// additional permission) in any Amazon Web Services account other than your
|
||||
// own.
|
||||
// account. This operation returns a list of grants where the retiring principal
|
||||
// specified in the ListRetirableGrants request is the same retiring principal
|
||||
// on the grant. This can include grants on KMS keys owned by other Amazon Web
|
||||
// Services accounts, but you do not need kms:ListRetirableGrants permission
|
||||
// (or any other additional permission) in any Amazon Web Services account other
|
||||
// than your own.
|
||||
//
|
||||
// Required permissions: kms:ListRetirableGrants (https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)
|
||||
// (IAM policy) in your Amazon Web Services account.
|
||||
//
|
||||
// KMS authorizes ListRetirableGrants requests by evaluating the caller account's
|
||||
// kms:ListRetirableGrants permissions. The authorized resource in ListRetirableGrants
|
||||
// calls is the retiring principal specified in the request. KMS does not evaluate
|
||||
// the caller's permissions to verify their access to any KMS keys or grants
|
||||
// that might be returned by the ListRetirableGrants call.
|
||||
//
|
||||
// Related operations:
|
||||
//
|
||||
// - CreateGrant
|
||||
|
@ -6329,6 +6439,9 @@ func (c *KMS) ListRetirableGrantsRequest(input *ListRetirableGrantsInput) (req *
|
|||
//
|
||||
// - RevokeGrant
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -6493,6 +6606,9 @@ func (c *KMS) PutKeyPolicyRequest(input *PutKeyPolicyInput) (req *request.Reques
|
|||
//
|
||||
// Related operations: GetKeyPolicy
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -6697,6 +6813,9 @@ func (c *KMS) ReEncryptRequest(input *ReEncryptInput) (req *request.Request, out
|
|||
//
|
||||
// - GenerateDataKeyPair
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -6900,7 +7019,7 @@ func (c *KMS) ReplicateKeyRequest(input *ReplicateKeyInput) (req *request.Reques
|
|||
// If you replicate a multi-Region primary key with imported key material, the
|
||||
// replica key is created with no key material. You must import the same key
|
||||
// material that you imported into the primary key. For details, see Importing
|
||||
// key material into multi-Region keys (kms/latest/developerguide/multi-region-keys-import.html)
|
||||
// key material into multi-Region keys (https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-import.html)
|
||||
// in the Key Management Service Developer Guide.
|
||||
//
|
||||
// To convert a replica key to a primary key, use the UpdatePrimaryRegion operation.
|
||||
|
@ -6927,6 +7046,9 @@ func (c *KMS) ReplicateKeyRequest(input *ReplicateKeyInput) (req *request.Reques
|
|||
//
|
||||
// - UpdatePrimaryRegion
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -7073,7 +7195,7 @@ func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request,
|
|||
// Cross-account use: Yes. You can retire a grant on a KMS key in a different
|
||||
// Amazon Web Services account.
|
||||
//
|
||||
// Required permissions::Permission to retire a grant is determined primarily
|
||||
// Required permissions: Permission to retire a grant is determined primarily
|
||||
// by the grant. For details, see Retiring and revoking grants (https://docs.aws.amazon.com/kms/latest/developerguide/grant-manage.html#grant-delete)
|
||||
// in the Key Management Service Developer Guide.
|
||||
//
|
||||
|
@ -7087,6 +7209,9 @@ func (c *KMS) RetireGrantRequest(input *RetireGrantInput) (req *request.Request,
|
|||
//
|
||||
// - RevokeGrant
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -7236,6 +7361,9 @@ func (c *KMS) RevokeGrantRequest(input *RevokeGrantInput) (req *request.Request,
|
|||
//
|
||||
// - RetireGrant
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -7360,7 +7488,7 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req *
|
|||
//
|
||||
// Deleting a KMS key is a destructive and potentially dangerous operation.
|
||||
// When a KMS key is deleted, all data that was encrypted under the KMS key
|
||||
// is unrecoverable. (The only exception is a multi-Region replica key (kms/latest/developerguide/multi-region-keys-delete.html),
|
||||
// is unrecoverable. (The only exception is a multi-Region replica key (https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-delete.html),
|
||||
// or an asymmetric or HMAC KMS key with imported key material (kms/latest/developerguide/importing-keys-managing.html#import-delete-key).)
|
||||
// To prevent the use of a KMS key without deleting it, use DisableKey.
|
||||
//
|
||||
|
@ -7406,6 +7534,9 @@ func (c *KMS) ScheduleKeyDeletionRequest(input *ScheduleKeyDeletionInput) (req *
|
|||
//
|
||||
// - DisableKey
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -7566,6 +7697,9 @@ func (c *KMS) SignRequest(input *SignInput) (req *request.Request, output *SignO
|
|||
//
|
||||
// Related operations: Verify
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -7744,6 +7878,9 @@ func (c *KMS) TagResourceRequest(input *TagResourceInput) (req *request.Request,
|
|||
//
|
||||
// - UntagResource
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -7892,6 +8029,9 @@ func (c *KMS) UntagResourceRequest(input *UntagResourceInput) (req *request.Requ
|
|||
//
|
||||
// - TagResource
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -8050,6 +8190,9 @@ func (c *KMS) UpdateAliasRequest(input *UpdateAliasInput) (req *request.Request,
|
|||
//
|
||||
// - ListAliases
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -8240,6 +8383,9 @@ func (c *KMS) UpdateCustomKeyStoreRequest(input *UpdateCustomKeyStoreInput) (req
|
|||
//
|
||||
// - DisconnectCustomKeyStore
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -8390,7 +8536,7 @@ func (c *KMS) UpdateCustomKeyStoreRequest(input *UpdateCustomKeyStoreInput) (req
|
|||
// - XksProxyVpcEndpointServiceInvalidConfigurationException
|
||||
// The request was rejected because the Amazon VPC endpoint service configuration
|
||||
// does not fulfill the requirements for an external key store proxy. For details,
|
||||
// see the exception message and review the requirements (kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// see the exception message and review the requirements (https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// for Amazon VPC endpoint service connectivity for an external key store.
|
||||
//
|
||||
// - XksProxyInvalidResponseException
|
||||
|
@ -8489,6 +8635,9 @@ func (c *KMS) UpdateKeyDescriptionRequest(input *UpdateKeyDescriptionInput) (req
|
|||
//
|
||||
// - DescribeKey
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -8667,6 +8816,9 @@ func (c *KMS) UpdatePrimaryRegionRequest(input *UpdatePrimaryRegionInput) (req *
|
|||
//
|
||||
// - ReplicateKey
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -8823,6 +8975,9 @@ func (c *KMS) VerifyRequest(input *VerifyInput) (req *request.Request, output *V
|
|||
//
|
||||
// Related operations: Sign
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -8988,6 +9143,9 @@ func (c *KMS) VerifyMacRequest(input *VerifyMacInput) (req *request.Request, out
|
|||
//
|
||||
// Related operations: GenerateMac
|
||||
//
|
||||
// Eventual consistency: The KMS API follows an eventual consistency model.
|
||||
// For more information, see KMS eventual consistency (https://docs.aws.amazon.com/kms/latest/developerguide/programming-eventual-consistency.html).
|
||||
//
|
||||
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
|
||||
// with awserr.Error's Code and Message methods to get detailed information about
|
||||
// the error.
|
||||
|
@ -10454,8 +10612,8 @@ type CreateKeyInput struct {
|
|||
// in the Key Management Service Developer Guide.
|
||||
//
|
||||
// Use this parameter only when you intend to prevent the principal that is
|
||||
// making the request from making a subsequent PutKeyPolicy request on the KMS
|
||||
// key.
|
||||
// making the request from making a subsequent PutKeyPolicy (https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)
|
||||
// request on the KMS key.
|
||||
BypassPolicyLockoutSafetyCheck *bool `type:"boolean"`
|
||||
|
||||
// Creates the KMS key in the specified custom key store (https://docs.aws.amazon.com/kms/latest/developerguide/custom-key-store-overview.html).
|
||||
|
@ -11459,7 +11617,7 @@ type DecryptInput struct {
|
|||
// To get the alias name and alias ARN, use ListAliases.
|
||||
KeyId *string `min:"1" type:"string"`
|
||||
|
||||
// A signed attestation document (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitro-enclave-how.html#term-attestdoc)
|
||||
// A signed attestation document (https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html#term-attestdoc)
|
||||
// from an Amazon Web Services Nitro enclave and the encryption algorithm to
|
||||
// use with the enclave's public key. The only valid encryption algorithm is
|
||||
// RSAES_OAEP_SHA_256.
|
||||
|
@ -14537,8 +14695,8 @@ type GetParametersForImportInput struct {
|
|||
// algorithm with the RSA_2048 wrapping key spec to wrap ECC_NIST_P521 key
|
||||
// material.
|
||||
//
|
||||
// * RSAES_PKCS1_V1_5 (Deprecated) — Supported only for symmetric encryption
|
||||
// key material (and only in legacy mode).
|
||||
// * RSAES_PKCS1_V1_5 (Deprecated) — As of October 10, 2023, KMS does not
|
||||
// support the RSAES_PKCS1_V1_5 wrapping algorithm.
|
||||
//
|
||||
// WrappingAlgorithm is a required field
|
||||
WrappingAlgorithm *string `type:"string" required:"true" enum:"AlgorithmSpec"`
|
||||
|
@ -17791,8 +17949,8 @@ type PutKeyPolicyInput struct {
|
|||
// in the Key Management Service Developer Guide.
|
||||
//
|
||||
// Use this parameter only when you intend to prevent the principal that is
|
||||
// making the request from making a subsequent PutKeyPolicy request on the KMS
|
||||
// key.
|
||||
// making the request from making a subsequent PutKeyPolicy (https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)
|
||||
// request on the KMS key.
|
||||
BypassPolicyLockoutSafetyCheck *bool `type:"boolean"`
|
||||
|
||||
// Sets the key policy on the specified KMS key.
|
||||
|
@ -18330,8 +18488,8 @@ type ReplicateKeyInput struct {
|
|||
// in the Key Management Service Developer Guide.
|
||||
//
|
||||
// Use this parameter only when you intend to prevent the principal that is
|
||||
// making the request from making a subsequent PutKeyPolicy request on the KMS
|
||||
// key.
|
||||
// making the request from making a subsequent PutKeyPolicy (https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)
|
||||
// request on the KMS key.
|
||||
BypassPolicyLockoutSafetyCheck *bool `type:"boolean"`
|
||||
|
||||
// A description of the KMS key. The default value is an empty string (no description).
|
||||
|
@ -21550,7 +21708,7 @@ func (s *XksProxyVpcEndpointServiceInUseException) RequestID() string {
|
|||
|
||||
// The request was rejected because the Amazon VPC endpoint service configuration
|
||||
// does not fulfill the requirements for an external key store proxy. For details,
|
||||
// see the exception message and review the requirements (kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// see the exception message and review the requirements (https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// for Amazon VPC endpoint service connectivity for an external key store.
|
||||
type XksProxyVpcEndpointServiceInvalidConfigurationException struct {
|
||||
_ struct{} `type:"structure"`
|
||||
|
|
|
@ -466,7 +466,7 @@ const (
|
|||
//
|
||||
// The request was rejected because the Amazon VPC endpoint service configuration
|
||||
// does not fulfill the requirements for an external key store proxy. For details,
|
||||
// see the exception message and review the requirements (kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// see the exception message and review the requirements (https://docs.aws.amazon.com/kms/latest/developerguide/vpc-connectivity.html#xks-vpc-requirements)
|
||||
// for Amazon VPC endpoint service connectivity for an external key store.
|
||||
ErrCodeXksProxyVpcEndpointServiceInvalidConfigurationException = "XksProxyVpcEndpointServiceInvalidConfigurationException"
|
||||
|
||||
|
|
|
@ -18342,11 +18342,6 @@ type ResourceRecordSet struct {
|
|||
// You can't use the * wildcard for resource records sets that have a type
|
||||
// of NS.
|
||||
//
|
||||
// You can use the * wildcard as the leftmost label in a domain name, for example,
|
||||
// *.example.com. You can't use an * for one of the middle labels, for example,
|
||||
// marketing.*.example.com. In addition, the * must replace the entire label;
|
||||
// for example, you can't specify prod*.example.com.
|
||||
//
|
||||
// Name is a required field
|
||||
Name *string `type:"string" required:"true"`
|
||||
|
||||
|
@ -20470,6 +20465,9 @@ const (
|
|||
|
||||
// CloudWatchRegionIlCentral1 is a CloudWatchRegion enum value
|
||||
CloudWatchRegionIlCentral1 = "il-central-1"
|
||||
|
||||
// CloudWatchRegionCaWest1 is a CloudWatchRegion enum value
|
||||
CloudWatchRegionCaWest1 = "ca-west-1"
|
||||
)
|
||||
|
||||
// CloudWatchRegion_Values returns all elements of the CloudWatchRegion enum
|
||||
|
@ -20510,6 +20508,7 @@ func CloudWatchRegion_Values() []string {
|
|||
CloudWatchRegionUsIsobEast1,
|
||||
CloudWatchRegionApSoutheast4,
|
||||
CloudWatchRegionIlCentral1,
|
||||
CloudWatchRegionCaWest1,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20855,6 +20854,9 @@ const (
|
|||
|
||||
// ResourceRecordSetRegionIlCentral1 is a ResourceRecordSetRegion enum value
|
||||
ResourceRecordSetRegionIlCentral1 = "il-central-1"
|
||||
|
||||
// ResourceRecordSetRegionCaWest1 is a ResourceRecordSetRegion enum value
|
||||
ResourceRecordSetRegionCaWest1 = "ca-west-1"
|
||||
)
|
||||
|
||||
// ResourceRecordSetRegion_Values returns all elements of the ResourceRecordSetRegion enum
|
||||
|
@ -20890,6 +20892,7 @@ func ResourceRecordSetRegion_Values() []string {
|
|||
ResourceRecordSetRegionEuSouth2,
|
||||
ResourceRecordSetRegionApSoutheast4,
|
||||
ResourceRecordSetRegionIlCentral1,
|
||||
ResourceRecordSetRegionCaWest1,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -21051,6 +21054,9 @@ const (
|
|||
|
||||
// VPCRegionIlCentral1 is a VPCRegion enum value
|
||||
VPCRegionIlCentral1 = "il-central-1"
|
||||
|
||||
// VPCRegionCaWest1 is a VPCRegion enum value
|
||||
VPCRegionCaWest1 = "ca-west-1"
|
||||
)
|
||||
|
||||
// VPCRegion_Values returns all elements of the VPCRegion enum
|
||||
|
@ -21090,5 +21096,6 @@ func VPCRegion_Values() []string {
|
|||
VPCRegionEuSouth2,
|
||||
VPCRegionApSoutheast4,
|
||||
VPCRegionIlCentral1,
|
||||
VPCRegionCaWest1,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,22 +9,22 @@ import (
|
|||
const (
|
||||
|
||||
// ErrCodeBatchEntryIdsNotDistinct for service response error code
|
||||
// "BatchEntryIdsNotDistinct".
|
||||
// "AWS.SimpleQueueService.BatchEntryIdsNotDistinct".
|
||||
//
|
||||
// Two or more batch entries in the request have the same Id.
|
||||
ErrCodeBatchEntryIdsNotDistinct = "BatchEntryIdsNotDistinct"
|
||||
ErrCodeBatchEntryIdsNotDistinct = "AWS.SimpleQueueService.BatchEntryIdsNotDistinct"
|
||||
|
||||
// ErrCodeBatchRequestTooLong for service response error code
|
||||
// "BatchRequestTooLong".
|
||||
// "AWS.SimpleQueueService.BatchRequestTooLong".
|
||||
//
|
||||
// The length of all the messages put together is more than the limit.
|
||||
ErrCodeBatchRequestTooLong = "BatchRequestTooLong"
|
||||
ErrCodeBatchRequestTooLong = "AWS.SimpleQueueService.BatchRequestTooLong"
|
||||
|
||||
// ErrCodeEmptyBatchRequest for service response error code
|
||||
// "EmptyBatchRequest".
|
||||
// "AWS.SimpleQueueService.EmptyBatchRequest".
|
||||
//
|
||||
// The batch request doesn't contain any entries.
|
||||
ErrCodeEmptyBatchRequest = "EmptyBatchRequest"
|
||||
ErrCodeEmptyBatchRequest = "AWS.SimpleQueueService.EmptyBatchRequest"
|
||||
|
||||
// ErrCodeInvalidAddress for service response error code
|
||||
// "InvalidAddress".
|
||||
|
@ -45,10 +45,10 @@ const (
|
|||
ErrCodeInvalidAttributeValue = "InvalidAttributeValue"
|
||||
|
||||
// ErrCodeInvalidBatchEntryId for service response error code
|
||||
// "InvalidBatchEntryId".
|
||||
// "AWS.SimpleQueueService.InvalidBatchEntryId".
|
||||
//
|
||||
// The Id of a batch entry in a batch request doesn't abide by the specification.
|
||||
ErrCodeInvalidBatchEntryId = "InvalidBatchEntryId"
|
||||
ErrCodeInvalidBatchEntryId = "AWS.SimpleQueueService.InvalidBatchEntryId"
|
||||
|
||||
// ErrCodeInvalidIdFormat for service response error code
|
||||
// "InvalidIdFormat".
|
||||
|
@ -119,10 +119,10 @@ const (
|
|||
ErrCodeKmsThrottled = "KmsThrottled"
|
||||
|
||||
// ErrCodeMessageNotInflight for service response error code
|
||||
// "MessageNotInflight".
|
||||
// "AWS.SimpleQueueService.MessageNotInflight".
|
||||
//
|
||||
// The specified message isn't in flight.
|
||||
ErrCodeMessageNotInflight = "MessageNotInflight"
|
||||
ErrCodeMessageNotInflight = "AWS.SimpleQueueService.MessageNotInflight"
|
||||
|
||||
// ErrCodeOverLimit for service response error code
|
||||
// "OverLimit".
|
||||
|
@ -134,33 +134,33 @@ const (
|
|||
ErrCodeOverLimit = "OverLimit"
|
||||
|
||||
// ErrCodePurgeQueueInProgress for service response error code
|
||||
// "PurgeQueueInProgress".
|
||||
// "AWS.SimpleQueueService.PurgeQueueInProgress".
|
||||
//
|
||||
// Indicates that the specified queue previously received a PurgeQueue request
|
||||
// within the last 60 seconds (the time it can take to delete the messages in
|
||||
// the queue).
|
||||
ErrCodePurgeQueueInProgress = "PurgeQueueInProgress"
|
||||
ErrCodePurgeQueueInProgress = "AWS.SimpleQueueService.PurgeQueueInProgress"
|
||||
|
||||
// ErrCodeQueueDeletedRecently for service response error code
|
||||
// "QueueDeletedRecently".
|
||||
// "AWS.SimpleQueueService.QueueDeletedRecently".
|
||||
//
|
||||
// You must wait 60 seconds after deleting a queue before you can create another
|
||||
// queue with the same name.
|
||||
ErrCodeQueueDeletedRecently = "QueueDeletedRecently"
|
||||
ErrCodeQueueDeletedRecently = "AWS.SimpleQueueService.QueueDeletedRecently"
|
||||
|
||||
// ErrCodeQueueDoesNotExist for service response error code
|
||||
// "QueueDoesNotExist".
|
||||
// "AWS.SimpleQueueService.NonExistentQueue".
|
||||
//
|
||||
// The specified queue doesn't exist.
|
||||
ErrCodeQueueDoesNotExist = "QueueDoesNotExist"
|
||||
ErrCodeQueueDoesNotExist = "AWS.SimpleQueueService.NonExistentQueue"
|
||||
|
||||
// ErrCodeQueueNameExists for service response error code
|
||||
// "QueueNameExists".
|
||||
// "QueueAlreadyExists".
|
||||
//
|
||||
// A queue with this name already exists. Amazon SQS returns this error only
|
||||
// if the request includes attributes whose values differ from those of the
|
||||
// existing queue.
|
||||
ErrCodeQueueNameExists = "QueueNameExists"
|
||||
ErrCodeQueueNameExists = "QueueAlreadyExists"
|
||||
|
||||
// ErrCodeReceiptHandleIsInvalid for service response error code
|
||||
// "ReceiptHandleIsInvalid".
|
||||
|
@ -193,16 +193,16 @@ const (
|
|||
ErrCodeResourceNotFoundException = "ResourceNotFoundException"
|
||||
|
||||
// ErrCodeTooManyEntriesInBatchRequest for service response error code
|
||||
// "TooManyEntriesInBatchRequest".
|
||||
// "AWS.SimpleQueueService.TooManyEntriesInBatchRequest".
|
||||
//
|
||||
// The batch request contains more entries than permissible.
|
||||
ErrCodeTooManyEntriesInBatchRequest = "TooManyEntriesInBatchRequest"
|
||||
ErrCodeTooManyEntriesInBatchRequest = "AWS.SimpleQueueService.TooManyEntriesInBatchRequest"
|
||||
|
||||
// ErrCodeUnsupportedOperation for service response error code
|
||||
// "UnsupportedOperation".
|
||||
// "AWS.SimpleQueueService.UnsupportedOperation".
|
||||
//
|
||||
// Error code 400. Unsupported operation.
|
||||
ErrCodeUnsupportedOperation = "UnsupportedOperation"
|
||||
ErrCodeUnsupportedOperation = "AWS.SimpleQueueService.UnsupportedOperation"
|
||||
)
|
||||
|
||||
var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{
|
||||
|
|
|
@ -35,13 +35,13 @@ github.com/digitalocean/godo,https://github.com/digitalocean/godo/blob/v1.102.1/
|
|||
github.com/emicklei/go-restful/v3,https://github.com/emicklei/go-restful/blob/v3.11.0/LICENSE,MIT
|
||||
github.com/evanphx/json-patch,https://github.com/evanphx/json-patch/blob/v5.6.0/LICENSE,BSD-3-Clause
|
||||
github.com/evanphx/json-patch/v5,https://github.com/evanphx/json-patch/blob/v5.6.0/v5/LICENSE,BSD-3-Clause
|
||||
github.com/felixge/httpsnoop,https://github.com/felixge/httpsnoop/blob/v1.0.3/LICENSE.txt,MIT
|
||||
github.com/felixge/httpsnoop,https://github.com/felixge/httpsnoop/blob/v1.0.4/LICENSE.txt,MIT
|
||||
github.com/fsnotify/fsnotify,https://github.com/fsnotify/fsnotify/blob/v1.6.0/LICENSE,BSD-3-Clause
|
||||
github.com/go-asn1-ber/asn1-ber,https://github.com/go-asn1-ber/asn1-ber/blob/v1.5.4/LICENSE,MIT
|
||||
github.com/go-jose/go-jose/v3,https://github.com/go-jose/go-jose/blob/v3.0.0/LICENSE,Apache-2.0
|
||||
github.com/go-jose/go-jose/v3/json,https://github.com/go-jose/go-jose/blob/v3.0.0/json/LICENSE,BSD-3-Clause
|
||||
github.com/go-jose/go-jose/v3,https://github.com/go-jose/go-jose/blob/v3.0.1/LICENSE,Apache-2.0
|
||||
github.com/go-jose/go-jose/v3/json,https://github.com/go-jose/go-jose/blob/v3.0.1/json/LICENSE,BSD-3-Clause
|
||||
github.com/go-ldap/ldap/v3,https://github.com/go-ldap/ldap/blob/v3.4.5/v3/LICENSE,MIT
|
||||
github.com/go-logr/logr,https://github.com/go-logr/logr/blob/v1.2.4/LICENSE,Apache-2.0
|
||||
github.com/go-logr/logr,https://github.com/go-logr/logr/blob/v1.3.0/LICENSE,Apache-2.0
|
||||
github.com/go-logr/stdr,https://github.com/go-logr/stdr/blob/v1.2.2/LICENSE,Apache-2.0
|
||||
github.com/go-logr/zapr,https://github.com/go-logr/zapr/blob/v1.2.4/LICENSE,Apache-2.0
|
||||
github.com/go-openapi/jsonpointer,https://github.com/go-openapi/jsonpointer/blob/v0.19.6/LICENSE,Apache-2.0
|
||||
|
@ -55,7 +55,7 @@ github.com/golang/snappy,https://github.com/golang/snappy/blob/v0.0.4/LICENSE,BS
|
|||
github.com/google/cel-go,https://github.com/google/cel-go/blob/v0.16.0/LICENSE,Apache-2.0
|
||||
github.com/google/cel-go,https://github.com/google/cel-go/blob/v0.16.0/LICENSE,BSD-3-Clause
|
||||
github.com/google/gnostic-models,https://github.com/google/gnostic-models/blob/v0.6.8/LICENSE,Apache-2.0
|
||||
github.com/google/go-cmp/cmp,https://github.com/google/go-cmp/blob/v0.5.9/LICENSE,BSD-3-Clause
|
||||
github.com/google/go-cmp/cmp,https://github.com/google/go-cmp/blob/v0.6.0/LICENSE,BSD-3-Clause
|
||||
github.com/google/go-querystring/query,https://github.com/google/go-querystring/blob/v1.1.0/LICENSE,BSD-3-Clause
|
||||
github.com/google/gofuzz,https://github.com/google/gofuzz/blob/v1.2.0/LICENSE,Apache-2.0
|
||||
github.com/google/s2a-go,https://github.com/google/s2a-go/blob/v0.1.7/LICENSE.md,Apache-2.0
|
||||
|
@ -109,14 +109,14 @@ go.etcd.io/etcd/api/v3,https://github.com/etcd-io/etcd/blob/api/v3.5.9/api/LICEN
|
|||
go.etcd.io/etcd/client/pkg/v3,https://github.com/etcd-io/etcd/blob/client/pkg/v3.5.9/client/pkg/LICENSE,Apache-2.0
|
||||
go.etcd.io/etcd/client/v3,https://github.com/etcd-io/etcd/blob/client/v3.5.9/client/v3/LICENSE,Apache-2.0
|
||||
go.opencensus.io,https://github.com/census-instrumentation/opencensus-go/blob/v0.24.0/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/google.golang.org/grpc/otelgrpc/v0.45.0/instrumentation/google.golang.org/grpc/otelgrpc/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.44.0/instrumentation/net/http/otelhttp/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel,https://github.com/open-telemetry/opentelemetry-go/blob/v1.19.0/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/v1.19.0/exporters/otlp/otlptrace/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/otlptracegrpc/v1.19.0/exporters/otlp/otlptrace/otlptracegrpc/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/metric,https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.19.0/metric/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/sdk,https://github.com/open-telemetry/opentelemetry-go/blob/sdk/v1.19.0/sdk/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/trace,https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.19.0/trace/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/google.golang.org/grpc/otelgrpc/v0.46.0/instrumentation/google.golang.org/grpc/otelgrpc/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp,https://github.com/open-telemetry/opentelemetry-go-contrib/blob/instrumentation/net/http/otelhttp/v0.46.0/instrumentation/net/http/otelhttp/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel,https://github.com/open-telemetry/opentelemetry-go/blob/v1.20.0/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/v1.20.0/exporters/otlp/otlptrace/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc,https://github.com/open-telemetry/opentelemetry-go/blob/exporters/otlp/otlptrace/otlptracegrpc/v1.20.0/exporters/otlp/otlptrace/otlptracegrpc/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/metric,https://github.com/open-telemetry/opentelemetry-go/blob/metric/v1.20.0/metric/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/sdk,https://github.com/open-telemetry/opentelemetry-go/blob/sdk/v1.20.0/sdk/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/otel/trace,https://github.com/open-telemetry/opentelemetry-go/blob/trace/v1.20.0/trace/LICENSE,Apache-2.0
|
||||
go.opentelemetry.io/proto/otlp,https://github.com/open-telemetry/opentelemetry-proto-go/blob/otlp/v1.0.0/otlp/LICENSE,Apache-2.0
|
||||
go.uber.org/multierr,https://github.com/uber-go/multierr/blob/v1.11.0/LICENSE.txt,MIT
|
||||
go.uber.org/zap,https://github.com/uber-go/zap/blob/v1.25.0/LICENSE.txt,MIT
|
||||
|
@ -125,16 +125,16 @@ golang.org/x/exp,https://cs.opensource.google/go/x/exp/+/92128663:LICENSE,BSD-3-
|
|||
golang.org/x/net,https://cs.opensource.google/go/x/net/+/v0.17.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/oauth2,https://cs.opensource.google/go/x/oauth2/+/v0.12.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/sync,https://cs.opensource.google/go/x/sync/+/v0.3.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/sys,https://cs.opensource.google/go/x/sys/+/v0.13.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/sys,https://cs.opensource.google/go/x/sys/+/v0.14.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/term,https://cs.opensource.google/go/x/term/+/v0.13.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/text,https://cs.opensource.google/go/x/text/+/v0.13.0:LICENSE,BSD-3-Clause
|
||||
golang.org/x/time/rate,https://cs.opensource.google/go/x/time/+/v0.3.0:LICENSE,BSD-3-Clause
|
||||
gomodules.xyz/jsonpatch/v2,https://github.com/gomodules/jsonpatch/blob/v2.4.0/v2/LICENSE,Apache-2.0
|
||||
google.golang.org/api,https://github.com/googleapis/google-api-go-client/blob/v0.140.0/LICENSE,BSD-3-Clause
|
||||
google.golang.org/api/internal/third_party/uritemplates,https://github.com/googleapis/google-api-go-client/blob/v0.140.0/internal/third_party/uritemplates/LICENSE,BSD-3-Clause
|
||||
google.golang.org/genproto/googleapis/api,https://github.com/googleapis/go-genproto/blob/f966b187b2e5/googleapis/api/LICENSE,Apache-2.0
|
||||
google.golang.org/genproto/googleapis/api,https://github.com/googleapis/go-genproto/blob/b8732ec3820d/googleapis/api/LICENSE,Apache-2.0
|
||||
google.golang.org/genproto/googleapis/rpc,https://github.com/googleapis/go-genproto/blob/2d3300fd4832/googleapis/rpc/LICENSE,Apache-2.0
|
||||
google.golang.org/grpc,https://github.com/grpc/grpc-go/blob/v1.58.3/LICENSE,Apache-2.0
|
||||
google.golang.org/grpc,https://github.com/grpc/grpc-go/blob/v1.59.0/LICENSE,Apache-2.0
|
||||
google.golang.org/protobuf,https://github.com/protocolbuffers/protobuf-go/blob/v1.31.0/LICENSE,BSD-3-Clause
|
||||
gopkg.in/inf.v0,https://github.com/go-inf/inf/blob/v0.9.1/LICENSE,BSD-3-Clause
|
||||
gopkg.in/ini.v1,https://github.com/go-ini/ini/blob/v1.62.0/LICENSE,Apache-2.0
|
||||
|
|
|
@ -91,11 +91,12 @@ logr design but also left out some parts and changed others:
|
|||
| Adding a name to a logger | `WithName` | no API |
|
||||
| Modify verbosity of log entries in a call chain | `V` | no API |
|
||||
| Grouping of key/value pairs | not supported | `WithGroup`, `GroupValue` |
|
||||
| Pass context for extracting additional values | no API | API variants like `InfoCtx` |
|
||||
|
||||
The high-level slog API is explicitly meant to be one of many different APIs
|
||||
that can be layered on top of a shared `slog.Handler`. logr is one such
|
||||
alternative API, with [interoperability](#slog-interoperability) provided by the [`slogr`](slogr)
|
||||
package.
|
||||
alternative API, with [interoperability](#slog-interoperability) provided by
|
||||
some conversion functions.
|
||||
|
||||
### Inspiration
|
||||
|
||||
|
@ -145,24 +146,24 @@ There are implementations for the following logging libraries:
|
|||
## slog interoperability
|
||||
|
||||
Interoperability goes both ways, using the `logr.Logger` API with a `slog.Handler`
|
||||
and using the `slog.Logger` API with a `logr.LogSink`. [slogr](./slogr) provides `NewLogr` and
|
||||
`NewSlogHandler` API calls to convert between a `logr.Logger` and a `slog.Handler`.
|
||||
and using the `slog.Logger` API with a `logr.LogSink`. `FromSlogHandler` and
|
||||
`ToSlogHandler` convert between a `logr.Logger` and a `slog.Handler`.
|
||||
As usual, `slog.New` can be used to wrap such a `slog.Handler` in the high-level
|
||||
slog API. `slogr` itself leaves that to the caller.
|
||||
slog API.
|
||||
|
||||
## Using a `logr.Sink` as backend for slog
|
||||
### Using a `logr.LogSink` as backend for slog
|
||||
|
||||
Ideally, a logr sink implementation should support both logr and slog by
|
||||
implementing both the normal logr interface(s) and `slogr.SlogSink`. Because
|
||||
implementing both the normal logr interface(s) and `SlogSink`. Because
|
||||
of a conflict in the parameters of the common `Enabled` method, it is [not
|
||||
possible to implement both slog.Handler and logr.Sink in the same
|
||||
type](https://github.com/golang/go/issues/59110).
|
||||
|
||||
If both are supported, log calls can go from the high-level APIs to the backend
|
||||
without the need to convert parameters. `NewLogr` and `NewSlogHandler` can
|
||||
without the need to convert parameters. `FromSlogHandler` and `ToSlogHandler` can
|
||||
convert back and forth without adding additional wrappers, with one exception:
|
||||
when `Logger.V` was used to adjust the verbosity for a `slog.Handler`, then
|
||||
`NewSlogHandler` has to use a wrapper which adjusts the verbosity for future
|
||||
`ToSlogHandler` has to use a wrapper which adjusts the verbosity for future
|
||||
log calls.
|
||||
|
||||
Such an implementation should also support values that implement specific
|
||||
|
@ -187,13 +188,13 @@ Not supporting slog has several drawbacks:
|
|||
These drawbacks are severe enough that applications using a mixture of slog and
|
||||
logr should switch to a different backend.
|
||||
|
||||
## Using a `slog.Handler` as backend for logr
|
||||
### Using a `slog.Handler` as backend for logr
|
||||
|
||||
Using a plain `slog.Handler` without support for logr works better than the
|
||||
other direction:
|
||||
- All logr verbosity levels can be mapped 1:1 to their corresponding slog level
|
||||
by negating them.
|
||||
- Stack unwinding is done by the `slogr.SlogSink` and the resulting program
|
||||
- Stack unwinding is done by the `SlogSink` and the resulting program
|
||||
counter is passed to the `slog.Handler`.
|
||||
- Names added via `Logger.WithName` are gathered and recorded in an additional
|
||||
attribute with `logger` as key and the names separated by slash as value.
|
||||
|
@ -205,27 +206,39 @@ ideally support both `logr.Marshaler` and `slog.Valuer`. If compatibility
|
|||
with logr implementations without slog support is not important, then
|
||||
`slog.Valuer` is sufficient.
|
||||
|
||||
## Context support for slog
|
||||
### Context support for slog
|
||||
|
||||
Storing a logger in a `context.Context` is not supported by
|
||||
slog. `logr.NewContext` and `logr.FromContext` can be used with slog like this
|
||||
to fill this gap:
|
||||
slog. `NewContextWithSlogLogger` and `FromContextAsSlogLogger` can be
|
||||
used to fill this gap. They store and retrieve a `slog.Logger` pointer
|
||||
under the same context key that is also used by `NewContext` and
|
||||
`FromContext` for `logr.Logger` value.
|
||||
|
||||
func HandlerFromContext(ctx context.Context) slog.Handler {
|
||||
logger, err := logr.FromContext(ctx)
|
||||
if err == nil {
|
||||
return slogr.NewSlogHandler(logger)
|
||||
}
|
||||
return slog.Default().Handler()
|
||||
}
|
||||
When `NewContextWithSlogLogger` is followed by `FromContext`, the latter will
|
||||
automatically convert the `slog.Logger` to a
|
||||
`logr.Logger`. `FromContextAsSlogLogger` does the same for the other direction.
|
||||
|
||||
func ContextWithHandler(ctx context.Context, handler slog.Handler) context.Context {
|
||||
return logr.NewContext(ctx, slogr.NewLogr(handler))
|
||||
}
|
||||
With this approach, binaries which use either slog or logr are as efficient as
|
||||
possible with no unnecessary allocations. This is also why the API stores a
|
||||
`slog.Logger` pointer: when storing a `slog.Handler`, creating a `slog.Logger`
|
||||
on retrieval would need to allocate one.
|
||||
|
||||
The downside is that storing and retrieving a `slog.Handler` needs more
|
||||
allocations compared to using a `logr.Logger`. Therefore the recommendation is
|
||||
to use the `logr.Logger` API in code which uses contextual logging.
|
||||
The downside is that switching back and forth needs more allocations. Because
|
||||
logr is the API that is already in use by different packages, in particular
|
||||
Kubernetes, the recommendation is to use the `logr.Logger` API in code which
|
||||
uses contextual logging.
|
||||
|
||||
An alternative to adding values to a logger and storing that logger in the
|
||||
context is to store the values in the context and to configure a logging
|
||||
backend to extract those values when emitting log entries. This only works when
|
||||
log calls are passed the context, which is not supported by the logr API.
|
||||
|
||||
With the slog API, it is possible, but not
|
||||
required. https://github.com/veqryn/slog-context is a package for slog which
|
||||
provides additional support code for this approach. It also contains wrappers
|
||||
for the context functions in logr, so developers who prefer to not use the logr
|
||||
APIs directly can use those instead and the resulting code will still be
|
||||
interoperable with logr.
|
||||
|
||||
## FAQ
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
Copyright 2023 The logr 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 logr
|
||||
|
||||
// contextKey is how we find Loggers in a context.Context. With Go < 1.21,
|
||||
// the value is always a Logger value. With Go >= 1.21, the value can be a
|
||||
// Logger value or a slog.Logger pointer.
|
||||
type contextKey struct{}
|
||||
|
||||
// notFoundError exists to carry an IsNotFound method.
|
||||
type notFoundError struct{}
|
||||
|
||||
func (notFoundError) Error() string {
|
||||
return "no logr.Logger was present"
|
||||
}
|
||||
|
||||
func (notFoundError) IsNotFound() bool {
|
||||
return true
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
//go:build !go1.21
|
||||
// +build !go1.21
|
||||
|
||||
/*
|
||||
Copyright 2019 The logr 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 logr
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// FromContext returns a Logger from ctx or an error if no Logger is found.
|
||||
func FromContext(ctx context.Context) (Logger, error) {
|
||||
if v, ok := ctx.Value(contextKey{}).(Logger); ok {
|
||||
return v, nil
|
||||
}
|
||||
|
||||
return Logger{}, notFoundError{}
|
||||
}
|
||||
|
||||
// FromContextOrDiscard returns a Logger from ctx. If no Logger is found, this
|
||||
// returns a Logger that discards all log messages.
|
||||
func FromContextOrDiscard(ctx context.Context) Logger {
|
||||
if v, ok := ctx.Value(contextKey{}).(Logger); ok {
|
||||
return v
|
||||
}
|
||||
|
||||
return Discard()
|
||||
}
|
||||
|
||||
// NewContext returns a new Context, derived from ctx, which carries the
|
||||
// provided Logger.
|
||||
func NewContext(ctx context.Context, logger Logger) context.Context {
|
||||
return context.WithValue(ctx, contextKey{}, logger)
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
//go:build go1.21
|
||||
// +build go1.21
|
||||
|
||||
/*
|
||||
Copyright 2019 The logr 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 logr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
)
|
||||
|
||||
// FromContext returns a Logger from ctx or an error if no Logger is found.
|
||||
func FromContext(ctx context.Context) (Logger, error) {
|
||||
v := ctx.Value(contextKey{})
|
||||
if v == nil {
|
||||
return Logger{}, notFoundError{}
|
||||
}
|
||||
|
||||
switch v := v.(type) {
|
||||
case Logger:
|
||||
return v, nil
|
||||
case *slog.Logger:
|
||||
return FromSlogHandler(v.Handler()), nil
|
||||
default:
|
||||
// Not reached.
|
||||
panic(fmt.Sprintf("unexpected value type for logr context key: %T", v))
|
||||
}
|
||||
}
|
||||
|
||||
// FromContextAsSlogLogger returns a slog.Logger from ctx or nil if no such Logger is found.
|
||||
func FromContextAsSlogLogger(ctx context.Context) *slog.Logger {
|
||||
v := ctx.Value(contextKey{})
|
||||
if v == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
switch v := v.(type) {
|
||||
case Logger:
|
||||
return slog.New(ToSlogHandler(v))
|
||||
case *slog.Logger:
|
||||
return v
|
||||
default:
|
||||
// Not reached.
|
||||
panic(fmt.Sprintf("unexpected value type for logr context key: %T", v))
|
||||
}
|
||||
}
|
||||
|
||||
// FromContextOrDiscard returns a Logger from ctx. If no Logger is found, this
|
||||
// returns a Logger that discards all log messages.
|
||||
func FromContextOrDiscard(ctx context.Context) Logger {
|
||||
if logger, err := FromContext(ctx); err == nil {
|
||||
return logger
|
||||
}
|
||||
return Discard()
|
||||
}
|
||||
|
||||
// NewContext returns a new Context, derived from ctx, which carries the
|
||||
// provided Logger.
|
||||
func NewContext(ctx context.Context, logger Logger) context.Context {
|
||||
return context.WithValue(ctx, contextKey{}, logger)
|
||||
}
|
||||
|
||||
// NewContextWithSlogLogger returns a new Context, derived from ctx, which carries the
|
||||
// provided slog.Logger.
|
||||
func NewContextWithSlogLogger(ctx context.Context, logger *slog.Logger) context.Context {
|
||||
return context.WithValue(ctx, contextKey{}, logger)
|
||||
}
|
|
@ -100,6 +100,11 @@ type Options struct {
|
|||
// details, see docs for Go's time.Layout.
|
||||
TimestampFormat string
|
||||
|
||||
// LogInfoLevel tells funcr what key to use to log the info level.
|
||||
// If not specified, the info level will be logged as "level".
|
||||
// If this is set to "", the info level will not be logged at all.
|
||||
LogInfoLevel *string
|
||||
|
||||
// Verbosity tells funcr which V logs to produce. Higher values enable
|
||||
// more logs. Info logs at or below this level will be written, while logs
|
||||
// above this level will be discarded.
|
||||
|
@ -213,6 +218,10 @@ func newFormatter(opts Options, outfmt outputFormat) Formatter {
|
|||
if opts.MaxLogDepth == 0 {
|
||||
opts.MaxLogDepth = defaultMaxLogDepth
|
||||
}
|
||||
if opts.LogInfoLevel == nil {
|
||||
opts.LogInfoLevel = new(string)
|
||||
*opts.LogInfoLevel = "level"
|
||||
}
|
||||
f := Formatter{
|
||||
outputFormat: outfmt,
|
||||
prefix: "",
|
||||
|
@ -227,12 +236,15 @@ func newFormatter(opts Options, outfmt outputFormat) Formatter {
|
|||
// implementation. It should be constructed with NewFormatter. Some of
|
||||
// its methods directly implement logr.LogSink.
|
||||
type Formatter struct {
|
||||
outputFormat outputFormat
|
||||
prefix string
|
||||
values []any
|
||||
valuesStr string
|
||||
depth int
|
||||
opts *Options
|
||||
outputFormat outputFormat
|
||||
prefix string
|
||||
values []any
|
||||
valuesStr string
|
||||
parentValuesStr string
|
||||
depth int
|
||||
opts *Options
|
||||
group string // for slog groups
|
||||
groupDepth int
|
||||
}
|
||||
|
||||
// outputFormat indicates which outputFormat to use.
|
||||
|
@ -253,33 +265,62 @@ func (f Formatter) render(builtins, args []any) string {
|
|||
// Empirically bytes.Buffer is faster than strings.Builder for this.
|
||||
buf := bytes.NewBuffer(make([]byte, 0, 1024))
|
||||
if f.outputFormat == outputJSON {
|
||||
buf.WriteByte('{')
|
||||
buf.WriteByte('{') // for the whole line
|
||||
}
|
||||
|
||||
vals := builtins
|
||||
if hook := f.opts.RenderBuiltinsHook; hook != nil {
|
||||
vals = hook(f.sanitize(vals))
|
||||
}
|
||||
f.flatten(buf, vals, false, false) // keys are ours, no need to escape
|
||||
continuing := len(builtins) > 0
|
||||
if len(f.valuesStr) > 0 {
|
||||
|
||||
if f.parentValuesStr != "" {
|
||||
if continuing {
|
||||
if f.outputFormat == outputJSON {
|
||||
buf.WriteByte(',')
|
||||
} else {
|
||||
buf.WriteByte(' ')
|
||||
}
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
buf.WriteString(f.parentValuesStr)
|
||||
continuing = true
|
||||
buf.WriteString(f.valuesStr)
|
||||
}
|
||||
|
||||
groupDepth := f.groupDepth
|
||||
if f.group != "" {
|
||||
if f.valuesStr != "" || len(args) != 0 {
|
||||
if continuing {
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
buf.WriteString(f.quoted(f.group, true)) // escape user-provided keys
|
||||
buf.WriteByte(f.colon())
|
||||
buf.WriteByte('{') // for the group
|
||||
continuing = false
|
||||
} else {
|
||||
// The group was empty
|
||||
groupDepth--
|
||||
}
|
||||
}
|
||||
|
||||
if f.valuesStr != "" {
|
||||
if continuing {
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
buf.WriteString(f.valuesStr)
|
||||
continuing = true
|
||||
}
|
||||
|
||||
vals = args
|
||||
if hook := f.opts.RenderArgsHook; hook != nil {
|
||||
vals = hook(f.sanitize(vals))
|
||||
}
|
||||
f.flatten(buf, vals, continuing, true) // escape user-provided keys
|
||||
if f.outputFormat == outputJSON {
|
||||
buf.WriteByte('}')
|
||||
|
||||
for i := 0; i < groupDepth; i++ {
|
||||
buf.WriteByte('}') // for the groups
|
||||
}
|
||||
|
||||
if f.outputFormat == outputJSON {
|
||||
buf.WriteByte('}') // for the whole line
|
||||
}
|
||||
|
||||
return buf.String()
|
||||
}
|
||||
|
||||
|
@ -298,9 +339,16 @@ func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, continuing bool, esc
|
|||
if len(kvList)%2 != 0 {
|
||||
kvList = append(kvList, noValue)
|
||||
}
|
||||
copied := false
|
||||
for i := 0; i < len(kvList); i += 2 {
|
||||
k, ok := kvList[i].(string)
|
||||
if !ok {
|
||||
if !copied {
|
||||
newList := make([]any, len(kvList))
|
||||
copy(newList, kvList)
|
||||
kvList = newList
|
||||
copied = true
|
||||
}
|
||||
k = f.nonStringKey(kvList[i])
|
||||
kvList[i] = k
|
||||
}
|
||||
|
@ -308,7 +356,7 @@ func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, continuing bool, esc
|
|||
|
||||
if i > 0 || continuing {
|
||||
if f.outputFormat == outputJSON {
|
||||
buf.WriteByte(',')
|
||||
buf.WriteByte(f.comma())
|
||||
} else {
|
||||
// In theory the format could be something we don't understand. In
|
||||
// practice, we control it, so it won't be.
|
||||
|
@ -316,24 +364,35 @@ func (f Formatter) flatten(buf *bytes.Buffer, kvList []any, continuing bool, esc
|
|||
}
|
||||
}
|
||||
|
||||
if escapeKeys {
|
||||
buf.WriteString(prettyString(k))
|
||||
} else {
|
||||
// this is faster
|
||||
buf.WriteByte('"')
|
||||
buf.WriteString(k)
|
||||
buf.WriteByte('"')
|
||||
}
|
||||
if f.outputFormat == outputJSON {
|
||||
buf.WriteByte(':')
|
||||
} else {
|
||||
buf.WriteByte('=')
|
||||
}
|
||||
buf.WriteString(f.quoted(k, escapeKeys))
|
||||
buf.WriteByte(f.colon())
|
||||
buf.WriteString(f.pretty(v))
|
||||
}
|
||||
return kvList
|
||||
}
|
||||
|
||||
func (f Formatter) quoted(str string, escape bool) string {
|
||||
if escape {
|
||||
return prettyString(str)
|
||||
}
|
||||
// this is faster
|
||||
return `"` + str + `"`
|
||||
}
|
||||
|
||||
func (f Formatter) comma() byte {
|
||||
if f.outputFormat == outputJSON {
|
||||
return ','
|
||||
}
|
||||
return ' '
|
||||
}
|
||||
|
||||
func (f Formatter) colon() byte {
|
||||
if f.outputFormat == outputJSON {
|
||||
return ':'
|
||||
}
|
||||
return '='
|
||||
}
|
||||
|
||||
func (f Formatter) pretty(value any) string {
|
||||
return f.prettyWithFlags(value, 0, 0)
|
||||
}
|
||||
|
@ -407,12 +466,12 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {
|
|||
}
|
||||
for i := 0; i < len(v); i += 2 {
|
||||
if i > 0 {
|
||||
buf.WriteByte(',')
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
k, _ := v[i].(string) // sanitize() above means no need to check success
|
||||
// arbitrary keys might need escaping
|
||||
buf.WriteString(prettyString(k))
|
||||
buf.WriteByte(':')
|
||||
buf.WriteByte(f.colon())
|
||||
buf.WriteString(f.prettyWithFlags(v[i+1], 0, depth+1))
|
||||
}
|
||||
if flags&flagRawStruct == 0 {
|
||||
|
@ -481,7 +540,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {
|
|||
continue
|
||||
}
|
||||
if printComma {
|
||||
buf.WriteByte(',')
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
printComma = true // if we got here, we are rendering a field
|
||||
if fld.Anonymous && fld.Type.Kind() == reflect.Struct && name == "" {
|
||||
|
@ -492,10 +551,8 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {
|
|||
name = fld.Name
|
||||
}
|
||||
// field names can't contain characters which need escaping
|
||||
buf.WriteByte('"')
|
||||
buf.WriteString(name)
|
||||
buf.WriteByte('"')
|
||||
buf.WriteByte(':')
|
||||
buf.WriteString(f.quoted(name, false))
|
||||
buf.WriteByte(f.colon())
|
||||
buf.WriteString(f.prettyWithFlags(v.Field(i).Interface(), 0, depth+1))
|
||||
}
|
||||
if flags&flagRawStruct == 0 {
|
||||
|
@ -520,7 +577,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {
|
|||
buf.WriteByte('[')
|
||||
for i := 0; i < v.Len(); i++ {
|
||||
if i > 0 {
|
||||
buf.WriteByte(',')
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
e := v.Index(i)
|
||||
buf.WriteString(f.prettyWithFlags(e.Interface(), 0, depth+1))
|
||||
|
@ -534,7 +591,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {
|
|||
i := 0
|
||||
for it.Next() {
|
||||
if i > 0 {
|
||||
buf.WriteByte(',')
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
// If a map key supports TextMarshaler, use it.
|
||||
keystr := ""
|
||||
|
@ -556,7 +613,7 @@ func (f Formatter) prettyWithFlags(value any, flags uint32, depth int) string {
|
|||
}
|
||||
}
|
||||
buf.WriteString(keystr)
|
||||
buf.WriteByte(':')
|
||||
buf.WriteByte(f.colon())
|
||||
buf.WriteString(f.prettyWithFlags(it.Value().Interface(), 0, depth+1))
|
||||
i++
|
||||
}
|
||||
|
@ -706,6 +763,53 @@ func (f Formatter) sanitize(kvList []any) []any {
|
|||
return kvList
|
||||
}
|
||||
|
||||
// startGroup opens a new group scope (basically a sub-struct), which locks all
|
||||
// the current saved values and starts them anew. This is needed to satisfy
|
||||
// slog.
|
||||
func (f *Formatter) startGroup(group string) {
|
||||
// Unnamed groups are just inlined.
|
||||
if group == "" {
|
||||
return
|
||||
}
|
||||
|
||||
// Any saved values can no longer be changed.
|
||||
buf := bytes.NewBuffer(make([]byte, 0, 1024))
|
||||
continuing := false
|
||||
|
||||
if f.parentValuesStr != "" {
|
||||
buf.WriteString(f.parentValuesStr)
|
||||
continuing = true
|
||||
}
|
||||
|
||||
if f.group != "" && f.valuesStr != "" {
|
||||
if continuing {
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
buf.WriteString(f.quoted(f.group, true)) // escape user-provided keys
|
||||
buf.WriteByte(f.colon())
|
||||
buf.WriteByte('{') // for the group
|
||||
continuing = false
|
||||
}
|
||||
|
||||
if f.valuesStr != "" {
|
||||
if continuing {
|
||||
buf.WriteByte(f.comma())
|
||||
}
|
||||
buf.WriteString(f.valuesStr)
|
||||
}
|
||||
|
||||
// NOTE: We don't close the scope here - that's done later, when a log line
|
||||
// is actually rendered (because we have N scopes to close).
|
||||
|
||||
f.parentValuesStr = buf.String()
|
||||
|
||||
// Start collecting new values.
|
||||
f.group = group
|
||||
f.groupDepth++
|
||||
f.valuesStr = ""
|
||||
f.values = nil
|
||||
}
|
||||
|
||||
// Init configures this Formatter from runtime info, such as the call depth
|
||||
// imposed by logr itself.
|
||||
// Note that this receiver is a pointer, so depth can be saved.
|
||||
|
@ -740,7 +844,10 @@ func (f Formatter) FormatInfo(level int, msg string, kvList []any) (prefix, args
|
|||
if policy := f.opts.LogCaller; policy == All || policy == Info {
|
||||
args = append(args, "caller", f.caller())
|
||||
}
|
||||
args = append(args, "level", level, "msg", msg)
|
||||
if key := *f.opts.LogInfoLevel; key != "" {
|
||||
args = append(args, key, level)
|
||||
}
|
||||
args = append(args, "msg", msg)
|
||||
return prefix, f.render(args, kvList)
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
//go:build go1.21
|
||||
// +build go1.21
|
||||
|
||||
/*
|
||||
Copyright 2023 The logr 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 funcr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
)
|
||||
|
||||
var _ logr.SlogSink = &fnlogger{}
|
||||
|
||||
const extraSlogSinkDepth = 3 // 2 for slog, 1 for SlogSink
|
||||
|
||||
func (l fnlogger) Handle(_ context.Context, record slog.Record) error {
|
||||
kvList := make([]any, 0, 2*record.NumAttrs())
|
||||
record.Attrs(func(attr slog.Attr) bool {
|
||||
kvList = attrToKVs(attr, kvList)
|
||||
return true
|
||||
})
|
||||
|
||||
if record.Level >= slog.LevelError {
|
||||
l.WithCallDepth(extraSlogSinkDepth).Error(nil, record.Message, kvList...)
|
||||
} else {
|
||||
level := l.levelFromSlog(record.Level)
|
||||
l.WithCallDepth(extraSlogSinkDepth).Info(level, record.Message, kvList...)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (l fnlogger) WithAttrs(attrs []slog.Attr) logr.SlogSink {
|
||||
kvList := make([]any, 0, 2*len(attrs))
|
||||
for _, attr := range attrs {
|
||||
kvList = attrToKVs(attr, kvList)
|
||||
}
|
||||
l.AddValues(kvList)
|
||||
return &l
|
||||
}
|
||||
|
||||
func (l fnlogger) WithGroup(name string) logr.SlogSink {
|
||||
l.startGroup(name)
|
||||
return &l
|
||||
}
|
||||
|
||||
// attrToKVs appends a slog.Attr to a logr-style kvList. It handle slog Groups
|
||||
// and other details of slog.
|
||||
func attrToKVs(attr slog.Attr, kvList []any) []any {
|
||||
attrVal := attr.Value.Resolve()
|
||||
if attrVal.Kind() == slog.KindGroup {
|
||||
groupVal := attrVal.Group()
|
||||
grpKVs := make([]any, 0, 2*len(groupVal))
|
||||
for _, attr := range groupVal {
|
||||
grpKVs = attrToKVs(attr, grpKVs)
|
||||
}
|
||||
if attr.Key == "" {
|
||||
// slog says we have to inline these
|
||||
kvList = append(kvList, grpKVs...)
|
||||
} else {
|
||||
kvList = append(kvList, attr.Key, PseudoStruct(grpKVs))
|
||||
}
|
||||
} else if attr.Key != "" {
|
||||
kvList = append(kvList, attr.Key, attrVal.Any())
|
||||
}
|
||||
|
||||
return kvList
|
||||
}
|
||||
|
||||
// levelFromSlog adjusts the level by the logger's verbosity and negates it.
|
||||
// It ensures that the result is >= 0. This is necessary because the result is
|
||||
// passed to a LogSink and that API did not historically document whether
|
||||
// levels could be negative or what that meant.
|
||||
//
|
||||
// Some example usage:
|
||||
//
|
||||
// logrV0 := getMyLogger()
|
||||
// logrV2 := logrV0.V(2)
|
||||
// slogV2 := slog.New(logr.ToSlogHandler(logrV2))
|
||||
// slogV2.Debug("msg") // =~ logrV2.V(4) =~ logrV0.V(6)
|
||||
// slogV2.Info("msg") // =~ logrV2.V(0) =~ logrV0.V(2)
|
||||
// slogv2.Warn("msg") // =~ logrV2.V(-4) =~ logrV0.V(0)
|
||||
func (l fnlogger) levelFromSlog(level slog.Level) int {
|
||||
result := -level
|
||||
if result < 0 {
|
||||
result = 0 // because LogSink doesn't expect negative V levels
|
||||
}
|
||||
return int(result)
|
||||
}
|
|
@ -207,10 +207,6 @@ limitations under the License.
|
|||
// those.
|
||||
package logr
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
// New returns a new Logger instance. This is primarily used by libraries
|
||||
// implementing LogSink, rather than end users. Passing a nil sink will create
|
||||
// a Logger which discards all log lines.
|
||||
|
@ -410,45 +406,6 @@ func (l Logger) IsZero() bool {
|
|||
return l.sink == nil
|
||||
}
|
||||
|
||||
// contextKey is how we find Loggers in a context.Context.
|
||||
type contextKey struct{}
|
||||
|
||||
// FromContext returns a Logger from ctx or an error if no Logger is found.
|
||||
func FromContext(ctx context.Context) (Logger, error) {
|
||||
if v, ok := ctx.Value(contextKey{}).(Logger); ok {
|
||||
return v, nil
|
||||
}
|
||||
|
||||
return Logger{}, notFoundError{}
|
||||
}
|
||||
|
||||
// notFoundError exists to carry an IsNotFound method.
|
||||
type notFoundError struct{}
|
||||
|
||||
func (notFoundError) Error() string {
|
||||
return "no logr.Logger was present"
|
||||
}
|
||||
|
||||
func (notFoundError) IsNotFound() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// FromContextOrDiscard returns a Logger from ctx. If no Logger is found, this
|
||||
// returns a Logger that discards all log messages.
|
||||
func FromContextOrDiscard(ctx context.Context) Logger {
|
||||
if v, ok := ctx.Value(contextKey{}).(Logger); ok {
|
||||
return v
|
||||
}
|
||||
|
||||
return Discard()
|
||||
}
|
||||
|
||||
// NewContext returns a new Context, derived from ctx, which carries the
|
||||
// provided Logger.
|
||||
func NewContext(ctx context.Context, logger Logger) context.Context {
|
||||
return context.WithValue(ctx, contextKey{}, logger)
|
||||
}
|
||||
|
||||
// RuntimeInfo holds information that the logr "core" library knows which
|
||||
// LogSinks might want to know.
|
||||
type RuntimeInfo struct {
|
||||
|
|
|
@ -17,18 +17,16 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package slogr
|
||||
package logr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
)
|
||||
|
||||
type slogHandler struct {
|
||||
// May be nil, in which case all logs get discarded.
|
||||
sink logr.LogSink
|
||||
sink LogSink
|
||||
// Non-nil if sink is non-nil and implements SlogSink.
|
||||
slogSink SlogSink
|
||||
|
||||
|
@ -54,7 +52,7 @@ func (l *slogHandler) GetLevel() slog.Level {
|
|||
return l.levelBias
|
||||
}
|
||||
|
||||
func (l *slogHandler) Enabled(ctx context.Context, level slog.Level) bool {
|
||||
func (l *slogHandler) Enabled(_ context.Context, level slog.Level) bool {
|
||||
return l.sink != nil && (level >= slog.LevelError || l.sink.Enabled(l.levelFromSlog(level)))
|
||||
}
|
||||
|
||||
|
@ -72,9 +70,7 @@ func (l *slogHandler) Handle(ctx context.Context, record slog.Record) error {
|
|||
|
||||
kvList := make([]any, 0, 2*record.NumAttrs())
|
||||
record.Attrs(func(attr slog.Attr) bool {
|
||||
if attr.Key != "" {
|
||||
kvList = append(kvList, l.addGroupPrefix(attr.Key), attr.Value.Resolve().Any())
|
||||
}
|
||||
kvList = attrToKVs(attr, l.groupPrefix, kvList)
|
||||
return true
|
||||
})
|
||||
if record.Level >= slog.LevelError {
|
||||
|
@ -90,15 +86,15 @@ func (l *slogHandler) Handle(ctx context.Context, record slog.Record) error {
|
|||
// are called by Handle, code in slog gets skipped.
|
||||
//
|
||||
// This offset currently (Go 1.21.0) works for calls through
|
||||
// slog.New(NewSlogHandler(...)). There's no guarantee that the call
|
||||
// slog.New(ToSlogHandler(...)). There's no guarantee that the call
|
||||
// chain won't change. Wrapping the handler will also break unwinding. It's
|
||||
// still better than not adjusting at all....
|
||||
//
|
||||
// This cannot be done when constructing the handler because NewLogr needs
|
||||
// This cannot be done when constructing the handler because FromSlogHandler needs
|
||||
// access to the original sink without this adjustment. A second copy would
|
||||
// work, but then WithAttrs would have to be called for both of them.
|
||||
func (l *slogHandler) sinkWithCallDepth() logr.LogSink {
|
||||
if sink, ok := l.sink.(logr.CallDepthLogSink); ok {
|
||||
func (l *slogHandler) sinkWithCallDepth() LogSink {
|
||||
if sink, ok := l.sink.(CallDepthLogSink); ok {
|
||||
return sink.WithCallDepth(2)
|
||||
}
|
||||
return l.sink
|
||||
|
@ -109,60 +105,88 @@ func (l *slogHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
|
|||
return l
|
||||
}
|
||||
|
||||
copy := *l
|
||||
clone := *l
|
||||
if l.slogSink != nil {
|
||||
copy.slogSink = l.slogSink.WithAttrs(attrs)
|
||||
copy.sink = copy.slogSink
|
||||
clone.slogSink = l.slogSink.WithAttrs(attrs)
|
||||
clone.sink = clone.slogSink
|
||||
} else {
|
||||
kvList := make([]any, 0, 2*len(attrs))
|
||||
for _, attr := range attrs {
|
||||
if attr.Key != "" {
|
||||
kvList = append(kvList, l.addGroupPrefix(attr.Key), attr.Value.Resolve().Any())
|
||||
}
|
||||
kvList = attrToKVs(attr, l.groupPrefix, kvList)
|
||||
}
|
||||
copy.sink = l.sink.WithValues(kvList...)
|
||||
clone.sink = l.sink.WithValues(kvList...)
|
||||
}
|
||||
return ©
|
||||
return &clone
|
||||
}
|
||||
|
||||
func (l *slogHandler) WithGroup(name string) slog.Handler {
|
||||
if l.sink == nil {
|
||||
return l
|
||||
}
|
||||
copy := *l
|
||||
if l.slogSink != nil {
|
||||
copy.slogSink = l.slogSink.WithGroup(name)
|
||||
copy.sink = l.slogSink
|
||||
} else {
|
||||
copy.groupPrefix = copy.addGroupPrefix(name)
|
||||
if name == "" {
|
||||
// slog says to inline empty groups
|
||||
return l
|
||||
}
|
||||
return ©
|
||||
clone := *l
|
||||
if l.slogSink != nil {
|
||||
clone.slogSink = l.slogSink.WithGroup(name)
|
||||
clone.sink = clone.slogSink
|
||||
} else {
|
||||
clone.groupPrefix = addPrefix(clone.groupPrefix, name)
|
||||
}
|
||||
return &clone
|
||||
}
|
||||
|
||||
func (l *slogHandler) addGroupPrefix(name string) string {
|
||||
if l.groupPrefix == "" {
|
||||
// attrToKVs appends a slog.Attr to a logr-style kvList. It handle slog Groups
|
||||
// and other details of slog.
|
||||
func attrToKVs(attr slog.Attr, groupPrefix string, kvList []any) []any {
|
||||
attrVal := attr.Value.Resolve()
|
||||
if attrVal.Kind() == slog.KindGroup {
|
||||
groupVal := attrVal.Group()
|
||||
grpKVs := make([]any, 0, 2*len(groupVal))
|
||||
prefix := groupPrefix
|
||||
if attr.Key != "" {
|
||||
prefix = addPrefix(groupPrefix, attr.Key)
|
||||
}
|
||||
for _, attr := range groupVal {
|
||||
grpKVs = attrToKVs(attr, prefix, grpKVs)
|
||||
}
|
||||
kvList = append(kvList, grpKVs...)
|
||||
} else if attr.Key != "" {
|
||||
kvList = append(kvList, addPrefix(groupPrefix, attr.Key), attrVal.Any())
|
||||
}
|
||||
|
||||
return kvList
|
||||
}
|
||||
|
||||
func addPrefix(prefix, name string) string {
|
||||
if prefix == "" {
|
||||
return name
|
||||
}
|
||||
return l.groupPrefix + groupSeparator + name
|
||||
if name == "" {
|
||||
return prefix
|
||||
}
|
||||
return prefix + groupSeparator + name
|
||||
}
|
||||
|
||||
// levelFromSlog adjusts the level by the logger's verbosity and negates it.
|
||||
// It ensures that the result is >= 0. This is necessary because the result is
|
||||
// passed to a logr.LogSink and that API did not historically document whether
|
||||
// passed to a LogSink and that API did not historically document whether
|
||||
// levels could be negative or what that meant.
|
||||
//
|
||||
// Some example usage:
|
||||
// logrV0 := getMyLogger()
|
||||
// logrV2 := logrV0.V(2)
|
||||
// slogV2 := slog.New(slogr.NewSlogHandler(logrV2))
|
||||
// slogV2.Debug("msg") // =~ logrV2.V(4) =~ logrV0.V(6)
|
||||
// slogV2.Info("msg") // =~ logrV2.V(0) =~ logrV0.V(2)
|
||||
// slogv2.Warn("msg") // =~ logrV2.V(-4) =~ logrV0.V(0)
|
||||
//
|
||||
// logrV0 := getMyLogger()
|
||||
// logrV2 := logrV0.V(2)
|
||||
// slogV2 := slog.New(logr.ToSlogHandler(logrV2))
|
||||
// slogV2.Debug("msg") // =~ logrV2.V(4) =~ logrV0.V(6)
|
||||
// slogV2.Info("msg") // =~ logrV2.V(0) =~ logrV0.V(2)
|
||||
// slogv2.Warn("msg") // =~ logrV2.V(-4) =~ logrV0.V(0)
|
||||
func (l *slogHandler) levelFromSlog(level slog.Level) int {
|
||||
result := -level
|
||||
result += l.levelBias // in case the original logr.Logger had a V level
|
||||
result += l.levelBias // in case the original Logger had a V level
|
||||
if result < 0 {
|
||||
result = 0 // because logr.LogSink doesn't expect negative V levels
|
||||
result = 0 // because LogSink doesn't expect negative V levels
|
||||
}
|
||||
return int(result)
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
//go:build go1.21
|
||||
// +build go1.21
|
||||
|
||||
/*
|
||||
Copyright 2023 The logr 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 logr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
)
|
||||
|
||||
// FromSlogHandler returns a Logger which writes to the slog.Handler.
|
||||
//
|
||||
// The logr verbosity level is mapped to slog levels such that V(0) becomes
|
||||
// slog.LevelInfo and V(4) becomes slog.LevelDebug.
|
||||
func FromSlogHandler(handler slog.Handler) Logger {
|
||||
if handler, ok := handler.(*slogHandler); ok {
|
||||
if handler.sink == nil {
|
||||
return Discard()
|
||||
}
|
||||
return New(handler.sink).V(int(handler.levelBias))
|
||||
}
|
||||
return New(&slogSink{handler: handler})
|
||||
}
|
||||
|
||||
// ToSlogHandler returns a slog.Handler which writes to the same sink as the Logger.
|
||||
//
|
||||
// The returned logger writes all records with level >= slog.LevelError as
|
||||
// error log entries with LogSink.Error, regardless of the verbosity level of
|
||||
// the Logger:
|
||||
//
|
||||
// logger := <some Logger with 0 as verbosity level>
|
||||
// slog.New(ToSlogHandler(logger.V(10))).Error(...) -> logSink.Error(...)
|
||||
//
|
||||
// The level of all other records gets reduced by the verbosity
|
||||
// level of the Logger and the result is negated. If it happens
|
||||
// to be negative, then it gets replaced by zero because a LogSink
|
||||
// is not expected to handled negative levels:
|
||||
//
|
||||
// slog.New(ToSlogHandler(logger)).Debug(...) -> logger.GetSink().Info(level=4, ...)
|
||||
// slog.New(ToSlogHandler(logger)).Warning(...) -> logger.GetSink().Info(level=0, ...)
|
||||
// slog.New(ToSlogHandler(logger)).Info(...) -> logger.GetSink().Info(level=0, ...)
|
||||
// slog.New(ToSlogHandler(logger.V(4))).Info(...) -> logger.GetSink().Info(level=4, ...)
|
||||
func ToSlogHandler(logger Logger) slog.Handler {
|
||||
if sink, ok := logger.GetSink().(*slogSink); ok && logger.GetV() == 0 {
|
||||
return sink.handler
|
||||
}
|
||||
|
||||
handler := &slogHandler{sink: logger.GetSink(), levelBias: slog.Level(logger.GetV())}
|
||||
if slogSink, ok := handler.sink.(SlogSink); ok {
|
||||
handler.slogSink = slogSink
|
||||
}
|
||||
return handler
|
||||
}
|
||||
|
||||
// SlogSink is an optional interface that a LogSink can implement to support
|
||||
// logging through the slog.Logger or slog.Handler APIs better. It then should
|
||||
// also support special slog values like slog.Group. When used as a
|
||||
// slog.Handler, the advantages are:
|
||||
//
|
||||
// - stack unwinding gets avoided in favor of logging the pre-recorded PC,
|
||||
// as intended by slog
|
||||
// - proper grouping of key/value pairs via WithGroup
|
||||
// - verbosity levels > slog.LevelInfo can be recorded
|
||||
// - less overhead
|
||||
//
|
||||
// Both APIs (Logger and slog.Logger/Handler) then are supported equally
|
||||
// well. Developers can pick whatever API suits them better and/or mix
|
||||
// packages which use either API in the same binary with a common logging
|
||||
// implementation.
|
||||
//
|
||||
// This interface is necessary because the type implementing the LogSink
|
||||
// interface cannot also implement the slog.Handler interface due to the
|
||||
// different prototype of the common Enabled method.
|
||||
//
|
||||
// An implementation could support both interfaces in two different types, but then
|
||||
// additional interfaces would be needed to convert between those types in FromSlogHandler
|
||||
// and ToSlogHandler.
|
||||
type SlogSink interface {
|
||||
LogSink
|
||||
|
||||
Handle(ctx context.Context, record slog.Record) error
|
||||
WithAttrs(attrs []slog.Attr) SlogSink
|
||||
WithGroup(name string) SlogSink
|
||||
}
|
|
@ -23,10 +23,11 @@ limitations under the License.
|
|||
//
|
||||
// See the README in the top-level [./logr] package for a discussion of
|
||||
// interoperability.
|
||||
//
|
||||
// Deprecated: use the main logr package instead.
|
||||
package slogr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
|
@ -34,75 +35,27 @@ import (
|
|||
|
||||
// NewLogr returns a logr.Logger which writes to the slog.Handler.
|
||||
//
|
||||
// The logr verbosity level is mapped to slog levels such that V(0) becomes
|
||||
// slog.LevelInfo and V(4) becomes slog.LevelDebug.
|
||||
// Deprecated: use [logr.FromSlogHandler] instead.
|
||||
func NewLogr(handler slog.Handler) logr.Logger {
|
||||
if handler, ok := handler.(*slogHandler); ok {
|
||||
if handler.sink == nil {
|
||||
return logr.Discard()
|
||||
}
|
||||
return logr.New(handler.sink).V(int(handler.levelBias))
|
||||
}
|
||||
return logr.New(&slogSink{handler: handler})
|
||||
return logr.FromSlogHandler(handler)
|
||||
}
|
||||
|
||||
// NewSlogHandler returns a slog.Handler which writes to the same sink as the logr.Logger.
|
||||
//
|
||||
// The returned logger writes all records with level >= slog.LevelError as
|
||||
// error log entries with LogSink.Error, regardless of the verbosity level of
|
||||
// the logr.Logger:
|
||||
//
|
||||
// logger := <some logr.Logger with 0 as verbosity level>
|
||||
// slog.New(NewSlogHandler(logger.V(10))).Error(...) -> logSink.Error(...)
|
||||
//
|
||||
// The level of all other records gets reduced by the verbosity
|
||||
// level of the logr.Logger and the result is negated. If it happens
|
||||
// to be negative, then it gets replaced by zero because a LogSink
|
||||
// is not expected to handled negative levels:
|
||||
//
|
||||
// slog.New(NewSlogHandler(logger)).Debug(...) -> logger.GetSink().Info(level=4, ...)
|
||||
// slog.New(NewSlogHandler(logger)).Warning(...) -> logger.GetSink().Info(level=0, ...)
|
||||
// slog.New(NewSlogHandler(logger)).Info(...) -> logger.GetSink().Info(level=0, ...)
|
||||
// slog.New(NewSlogHandler(logger.V(4))).Info(...) -> logger.GetSink().Info(level=4, ...)
|
||||
// Deprecated: use [logr.ToSlogHandler] instead.
|
||||
func NewSlogHandler(logger logr.Logger) slog.Handler {
|
||||
if sink, ok := logger.GetSink().(*slogSink); ok && logger.GetV() == 0 {
|
||||
return sink.handler
|
||||
}
|
||||
return logr.ToSlogHandler(logger)
|
||||
}
|
||||
|
||||
handler := &slogHandler{sink: logger.GetSink(), levelBias: slog.Level(logger.GetV())}
|
||||
if slogSink, ok := handler.sink.(SlogSink); ok {
|
||||
handler.slogSink = slogSink
|
||||
}
|
||||
return handler
|
||||
// ToSlogHandler returns a slog.Handler which writes to the same sink as the logr.Logger.
|
||||
//
|
||||
// Deprecated: use [logr.ToSlogHandler] instead.
|
||||
func ToSlogHandler(logger logr.Logger) slog.Handler {
|
||||
return logr.ToSlogHandler(logger)
|
||||
}
|
||||
|
||||
// SlogSink is an optional interface that a LogSink can implement to support
|
||||
// logging through the slog.Logger or slog.Handler APIs better. It then should
|
||||
// also support special slog values like slog.Group. When used as a
|
||||
// slog.Handler, the advantages are:
|
||||
// logging through the slog.Logger or slog.Handler APIs better.
|
||||
//
|
||||
// - stack unwinding gets avoided in favor of logging the pre-recorded PC,
|
||||
// as intended by slog
|
||||
// - proper grouping of key/value pairs via WithGroup
|
||||
// - verbosity levels > slog.LevelInfo can be recorded
|
||||
// - less overhead
|
||||
//
|
||||
// Both APIs (logr.Logger and slog.Logger/Handler) then are supported equally
|
||||
// well. Developers can pick whatever API suits them better and/or mix
|
||||
// packages which use either API in the same binary with a common logging
|
||||
// implementation.
|
||||
//
|
||||
// This interface is necessary because the type implementing the LogSink
|
||||
// interface cannot also implement the slog.Handler interface due to the
|
||||
// different prototype of the common Enabled method.
|
||||
//
|
||||
// An implementation could support both interfaces in two different types, but then
|
||||
// additional interfaces would be needed to convert between those types in NewLogr
|
||||
// and NewSlogHandler.
|
||||
type SlogSink interface {
|
||||
logr.LogSink
|
||||
|
||||
Handle(ctx context.Context, record slog.Record) error
|
||||
WithAttrs(attrs []slog.Attr) SlogSink
|
||||
WithGroup(name string) SlogSink
|
||||
}
|
||||
// Deprecated: use [logr.SlogSink] instead.
|
||||
type SlogSink = logr.SlogSink
|
||||
|
|
|
@ -17,24 +17,22 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package slogr
|
||||
package logr
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
)
|
||||
|
||||
var (
|
||||
_ logr.LogSink = &slogSink{}
|
||||
_ logr.CallDepthLogSink = &slogSink{}
|
||||
_ Underlier = &slogSink{}
|
||||
_ LogSink = &slogSink{}
|
||||
_ CallDepthLogSink = &slogSink{}
|
||||
_ Underlier = &slogSink{}
|
||||
)
|
||||
|
||||
// Underlier is implemented by the LogSink returned by NewLogr.
|
||||
// Underlier is implemented by the LogSink returned by NewFromLogHandler.
|
||||
type Underlier interface {
|
||||
// GetUnderlying returns the Handler used by the LogSink.
|
||||
GetUnderlying() slog.Handler
|
||||
|
@ -54,7 +52,7 @@ type slogSink struct {
|
|||
handler slog.Handler
|
||||
}
|
||||
|
||||
func (l *slogSink) Init(info logr.RuntimeInfo) {
|
||||
func (l *slogSink) Init(info RuntimeInfo) {
|
||||
l.callDepth = info.CallDepth
|
||||
}
|
||||
|
||||
|
@ -62,7 +60,7 @@ func (l *slogSink) GetUnderlying() slog.Handler {
|
|||
return l.handler
|
||||
}
|
||||
|
||||
func (l *slogSink) WithCallDepth(depth int) logr.LogSink {
|
||||
func (l *slogSink) WithCallDepth(depth int) LogSink {
|
||||
newLogger := *l
|
||||
newLogger.callDepth += depth
|
||||
return &newLogger
|
||||
|
@ -93,18 +91,18 @@ func (l *slogSink) log(err error, msg string, level slog.Level, kvList ...interf
|
|||
record.AddAttrs(slog.Any(errKey, err))
|
||||
}
|
||||
record.Add(kvList...)
|
||||
l.handler.Handle(context.Background(), record)
|
||||
_ = l.handler.Handle(context.Background(), record)
|
||||
}
|
||||
|
||||
func (l slogSink) WithName(name string) logr.LogSink {
|
||||
func (l slogSink) WithName(name string) LogSink {
|
||||
if l.name != "" {
|
||||
l.name = l.name + "/"
|
||||
l.name += "/"
|
||||
}
|
||||
l.name += name
|
||||
return &l
|
||||
}
|
||||
|
||||
func (l slogSink) WithValues(kvList ...interface{}) logr.LogSink {
|
||||
func (l slogSink) WithValues(kvList ...interface{}) LogSink {
|
||||
l.handler = l.handler.WithAttrs(kvListToAttrs(kvList...))
|
||||
return &l
|
||||
}
|
|
@ -1,5 +1,12 @@
|
|||
# Changelog
|
||||
|
||||
## [1.5.0](https://github.com/google/uuid/compare/v1.4.0...v1.5.0) (2023-12-12)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Validate UUID without creating new UUID ([#141](https://github.com/google/uuid/issues/141)) ([9ee7366](https://github.com/google/uuid/commit/9ee7366e66c9ad96bab89139418a713dc584ae29))
|
||||
|
||||
## [1.4.0](https://github.com/google/uuid/compare/v1.3.1...v1.4.0) (2023-10-26)
|
||||
|
||||
|
||||
|
|
|
@ -108,12 +108,23 @@ func setClockSequence(seq int) {
|
|||
}
|
||||
|
||||
// Time returns the time in 100s of nanoseconds since 15 Oct 1582 encoded in
|
||||
// uuid. The time is only defined for version 1 and 2 UUIDs.
|
||||
// uuid. The time is only defined for version 1, 2, 6 and 7 UUIDs.
|
||||
func (uuid UUID) Time() Time {
|
||||
time := int64(binary.BigEndian.Uint32(uuid[0:4]))
|
||||
time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32
|
||||
time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48
|
||||
return Time(time)
|
||||
var t Time
|
||||
switch uuid.Version() {
|
||||
case 6:
|
||||
time := binary.BigEndian.Uint64(uuid[:8]) // Ignore uuid[6] version b0110
|
||||
t = Time(time)
|
||||
case 7:
|
||||
time := binary.BigEndian.Uint64(uuid[:8])
|
||||
t = Time((time>>16)*10000 + g1582ns100)
|
||||
default: // forward compatible
|
||||
time := int64(binary.BigEndian.Uint32(uuid[0:4]))
|
||||
time |= int64(binary.BigEndian.Uint16(uuid[4:6])) << 32
|
||||
time |= int64(binary.BigEndian.Uint16(uuid[6:8])&0xfff) << 48
|
||||
t = Time(time)
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
// ClockSequence returns the clock sequence encoded in uuid.
|
||||
|
|
|
@ -186,6 +186,59 @@ func Must(uuid UUID, err error) UUID {
|
|||
return uuid
|
||||
}
|
||||
|
||||
// Validate returns an error if s is not a properly formatted UUID in one of the following formats:
|
||||
// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||
// urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||
// xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
// {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
|
||||
// It returns an error if the format is invalid, otherwise nil.
|
||||
func Validate(s string) error {
|
||||
switch len(s) {
|
||||
// Standard UUID format
|
||||
case 36:
|
||||
|
||||
// UUID with "urn:uuid:" prefix
|
||||
case 36 + 9:
|
||||
if !strings.EqualFold(s[:9], "urn:uuid:") {
|
||||
return fmt.Errorf("invalid urn prefix: %q", s[:9])
|
||||
}
|
||||
s = s[9:]
|
||||
|
||||
// UUID enclosed in braces
|
||||
case 36 + 2:
|
||||
if s[0] != '{' || s[len(s)-1] != '}' {
|
||||
return fmt.Errorf("invalid bracketed UUID format")
|
||||
}
|
||||
s = s[1 : len(s)-1]
|
||||
|
||||
// UUID without hyphens
|
||||
case 32:
|
||||
for i := 0; i < len(s); i += 2 {
|
||||
_, ok := xtob(s[i], s[i+1])
|
||||
if !ok {
|
||||
return errors.New("invalid UUID format")
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
return invalidLengthError{len(s)}
|
||||
}
|
||||
|
||||
// Check for standard UUID format
|
||||
if len(s) == 36 {
|
||||
if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' {
|
||||
return errors.New("invalid UUID format")
|
||||
}
|
||||
for _, x := range []int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34} {
|
||||
if _, ok := xtob(s[x], s[x+1]); !ok {
|
||||
return errors.New("invalid UUID format")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// String returns the string form of uuid, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||
// , or "" if uuid is invalid.
|
||||
func (uuid UUID) String() string {
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
// Copyright 2023 Google Inc. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package uuid
|
||||
|
||||
import "encoding/binary"
|
||||
|
||||
// UUID version 6 is a field-compatible version of UUIDv1, reordered for improved DB locality.
|
||||
// It is expected that UUIDv6 will primarily be used in contexts where there are existing v1 UUIDs.
|
||||
// Systems that do not involve legacy UUIDv1 SHOULD consider using UUIDv7 instead.
|
||||
//
|
||||
// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#uuidv6
|
||||
//
|
||||
// NewV6 returns a Version 6 UUID based on the current NodeID and clock
|
||||
// sequence, and the current time. If the NodeID has not been set by SetNodeID
|
||||
// or SetNodeInterface then it will be set automatically. If the NodeID cannot
|
||||
// be set NewV6 set NodeID is random bits automatically . If clock sequence has not been set by
|
||||
// SetClockSequence then it will be set automatically. If GetTime fails to
|
||||
// return the current NewV6 returns Nil and an error.
|
||||
func NewV6() (UUID, error) {
|
||||
var uuid UUID
|
||||
now, seq, err := GetTime()
|
||||
if err != nil {
|
||||
return uuid, err
|
||||
}
|
||||
|
||||
/*
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| time_high |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| time_mid | time_low_and_version |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|clk_seq_hi_res | clk_seq_low | node (0-1) |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| node (2-5) |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
*/
|
||||
|
||||
binary.BigEndian.PutUint64(uuid[0:], uint64(now))
|
||||
binary.BigEndian.PutUint16(uuid[8:], seq)
|
||||
|
||||
uuid[6] = 0x60 | (uuid[6] & 0x0F)
|
||||
uuid[8] = 0x80 | (uuid[8] & 0x3F)
|
||||
|
||||
nodeMu.Lock()
|
||||
if nodeID == zeroID {
|
||||
setNodeInterface("")
|
||||
}
|
||||
copy(uuid[10:], nodeID[:])
|
||||
nodeMu.Unlock()
|
||||
|
||||
return uuid, nil
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
// Copyright 2023 Google Inc. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package uuid
|
||||
|
||||
import (
|
||||
"io"
|
||||
)
|
||||
|
||||
// UUID version 7 features a time-ordered value field derived from the widely
|
||||
// implemented and well known Unix Epoch timestamp source,
|
||||
// the number of milliseconds seconds since midnight 1 Jan 1970 UTC, leap seconds excluded.
|
||||
// As well as improved entropy characteristics over versions 1 or 6.
|
||||
//
|
||||
// see https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-03#name-uuid-version-7
|
||||
//
|
||||
// Implementations SHOULD utilize UUID version 7 over UUID version 1 and 6 if possible.
|
||||
//
|
||||
// NewV7 returns a Version 7 UUID based on the current time(Unix Epoch).
|
||||
// Uses the randomness pool if it was enabled with EnableRandPool.
|
||||
// On error, NewV7 returns Nil and an error
|
||||
func NewV7() (UUID, error) {
|
||||
uuid, err := NewRandom()
|
||||
if err != nil {
|
||||
return uuid, err
|
||||
}
|
||||
makeV7(uuid[:])
|
||||
return uuid, nil
|
||||
}
|
||||
|
||||
// NewV7FromReader returns a Version 7 UUID based on the current time(Unix Epoch).
|
||||
// it use NewRandomFromReader fill random bits.
|
||||
// On error, NewV7FromReader returns Nil and an error.
|
||||
func NewV7FromReader(r io.Reader) (UUID, error) {
|
||||
uuid, err := NewRandomFromReader(r)
|
||||
if err != nil {
|
||||
return uuid, err
|
||||
}
|
||||
|
||||
makeV7(uuid[:])
|
||||
return uuid, nil
|
||||
}
|
||||
|
||||
// makeV7 fill 48 bits time (uuid[0] - uuid[5]), set version b0111 (uuid[6])
|
||||
// uuid[8] already has the right version number (Variant is 10)
|
||||
// see function NewV7 and NewV7FromReader
|
||||
func makeV7(uuid []byte) {
|
||||
/*
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| unix_ts_ms |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| unix_ts_ms | ver | rand_a |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|var| rand_b |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| rand_b |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
*/
|
||||
_ = uuid[15] // bounds check
|
||||
|
||||
t := timeNow().UnixMilli()
|
||||
|
||||
uuid[0] = byte(t >> 40)
|
||||
uuid[1] = byte(t >> 32)
|
||||
uuid[2] = byte(t >> 24)
|
||||
uuid[3] = byte(t >> 16)
|
||||
uuid[4] = byte(t >> 8)
|
||||
uuid[5] = byte(t)
|
||||
|
||||
uuid[6] = 0x70 | (uuid[6] & 0x0F)
|
||||
// uuid[8] has already has right version
|
||||
}
|
|
@ -286,8 +286,8 @@ func (c *Client) Do(r *http.Request, v interface{}) (*Response, error) {
|
|||
return response, fmt.Errorf("hcloud: error reading response meta data: %s", err)
|
||||
}
|
||||
|
||||
if resp.StatusCode >= 400 && resp.StatusCode <= 599 {
|
||||
err = errorFromResponse(resp, body)
|
||||
if response.StatusCode >= 400 && response.StatusCode <= 599 {
|
||||
err = errorFromResponse(response, body)
|
||||
if err == nil {
|
||||
err = fmt.Errorf("hcloud: server responded with status code %d", resp.StatusCode)
|
||||
} else if IsError(err, ErrorCodeConflict) {
|
||||
|
@ -359,7 +359,7 @@ func dumpRequest(r *http.Request) ([]byte, error) {
|
|||
return dumpReq, nil
|
||||
}
|
||||
|
||||
func errorFromResponse(resp *http.Response, body []byte) error {
|
||||
func errorFromResponse(resp *Response, body []byte) error {
|
||||
if !strings.HasPrefix(resp.Header.Get("Content-Type"), "application/json") {
|
||||
return nil
|
||||
}
|
||||
|
@ -371,7 +371,10 @@ func errorFromResponse(resp *http.Response, body []byte) error {
|
|||
if respBody.Error.Code == "" && respBody.Error.Message == "" {
|
||||
return nil
|
||||
}
|
||||
return ErrorFromSchema(respBody.Error)
|
||||
|
||||
hcErr := ErrorFromSchema(respBody.Error)
|
||||
hcErr.response = resp
|
||||
return hcErr
|
||||
}
|
||||
|
||||
// Response represents a response from the API. It embeds http.Response.
|
||||
|
|
|
@ -94,12 +94,19 @@ type Error struct {
|
|||
Code ErrorCode
|
||||
Message string
|
||||
Details interface{}
|
||||
|
||||
response *Response
|
||||
}
|
||||
|
||||
func (e Error) Error() string {
|
||||
return fmt.Sprintf("%s (%s)", e.Message, e.Code)
|
||||
}
|
||||
|
||||
// Response returns the [Response] that contained the error if available.
|
||||
func (e Error) Response() *Response {
|
||||
return e.response
|
||||
}
|
||||
|
||||
// ErrorDetailsInvalidInput contains the details of an 'invalid_input' error.
|
||||
type ErrorDetailsInvalidInput struct {
|
||||
Fields []ErrorDetailsInvalidInputField
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
package hcloud
|
||||
|
||||
// Version is the library's version following Semantic Versioning.
|
||||
const Version = "1.52.0" // x-release-please-version
|
||||
const Version = "1.53.0" // x-release-please-version
|
||||
|
|
|
@ -19,9 +19,10 @@ import (
|
|||
"errors"
|
||||
"io"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
// TODO: Give error package name prefix in next minor release.
|
||||
var errInvalidVarint = errors.New("invalid varint32 encountered")
|
||||
|
||||
// ReadDelimited decodes a message from the provided length-delimited stream,
|
||||
|
@ -36,6 +37,12 @@ var errInvalidVarint = errors.New("invalid varint32 encountered")
|
|||
// of the stream has been reached in doing so. In that case, any subsequent
|
||||
// calls return (0, io.EOF).
|
||||
func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) {
|
||||
// TODO: Consider allowing the caller to specify a decode buffer in the
|
||||
// next major version.
|
||||
|
||||
// TODO: Consider using error wrapping to annotate error state in pass-
|
||||
// through cases in the next minor version.
|
||||
|
||||
// Per AbstractParser#parsePartialDelimitedFrom with
|
||||
// CodedInputStream#readRawVarint32.
|
||||
var headerBuf [binary.MaxVarintLen32]byte
|
||||
|
@ -53,15 +60,14 @@ func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) {
|
|||
if err != nil {
|
||||
return bytesRead, err
|
||||
}
|
||||
// A Reader should not return (0, nil), but if it does,
|
||||
// it should be treated as no-op (according to the
|
||||
// Reader contract). So let's go on...
|
||||
// A Reader should not return (0, nil); but if it does, it should
|
||||
// be treated as no-op according to the Reader contract.
|
||||
continue
|
||||
}
|
||||
bytesRead += newBytesRead
|
||||
// Now present everything read so far to the varint decoder and
|
||||
// see if a varint can be decoded already.
|
||||
messageLength, varIntBytes = proto.DecodeVarint(headerBuf[:bytesRead])
|
||||
messageLength, varIntBytes = binary.Uvarint(headerBuf[:bytesRead])
|
||||
}
|
||||
|
||||
messageBuf := make([]byte, messageLength)
|
|
@ -18,7 +18,7 @@ import (
|
|||
"encoding/binary"
|
||||
"io"
|
||||
|
||||
"github.com/golang/protobuf/proto"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
// WriteDelimited encodes and dumps a message to the provided writer prefixed
|
||||
|
@ -28,6 +28,9 @@ import (
|
|||
// number of bytes written and any applicable error. This is roughly
|
||||
// equivalent to the companion Java API's MessageLite#writeDelimitedTo.
|
||||
func WriteDelimited(w io.Writer, m proto.Message) (n int, err error) {
|
||||
// TODO: Consider allowing the caller to specify an encode buffer in the
|
||||
// next major version.
|
||||
|
||||
buffer, err := proto.Marshal(m)
|
||||
if err != nil {
|
||||
return 0, err
|
|
@ -475,6 +475,9 @@ type HistogramOpts struct {
|
|||
|
||||
// now is for testing purposes, by default it's time.Now.
|
||||
now func() time.Time
|
||||
|
||||
// afterFunc is for testing purposes, by default it's time.AfterFunc.
|
||||
afterFunc func(time.Duration, func()) *time.Timer
|
||||
}
|
||||
|
||||
// HistogramVecOpts bundles the options to create a HistogramVec metric.
|
||||
|
@ -526,7 +529,9 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr
|
|||
if opts.now == nil {
|
||||
opts.now = time.Now
|
||||
}
|
||||
|
||||
if opts.afterFunc == nil {
|
||||
opts.afterFunc = time.AfterFunc
|
||||
}
|
||||
h := &histogram{
|
||||
desc: desc,
|
||||
upperBounds: opts.Buckets,
|
||||
|
@ -536,6 +541,7 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr
|
|||
nativeHistogramMinResetDuration: opts.NativeHistogramMinResetDuration,
|
||||
lastResetTime: opts.now(),
|
||||
now: opts.now,
|
||||
afterFunc: opts.afterFunc,
|
||||
}
|
||||
if len(h.upperBounds) == 0 && opts.NativeHistogramBucketFactor <= 1 {
|
||||
h.upperBounds = DefBuckets
|
||||
|
@ -716,9 +722,16 @@ type histogram struct {
|
|||
nativeHistogramMinResetDuration time.Duration
|
||||
// lastResetTime is protected by mtx. It is also used as created timestamp.
|
||||
lastResetTime time.Time
|
||||
// resetScheduled is protected by mtx. It is true if a reset is
|
||||
// scheduled for a later time (when nativeHistogramMinResetDuration has
|
||||
// passed).
|
||||
resetScheduled bool
|
||||
|
||||
// now is for testing purposes, by default it's time.Now.
|
||||
now func() time.Time
|
||||
|
||||
// afterFunc is for testing purposes, by default it's time.AfterFunc.
|
||||
afterFunc func(time.Duration, func()) *time.Timer
|
||||
}
|
||||
|
||||
func (h *histogram) Desc() *Desc {
|
||||
|
@ -874,21 +887,31 @@ func (h *histogram) limitBuckets(counts *histogramCounts, value float64, bucket
|
|||
if h.maybeReset(hotCounts, coldCounts, coldIdx, value, bucket) {
|
||||
return
|
||||
}
|
||||
// One of the other strategies will happen. To undo what they will do as
|
||||
// soon as enough time has passed to satisfy
|
||||
// h.nativeHistogramMinResetDuration, schedule a reset at the right time
|
||||
// if we haven't done so already.
|
||||
if h.nativeHistogramMinResetDuration > 0 && !h.resetScheduled {
|
||||
h.resetScheduled = true
|
||||
h.afterFunc(h.nativeHistogramMinResetDuration-h.now().Sub(h.lastResetTime), h.reset)
|
||||
}
|
||||
|
||||
if h.maybeWidenZeroBucket(hotCounts, coldCounts) {
|
||||
return
|
||||
}
|
||||
h.doubleBucketWidth(hotCounts, coldCounts)
|
||||
}
|
||||
|
||||
// maybeReset resets the whole histogram if at least h.nativeHistogramMinResetDuration
|
||||
// has been passed. It returns true if the histogram has been reset. The caller
|
||||
// must have locked h.mtx.
|
||||
// maybeReset resets the whole histogram if at least
|
||||
// h.nativeHistogramMinResetDuration has been passed. It returns true if the
|
||||
// histogram has been reset. The caller must have locked h.mtx.
|
||||
func (h *histogram) maybeReset(
|
||||
hot, cold *histogramCounts, coldIdx uint64, value float64, bucket int,
|
||||
) bool {
|
||||
// We are using the possibly mocked h.now() rather than
|
||||
// time.Since(h.lastResetTime) to enable testing.
|
||||
if h.nativeHistogramMinResetDuration == 0 ||
|
||||
if h.nativeHistogramMinResetDuration == 0 || // No reset configured.
|
||||
h.resetScheduled || // Do not interefere if a reset is already scheduled.
|
||||
h.now().Sub(h.lastResetTime) < h.nativeHistogramMinResetDuration {
|
||||
return false
|
||||
}
|
||||
|
@ -906,6 +929,29 @@ func (h *histogram) maybeReset(
|
|||
return true
|
||||
}
|
||||
|
||||
// reset resets the whole histogram. It locks h.mtx itself, i.e. it has to be
|
||||
// called without having locked h.mtx.
|
||||
func (h *histogram) reset() {
|
||||
h.mtx.Lock()
|
||||
defer h.mtx.Unlock()
|
||||
|
||||
n := atomic.LoadUint64(&h.countAndHotIdx)
|
||||
hotIdx := n >> 63
|
||||
coldIdx := (^n) >> 63
|
||||
hot := h.counts[hotIdx]
|
||||
cold := h.counts[coldIdx]
|
||||
// Completely reset coldCounts.
|
||||
h.resetCounts(cold)
|
||||
// Make coldCounts the new hot counts while resetting countAndHotIdx.
|
||||
n = atomic.SwapUint64(&h.countAndHotIdx, coldIdx<<63)
|
||||
count := n & ((1 << 63) - 1)
|
||||
waitForCooldown(count, hot)
|
||||
// Finally, reset the formerly hot counts, too.
|
||||
h.resetCounts(hot)
|
||||
h.lastResetTime = h.now()
|
||||
h.resetScheduled = false
|
||||
}
|
||||
|
||||
// maybeWidenZeroBucket widens the zero bucket until it includes the existing
|
||||
// buckets closest to the zero bucket (which could be two, if an equidistant
|
||||
// negative and a positive bucket exists, but usually it's only one bucket to be
|
||||
|
|
|
@ -165,6 +165,8 @@ func validateValuesInLabels(labels Labels, expectedNumberOfValues int) error {
|
|||
|
||||
func validateLabelValues(vals []string, expectedNumberOfValues int) error {
|
||||
if len(vals) != expectedNumberOfValues {
|
||||
// The call below makes vals escape, copy them to avoid that.
|
||||
vals := append([]string(nil), vals...)
|
||||
return fmt.Errorf(
|
||||
"%w: expected %d label values but got %d in %#v",
|
||||
errInconsistentCardinality, expectedNumberOfValues,
|
||||
|
|
4
vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go
generated
vendored
4
vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go
generated
vendored
|
@ -11,8 +11,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build !windows && !js
|
||||
// +build !windows,!js
|
||||
//go:build !windows && !js && !wasip1
|
||||
// +build !windows,!js,!wasip1
|
||||
|
||||
package prometheus
|
||||
|
||||
|
|
26
vendor/github.com/prometheus/client_golang/prometheus/process_collector_wasip1.go
generated
vendored
Normal file
26
vendor/github.com/prometheus/client_golang/prometheus/process_collector_wasip1.go
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
// Copyright 2023 The Prometheus 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.
|
||||
|
||||
//go:build wasip1
|
||||
// +build wasip1
|
||||
|
||||
package prometheus
|
||||
|
||||
func canCollectProcess() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (*processCollector) processCollect(chan<- Metric) {
|
||||
// noop on this platform
|
||||
return
|
||||
}
|
|
@ -474,6 +474,9 @@ type Histogram struct {
|
|||
NegativeDelta []int64 `protobuf:"zigzag64,10,rep,name=negative_delta,json=negativeDelta" json:"negative_delta,omitempty"` // Count delta of each bucket compared to previous one (or to zero for 1st bucket).
|
||||
NegativeCount []float64 `protobuf:"fixed64,11,rep,name=negative_count,json=negativeCount" json:"negative_count,omitempty"` // Absolute count of each bucket.
|
||||
// Positive buckets for the native histogram.
|
||||
// Use a no-op span (offset 0, length 0) for a native histogram without any
|
||||
// observations yet and with a zero_threshold of 0. Otherwise, it would be
|
||||
// indistinguishable from a classic histogram.
|
||||
PositiveSpan []*BucketSpan `protobuf:"bytes,12,rep,name=positive_span,json=positiveSpan" json:"positive_span,omitempty"`
|
||||
// Use either "positive_delta" or "positive_count", the former for
|
||||
// regular histograms with integer counts, the latter for float
|
||||
|
|
|
@ -22,7 +22,7 @@ import (
|
|||
|
||||
dto "github.com/prometheus/client_model/go"
|
||||
|
||||
"github.com/matttproud/golang_protobuf_extensions/pbutil"
|
||||
"github.com/matttproud/golang_protobuf_extensions/v2/pbutil"
|
||||
"github.com/prometheus/common/model"
|
||||
)
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import (
|
|||
"io"
|
||||
"net/http"
|
||||
|
||||
"github.com/matttproud/golang_protobuf_extensions/pbutil"
|
||||
"github.com/matttproud/golang_protobuf_extensions/v2/pbutil"
|
||||
"github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"
|
||||
"google.golang.org/protobuf/encoding/prototext"
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_
|
|||
SKIP_GOLANGCI_LINT :=
|
||||
GOLANGCI_LINT :=
|
||||
GOLANGCI_LINT_OPTS ?=
|
||||
GOLANGCI_LINT_VERSION ?= v1.53.3
|
||||
GOLANGCI_LINT_VERSION ?= v1.54.2
|
||||
# golangci-lint only supports linux, darwin and windows platforms on i386/amd64.
|
||||
# windows isn't included here because of the path separator being different.
|
||||
ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin))
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build netbsd || openbsd || solaris || windows || nostatfs
|
||||
// +build netbsd openbsd solaris windows nostatfs
|
||||
//go:build !freebsd && !linux
|
||||
// +build !freebsd,!linux
|
||||
|
||||
package procfs
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build !netbsd && !openbsd && !solaris && !windows && !nostatfs
|
||||
// +build !netbsd,!openbsd,!solaris,!windows,!nostatfs
|
||||
//go:build freebsd || linux
|
||||
// +build freebsd linux
|
||||
|
||||
package procfs
|
||||
|
||||
|
|
|
@ -44,6 +44,14 @@ const (
|
|||
|
||||
fieldTransport11TCPLen = 13
|
||||
fieldTransport11UDPLen = 10
|
||||
|
||||
// kernel version >= 4.14 MaxLen
|
||||
// See: https://elixir.bootlin.com/linux/v6.4.8/source/net/sunrpc/xprtrdma/xprt_rdma.h#L393
|
||||
fieldTransport11RDMAMaxLen = 28
|
||||
|
||||
// kernel version <= 4.2 MinLen
|
||||
// See: https://elixir.bootlin.com/linux/v4.2.8/source/net/sunrpc/xprtrdma/xprt_rdma.h#L331
|
||||
fieldTransport11RDMAMinLen = 20
|
||||
)
|
||||
|
||||
// A Mount is a device mount parsed from /proc/[pid]/mountstats.
|
||||
|
@ -233,6 +241,33 @@ type NFSTransportStats struct {
|
|||
// A running counter, incremented on each request as the current size of the
|
||||
// pending queue.
|
||||
CumulativePendingQueue uint64
|
||||
|
||||
// Stats below only available with stat version 1.1.
|
||||
// Transport over RDMA
|
||||
|
||||
// accessed when sending a call
|
||||
ReadChunkCount uint64
|
||||
WriteChunkCount uint64
|
||||
ReplyChunkCount uint64
|
||||
TotalRdmaRequest uint64
|
||||
|
||||
// rarely accessed error counters
|
||||
PullupCopyCount uint64
|
||||
HardwayRegisterCount uint64
|
||||
FailedMarshalCount uint64
|
||||
BadReplyCount uint64
|
||||
MrsRecovered uint64
|
||||
MrsOrphaned uint64
|
||||
MrsAllocated uint64
|
||||
EmptySendctxQ uint64
|
||||
|
||||
// accessed when receiving a reply
|
||||
TotalRdmaReply uint64
|
||||
FixupCopyCount uint64
|
||||
ReplyWaitsForSend uint64
|
||||
LocalInvNeeded uint64
|
||||
NomsgCallCount uint64
|
||||
BcallCount uint64
|
||||
}
|
||||
|
||||
// parseMountStats parses a /proc/[pid]/mountstats file and returns a slice
|
||||
|
@ -587,14 +622,17 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats
|
|||
expectedLength = fieldTransport11TCPLen
|
||||
} else if protocol == "udp" {
|
||||
expectedLength = fieldTransport11UDPLen
|
||||
} else if protocol == "rdma" {
|
||||
expectedLength = fieldTransport11RDMAMinLen
|
||||
} else {
|
||||
return nil, fmt.Errorf("%w: invalid NFS protocol \"%s\" in stats 1.1 statement: %v", ErrFileParse, protocol, ss)
|
||||
}
|
||||
if len(ss) != expectedLength {
|
||||
return nil, fmt.Errorf("%w: invalid NFS transport stats 1.1 statement: %v", ErrFileParse, ss)
|
||||
if (len(ss) != expectedLength && (protocol == "tcp" || protocol == "udp")) ||
|
||||
(protocol == "rdma" && len(ss) < expectedLength) {
|
||||
return nil, fmt.Errorf("%w: invalid NFS transport stats 1.1 statement: %v, protocol: %v", ErrFileParse, ss, protocol)
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("%s: Unrecognized NFS transport stats version: %q", ErrFileParse, statVersion)
|
||||
return nil, fmt.Errorf("%s: Unrecognized NFS transport stats version: %q, protocol: %v", ErrFileParse, statVersion, protocol)
|
||||
}
|
||||
|
||||
// Allocate enough for v1.1 stats since zero value for v1.1 stats will be okay
|
||||
|
@ -604,7 +642,9 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats
|
|||
// Note: slice length must be set to length of v1.1 stats to avoid a panic when
|
||||
// only v1.0 stats are present.
|
||||
// See: https://github.com/prometheus/node_exporter/issues/571.
|
||||
ns := make([]uint64, fieldTransport11TCPLen)
|
||||
//
|
||||
// Note: NFS Over RDMA slice length is fieldTransport11RDMAMaxLen
|
||||
ns := make([]uint64, fieldTransport11RDMAMaxLen+3)
|
||||
for i, s := range ss {
|
||||
n, err := strconv.ParseUint(s, 10, 64)
|
||||
if err != nil {
|
||||
|
@ -622,9 +662,14 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats
|
|||
// we set them to 0 here.
|
||||
if protocol == "udp" {
|
||||
ns = append(ns[:2], append(make([]uint64, 3), ns[2:]...)...)
|
||||
} else if protocol == "tcp" {
|
||||
ns = append(ns[:fieldTransport11TCPLen], make([]uint64, fieldTransport11RDMAMaxLen-fieldTransport11TCPLen+3)...)
|
||||
} else if protocol == "rdma" {
|
||||
ns = append(ns[:fieldTransport10TCPLen], append(make([]uint64, 3), ns[fieldTransport10TCPLen:]...)...)
|
||||
}
|
||||
|
||||
return &NFSTransportStats{
|
||||
// NFS xprt over tcp or udp
|
||||
Protocol: protocol,
|
||||
Port: ns[0],
|
||||
Bind: ns[1],
|
||||
|
@ -636,8 +681,32 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats
|
|||
BadTransactionIDs: ns[7],
|
||||
CumulativeActiveRequests: ns[8],
|
||||
CumulativeBacklog: ns[9],
|
||||
MaximumRPCSlotsUsed: ns[10],
|
||||
CumulativeSendingQueue: ns[11],
|
||||
CumulativePendingQueue: ns[12],
|
||||
|
||||
// NFS xprt over tcp or udp
|
||||
// And statVersion 1.1
|
||||
MaximumRPCSlotsUsed: ns[10],
|
||||
CumulativeSendingQueue: ns[11],
|
||||
CumulativePendingQueue: ns[12],
|
||||
|
||||
// NFS xprt over rdma
|
||||
// And stat Version 1.1
|
||||
ReadChunkCount: ns[13],
|
||||
WriteChunkCount: ns[14],
|
||||
ReplyChunkCount: ns[15],
|
||||
TotalRdmaRequest: ns[16],
|
||||
PullupCopyCount: ns[17],
|
||||
HardwayRegisterCount: ns[18],
|
||||
FailedMarshalCount: ns[19],
|
||||
BadReplyCount: ns[20],
|
||||
MrsRecovered: ns[21],
|
||||
MrsOrphaned: ns[22],
|
||||
MrsAllocated: ns[23],
|
||||
EmptySendctxQ: ns[24],
|
||||
TotalRdmaReply: ns[25],
|
||||
FixupCopyCount: ns[26],
|
||||
ReplyWaitsForSend: ns[27],
|
||||
LocalInvNeeded: ns[28],
|
||||
NomsgCallCount: ns[29],
|
||||
BcallCount: ns[30],
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ var (
|
|||
rPos = regexp.MustCompile(`^pos:\s+(\d+)$`)
|
||||
rFlags = regexp.MustCompile(`^flags:\s+(\d+)$`)
|
||||
rMntID = regexp.MustCompile(`^mnt_id:\s+(\d+)$`)
|
||||
rIno = regexp.MustCompile(`^ino:\s+(\d+)$`)
|
||||
rInotify = regexp.MustCompile(`^inotify`)
|
||||
rInotifyParts = regexp.MustCompile(`^inotify\s+wd:([0-9a-f]+)\s+ino:([0-9a-f]+)\s+sdev:([0-9a-f]+)(?:\s+mask:([0-9a-f]+))?`)
|
||||
)
|
||||
|
@ -40,6 +41,8 @@ type ProcFDInfo struct {
|
|||
Flags string
|
||||
// Mount point ID
|
||||
MntID string
|
||||
// Inode number
|
||||
Ino string
|
||||
// List of inotify lines (structured) in the fdinfo file (kernel 3.8+ only)
|
||||
InotifyInfos []InotifyInfo
|
||||
}
|
||||
|
@ -51,7 +54,7 @@ func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
var text, pos, flags, mntid string
|
||||
var text, pos, flags, mntid, ino string
|
||||
var inotify []InotifyInfo
|
||||
|
||||
scanner := bufio.NewScanner(bytes.NewReader(data))
|
||||
|
@ -63,6 +66,8 @@ func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {
|
|||
flags = rFlags.FindStringSubmatch(text)[1]
|
||||
} else if rMntID.MatchString(text) {
|
||||
mntid = rMntID.FindStringSubmatch(text)[1]
|
||||
} else if rIno.MatchString(text) {
|
||||
ino = rIno.FindStringSubmatch(text)[1]
|
||||
} else if rInotify.MatchString(text) {
|
||||
newInotify, err := parseInotifyInfo(text)
|
||||
if err != nil {
|
||||
|
@ -77,6 +82,7 @@ func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {
|
|||
Pos: pos,
|
||||
Flags: flags,
|
||||
MntID: mntid,
|
||||
Ino: ino,
|
||||
InotifyInfos: inotify,
|
||||
}
|
||||
|
||||
|
|
|
@ -63,17 +63,17 @@ type ProcMap struct {
|
|||
// parseDevice parses the device token of a line and converts it to a dev_t
|
||||
// (mkdev) like structure.
|
||||
func parseDevice(s string) (uint64, error) {
|
||||
toks := strings.Split(s, ":")
|
||||
if len(toks) < 2 {
|
||||
return 0, fmt.Errorf("%w: unexpected number of fields, expected: 2, got: %q", ErrFileParse, len(toks))
|
||||
i := strings.Index(s, ":")
|
||||
if i == -1 {
|
||||
return 0, fmt.Errorf("%w: expected separator `:` in %s", ErrFileParse, s)
|
||||
}
|
||||
|
||||
major, err := strconv.ParseUint(toks[0], 16, 0)
|
||||
major, err := strconv.ParseUint(s[0:i], 16, 0)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
minor, err := strconv.ParseUint(toks[1], 16, 0)
|
||||
minor, err := strconv.ParseUint(s[i+1:], 16, 0)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
@ -93,17 +93,17 @@ func parseAddress(s string) (uintptr, error) {
|
|||
|
||||
// parseAddresses parses the start-end address.
|
||||
func parseAddresses(s string) (uintptr, uintptr, error) {
|
||||
toks := strings.Split(s, "-")
|
||||
if len(toks) < 2 {
|
||||
return 0, 0, fmt.Errorf("%w: invalid address", ErrFileParse)
|
||||
idx := strings.Index(s, "-")
|
||||
if idx == -1 {
|
||||
return 0, 0, fmt.Errorf("%w: expected separator `-` in %s", ErrFileParse, s)
|
||||
}
|
||||
|
||||
saddr, err := parseAddress(toks[0])
|
||||
saddr, err := parseAddress(s[0:idx])
|
||||
if err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
|
||||
eaddr, err := parseAddress(toks[1])
|
||||
eaddr, err := parseAddress(s[idx+1:])
|
||||
if err != nil {
|
||||
return 0, 0, err
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ import (
|
|||
)
|
||||
|
||||
// ProcStatus provides status information about the process,
|
||||
// read from /proc/[pid]/stat.
|
||||
// read from /proc/[pid]/status.
|
||||
type ProcStatus struct {
|
||||
// The process ID.
|
||||
PID int
|
||||
|
@ -32,6 +32,8 @@ type ProcStatus struct {
|
|||
|
||||
// Thread group ID.
|
||||
TGID int
|
||||
// List of Pid namespace.
|
||||
NSpids []uint64
|
||||
|
||||
// Peak virtual memory size.
|
||||
VmPeak uint64 // nolint:revive
|
||||
|
@ -127,6 +129,8 @@ func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintByt
|
|||
copy(s.UIDs[:], strings.Split(vString, "\t"))
|
||||
case "Gid":
|
||||
copy(s.GIDs[:], strings.Split(vString, "\t"))
|
||||
case "NSpid":
|
||||
s.NSpids = calcNSPidsList(vString)
|
||||
case "VmPeak":
|
||||
s.VmPeak = vUintBytes
|
||||
case "VmSize":
|
||||
|
@ -200,3 +204,18 @@ func calcCpusAllowedList(cpuString string) []uint64 {
|
|||
sort.Slice(g, func(i, j int) bool { return g[i] < g[j] })
|
||||
return g
|
||||
}
|
||||
|
||||
func calcNSPidsList(nspidsString string) []uint64 {
|
||||
s := strings.Split(nspidsString, " ")
|
||||
var nspids []uint64
|
||||
|
||||
for _, nspid := range s {
|
||||
nspid, _ := strconv.ParseUint(nspid, 10, 64)
|
||||
if nspid == 0 {
|
||||
continue
|
||||
}
|
||||
nspids = append(nspids, nspid)
|
||||
}
|
||||
|
||||
return nspids
|
||||
}
|
||||
|
|
1250
vendor/github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/block_sdk.go
generated
vendored
Normal file
1250
vendor/github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/block_sdk.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
59
vendor/github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/snapshot_utils.go
generated
vendored
Normal file
59
vendor/github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/snapshot_utils.go
generated
vendored
Normal file
|
@ -0,0 +1,59 @@
|
|||
package block
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/async"
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/errors"
|
||||
"github.com/scaleway/scaleway-sdk-go/scw"
|
||||
)
|
||||
|
||||
// WaitForSnapshotRequest is used by WaitForSnapshot method.
|
||||
type WaitForSnapshotRequest struct {
|
||||
SnapshotID string
|
||||
Zone scw.Zone
|
||||
Timeout *time.Duration
|
||||
RetryInterval *time.Duration
|
||||
}
|
||||
|
||||
// WaitForSnapshot wait for the snapshot to be in a "terminal state" before returning.
|
||||
func (s *API) WaitForSnapshot(req *WaitForSnapshotRequest, opts ...scw.RequestOption) (*Snapshot, error) {
|
||||
timeout := defaultTimeout
|
||||
if req.Timeout != nil {
|
||||
timeout = *req.Timeout
|
||||
}
|
||||
retryInterval := defaultRetryInterval
|
||||
if req.RetryInterval != nil {
|
||||
retryInterval = *req.RetryInterval
|
||||
}
|
||||
|
||||
terminalStatus := map[SnapshotStatus]struct{}{
|
||||
SnapshotStatusAvailable: {},
|
||||
SnapshotStatusInUse: {},
|
||||
SnapshotStatusError: {},
|
||||
SnapshotStatusLocked: {},
|
||||
SnapshotStatusDeleted: {},
|
||||
}
|
||||
|
||||
snapshot, err := async.WaitSync(&async.WaitSyncConfig{
|
||||
Get: func() (interface{}, bool, error) {
|
||||
res, err := s.GetSnapshot(&GetSnapshotRequest{
|
||||
SnapshotID: req.SnapshotID,
|
||||
Zone: req.Zone,
|
||||
}, opts...)
|
||||
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
_, isTerminal := terminalStatus[res.Status]
|
||||
|
||||
return res, isTerminal, err
|
||||
},
|
||||
Timeout: timeout,
|
||||
IntervalStrategy: async.LinearIntervalStrategy(retryInterval),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "waiting for snapshot failed")
|
||||
}
|
||||
return snapshot.(*Snapshot), nil
|
||||
}
|
149
vendor/github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/volume_utils.go
generated
vendored
Normal file
149
vendor/github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1/volume_utils.go
generated
vendored
Normal file
|
@ -0,0 +1,149 @@
|
|||
package block
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/async"
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/errors"
|
||||
"github.com/scaleway/scaleway-sdk-go/scw"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultTimeout = 5 * time.Minute
|
||||
defaultRetryInterval = 5 * time.Second
|
||||
)
|
||||
|
||||
// WaitForVolumeRequest is used by WaitForVolume method.
|
||||
type WaitForVolumeRequest struct {
|
||||
VolumeID string
|
||||
Zone scw.Zone
|
||||
Timeout *time.Duration
|
||||
RetryInterval *time.Duration
|
||||
|
||||
// If set, will wait until this specific status has been reached or the
|
||||
// volume has an error status. This is useful when we need to wait for
|
||||
// the volume to transition from "in_use" to "available".
|
||||
TerminalStatus *VolumeStatus
|
||||
}
|
||||
|
||||
// WaitForVolume waits for the volume to be in a "terminal state" before returning.
|
||||
func (s *API) WaitForVolume(req *WaitForVolumeRequest, opts ...scw.RequestOption) (*Volume, error) {
|
||||
timeout := defaultTimeout
|
||||
if req.Timeout != nil {
|
||||
timeout = *req.Timeout
|
||||
}
|
||||
retryInterval := defaultRetryInterval
|
||||
if req.RetryInterval != nil {
|
||||
retryInterval = *req.RetryInterval
|
||||
}
|
||||
|
||||
terminalStatus := map[VolumeStatus]struct{}{
|
||||
VolumeStatusError: {},
|
||||
VolumeStatusLocked: {},
|
||||
VolumeStatusDeleted: {},
|
||||
}
|
||||
|
||||
if req.TerminalStatus != nil {
|
||||
terminalStatus[*req.TerminalStatus] = struct{}{}
|
||||
} else {
|
||||
terminalStatus[VolumeStatusAvailable] = struct{}{}
|
||||
terminalStatus[VolumeStatusInUse] = struct{}{}
|
||||
}
|
||||
|
||||
volume, err := async.WaitSync(&async.WaitSyncConfig{
|
||||
Get: func() (interface{}, bool, error) {
|
||||
res, err := s.GetVolume(&GetVolumeRequest{
|
||||
VolumeID: req.VolumeID,
|
||||
Zone: req.Zone,
|
||||
}, opts...)
|
||||
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
_, isTerminal := terminalStatus[res.Status]
|
||||
|
||||
return res, isTerminal, err
|
||||
},
|
||||
Timeout: timeout,
|
||||
IntervalStrategy: async.LinearIntervalStrategy(retryInterval),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "waiting for volume failed")
|
||||
}
|
||||
return volume.(*Volume), nil
|
||||
}
|
||||
|
||||
// WaitForVolumeAndReferencesRequest is used by WaitForVolumeAndReferences method.
|
||||
type WaitForVolumeAndReferencesRequest struct {
|
||||
VolumeID string
|
||||
Zone scw.Zone
|
||||
Timeout *time.Duration
|
||||
RetryInterval *time.Duration
|
||||
|
||||
VolumeTerminalStatus *VolumeStatus
|
||||
ReferenceTerminalStatus *ReferenceStatus
|
||||
}
|
||||
|
||||
// WaitForVolumeAndReferences waits for the volume and its references to be in a "terminal state" before returning.
|
||||
func (s *API) WaitForVolumeAndReferences(req *WaitForVolumeAndReferencesRequest, opts ...scw.RequestOption) (*Volume, error) {
|
||||
timeout := defaultTimeout
|
||||
if req.Timeout != nil {
|
||||
timeout = *req.Timeout
|
||||
}
|
||||
retryInterval := defaultRetryInterval
|
||||
if req.RetryInterval != nil {
|
||||
retryInterval = *req.RetryInterval
|
||||
}
|
||||
|
||||
terminalStatus := map[VolumeStatus]struct{}{
|
||||
VolumeStatusError: {},
|
||||
VolumeStatusLocked: {},
|
||||
VolumeStatusDeleted: {},
|
||||
}
|
||||
if req.VolumeTerminalStatus != nil {
|
||||
terminalStatus[*req.VolumeTerminalStatus] = struct{}{}
|
||||
} else {
|
||||
terminalStatus[VolumeStatusAvailable] = struct{}{}
|
||||
terminalStatus[VolumeStatusInUse] = struct{}{}
|
||||
}
|
||||
|
||||
referenceTerminalStatus := map[ReferenceStatus]struct{}{
|
||||
ReferenceStatusError: {},
|
||||
}
|
||||
if req.ReferenceTerminalStatus != nil {
|
||||
referenceTerminalStatus[*req.ReferenceTerminalStatus] = struct{}{}
|
||||
} else {
|
||||
referenceTerminalStatus[ReferenceStatusAttached] = struct{}{}
|
||||
referenceTerminalStatus[ReferenceStatusDetached] = struct{}{}
|
||||
}
|
||||
|
||||
volume, err := async.WaitSync(&async.WaitSyncConfig{
|
||||
Get: func() (interface{}, bool, error) {
|
||||
volume, err := s.GetVolume(&GetVolumeRequest{
|
||||
VolumeID: req.VolumeID,
|
||||
Zone: req.Zone,
|
||||
}, opts...)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
referencesAreTerminal := true
|
||||
|
||||
for _, reference := range volume.References {
|
||||
_, referenceIsTerminal := referenceTerminalStatus[reference.Status]
|
||||
referencesAreTerminal = referencesAreTerminal && referenceIsTerminal
|
||||
}
|
||||
|
||||
_, isTerminal := terminalStatus[volume.Status]
|
||||
|
||||
return volume, isTerminal && referencesAreTerminal, nil
|
||||
},
|
||||
Timeout: timeout,
|
||||
IntervalStrategy: async.LinearIntervalStrategy(retryInterval),
|
||||
})
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "waiting for Volume failed")
|
||||
}
|
||||
|
||||
return volume.(*Volume), nil
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -25,6 +25,7 @@ const (
|
|||
// WaitForDNSZoneRequest is used by WaitForDNSZone method.
|
||||
type WaitForDNSZoneRequest struct {
|
||||
DNSZone string
|
||||
DNSZones []string
|
||||
Timeout *time.Duration
|
||||
RetryInterval *time.Duration
|
||||
}
|
||||
|
@ -51,10 +52,16 @@ func (s *API) WaitForDNSZone(
|
|||
|
||||
dns, err := async.WaitSync(&async.WaitSyncConfig{
|
||||
Get: func() (interface{}, bool, error) {
|
||||
listReq := &ListDNSZonesRequest{
|
||||
DNSZones: req.DNSZones,
|
||||
}
|
||||
|
||||
if req.DNSZone != "" {
|
||||
listReq.DNSZone = &req.DNSZone
|
||||
}
|
||||
|
||||
// listing dns zones and take the first one
|
||||
DNSZones, err := s.ListDNSZones(&ListDNSZonesRequest{
|
||||
DNSZones: []string{req.DNSZone},
|
||||
}, opts...)
|
||||
DNSZones, err := s.ListDNSZones(listReq, opts...)
|
||||
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,6 @@
|
|||
package instance
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/async"
|
||||
|
@ -56,68 +54,3 @@ func (s *API) WaitForImage(req *WaitForImageRequest, opts ...scw.RequestOption)
|
|||
}
|
||||
return image.(*Image), nil
|
||||
}
|
||||
|
||||
type UpdateImageRequest struct {
|
||||
Zone scw.Zone `json:"zone"`
|
||||
ImageID string `json:"id"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Arch Arch `json:"arch,omitempty"`
|
||||
CreationDate *time.Time `json:"creation_date"`
|
||||
ModificationDate *time.Time `json:"modification_date"`
|
||||
ExtraVolumes map[string]*VolumeTemplate `json:"extra_volumes"`
|
||||
FromServer string `json:"from_server,omitempty"`
|
||||
Organization string `json:"organization"`
|
||||
Public bool `json:"public"`
|
||||
RootVolume *VolumeSummary `json:"root_volume,omitempty"`
|
||||
State ImageState `json:"state"`
|
||||
Project string `json:"project"`
|
||||
Tags *[]string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateImageResponse struct {
|
||||
Image *Image
|
||||
}
|
||||
|
||||
func (s *API) UpdateImage(req *UpdateImageRequest, opts ...scw.RequestOption) (*UpdateImageResponse, error) {
|
||||
// This function is the equivalent of the private setImage function that is not usable because the json tags and
|
||||
// types are not compatible with what the compute API expects
|
||||
|
||||
if req.Project == "" {
|
||||
defaultProject, _ := s.client.GetDefaultProjectID()
|
||||
req.Project = defaultProject
|
||||
}
|
||||
if req.Organization == "" {
|
||||
defaultOrganization, _ := s.client.GetDefaultOrganizationID()
|
||||
req.Organization = defaultOrganization
|
||||
}
|
||||
if req.Zone == "" {
|
||||
defaultZone, _ := s.client.GetDefaultZone()
|
||||
req.Zone = defaultZone
|
||||
}
|
||||
if fmt.Sprint(req.Zone) == "" {
|
||||
return nil, errors.New("field Zone cannot be empty in request")
|
||||
}
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "PUT",
|
||||
Path: "/instance/v1/zones/" + fmt.Sprint(req.Zone) + "/images/" + fmt.Sprint(req.ImageID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
err := scwReq.SetBody(req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var resp UpdateImageResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &resp, nil
|
||||
}
|
||||
|
|
72
vendor/github.com/scaleway/scaleway-sdk-go/api/instance/v1/instance_metadata_sdk.go
generated
vendored
72
vendor/github.com/scaleway/scaleway-sdk-go/api/instance/v1/instance_metadata_sdk.go
generated
vendored
|
@ -14,12 +14,15 @@ import (
|
|||
)
|
||||
|
||||
var (
|
||||
metadataURL = "http://169.254.42.42"
|
||||
metadataRetryBindPort = 200
|
||||
)
|
||||
|
||||
const metadataAPIv4 = "http://169.254.42.42"
|
||||
const metadataAPIv6 = "http://[fd00:42::42]"
|
||||
|
||||
// MetadataAPI metadata API
|
||||
type MetadataAPI struct {
|
||||
MetadataURL *string
|
||||
}
|
||||
|
||||
// NewMetadataAPI returns a MetadataAPI object from a Scaleway client.
|
||||
|
@ -27,9 +30,25 @@ func NewMetadataAPI() *MetadataAPI {
|
|||
return &MetadataAPI{}
|
||||
}
|
||||
|
||||
func (meta *MetadataAPI) getMetadataUrl() string {
|
||||
if meta.MetadataURL != nil {
|
||||
return *meta.MetadataURL
|
||||
}
|
||||
|
||||
for _, url := range []string{metadataAPIv4, metadataAPIv6} {
|
||||
http.DefaultClient.Timeout = 3 * time.Second
|
||||
resp, err := http.Get(url)
|
||||
if err == nil && resp.StatusCode == 200 {
|
||||
meta.MetadataURL = &url
|
||||
return url
|
||||
}
|
||||
}
|
||||
return metadataAPIv4
|
||||
}
|
||||
|
||||
// GetMetadata returns the metadata available from the server
|
||||
func (*MetadataAPI) GetMetadata() (m *Metadata, err error) {
|
||||
resp, err := http.Get(metadataURL + "/conf?format=json")
|
||||
func (meta *MetadataAPI) GetMetadata() (m *Metadata, err error) {
|
||||
resp, err := http.Get(meta.getMetadataUrl() + "/conf?format=json")
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "error getting metadataURL")
|
||||
}
|
||||
|
@ -43,6 +62,18 @@ func (*MetadataAPI) GetMetadata() (m *Metadata, err error) {
|
|||
return metadata, nil
|
||||
}
|
||||
|
||||
// MetadataIP represents all public IPs attached
|
||||
type MetadataIP struct {
|
||||
ID string `json:"id"`
|
||||
Address string `json:"address"`
|
||||
Dynamic bool `json:"dynamic"`
|
||||
Gateway string `json:"gateway"`
|
||||
Netmask string `json:"netmask"`
|
||||
Family string `json:"family"`
|
||||
ProvisioningMode string `json:"provisioning_mode"`
|
||||
Tags []string `json:"tags"`
|
||||
}
|
||||
|
||||
// Metadata represents the struct return by the metadata API
|
||||
type Metadata struct {
|
||||
ID string `json:"id,omitempty"`
|
||||
|
@ -51,13 +82,20 @@ type Metadata struct {
|
|||
Organization string `json:"organization,omitempty"`
|
||||
Project string `json:"project,omitempty"`
|
||||
CommercialType string `json:"commercial_type,omitempty"`
|
||||
PublicIP struct {
|
||||
Dynamic bool `json:"dynamic,omitempty"`
|
||||
ID string `json:"id,omitempty"`
|
||||
Address string `json:"address,omitempty"`
|
||||
//PublicIP IPv4 only
|
||||
PublicIP struct {
|
||||
ID string `json:"id"`
|
||||
Address string `json:"address"`
|
||||
Dynamic bool `json:"dynamic"`
|
||||
Gateway string `json:"gateway"`
|
||||
Netmask string `json:"netmask"`
|
||||
Family string `json:"family"`
|
||||
ProvisioningMode string `json:"provisioning_mode"`
|
||||
} `json:"public_ip,omitempty"`
|
||||
PrivateIP string `json:"private_ip,omitempty"`
|
||||
IPv6 struct {
|
||||
PublicIpsV4 []MetadataIP `json:"public_ips_v4,omitempty"`
|
||||
PublicIpsV6 []MetadataIP `json:"public_ips_v6,omitempty"`
|
||||
PrivateIP string `json:"private_ip,omitempty"`
|
||||
IPv6 struct {
|
||||
Netmask string `json:"netmask,omitempty"`
|
||||
Gateway string `json:"gateway,omitempty"`
|
||||
Address string `json:"address,omitempty"`
|
||||
|
@ -121,7 +159,7 @@ type Metadata struct {
|
|||
}
|
||||
|
||||
// ListUserData returns the metadata available from the server
|
||||
func (*MetadataAPI) ListUserData() (res *UserData, err error) {
|
||||
func (meta *MetadataAPI) ListUserData() (res *UserData, err error) {
|
||||
retries := 0
|
||||
for retries <= metadataRetryBindPort {
|
||||
port := rand.Intn(1024)
|
||||
|
@ -140,7 +178,7 @@ func (*MetadataAPI) ListUserData() (res *UserData, err error) {
|
|||
},
|
||||
}
|
||||
|
||||
resp, err := userdataClient.Get(metadataURL + "/user_data?format=json")
|
||||
resp, err := userdataClient.Get(meta.getMetadataUrl() + "/user_data?format=json")
|
||||
if err != nil {
|
||||
retries++ // retry with a different source port
|
||||
continue
|
||||
|
@ -158,7 +196,7 @@ func (*MetadataAPI) ListUserData() (res *UserData, err error) {
|
|||
}
|
||||
|
||||
// GetUserData returns the value for the given metadata key
|
||||
func (*MetadataAPI) GetUserData(key string) ([]byte, error) {
|
||||
func (meta *MetadataAPI) GetUserData(key string) ([]byte, error) {
|
||||
if key == "" {
|
||||
return make([]byte, 0), errors.New("key must not be empty in GetUserData")
|
||||
}
|
||||
|
@ -181,7 +219,7 @@ func (*MetadataAPI) GetUserData(key string) ([]byte, error) {
|
|||
},
|
||||
}
|
||||
|
||||
resp, err := userdataClient.Get(metadataURL + "/user_data/" + key)
|
||||
resp, err := userdataClient.Get(meta.getMetadataUrl() + "/user_data/" + key)
|
||||
if err != nil {
|
||||
retries++ // retry with a different source port
|
||||
continue
|
||||
|
@ -199,7 +237,7 @@ func (*MetadataAPI) GetUserData(key string) ([]byte, error) {
|
|||
}
|
||||
|
||||
// SetUserData sets the userdata key with the given value
|
||||
func (*MetadataAPI) SetUserData(key string, value []byte) error {
|
||||
func (meta *MetadataAPI) SetUserData(key string, value []byte) error {
|
||||
if key == "" {
|
||||
return errors.New("key must not be empty in SetUserData")
|
||||
}
|
||||
|
@ -221,7 +259,7 @@ func (*MetadataAPI) SetUserData(key string, value []byte) error {
|
|||
}).DialContext,
|
||||
},
|
||||
}
|
||||
request, err := http.NewRequest("PATCH", metadataURL+"/user_data/"+key, bytes.NewBuffer(value))
|
||||
request, err := http.NewRequest("PATCH", meta.getMetadataUrl()+"/user_data/"+key, bytes.NewBuffer(value))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error creating patch userdata request")
|
||||
}
|
||||
|
@ -238,7 +276,7 @@ func (*MetadataAPI) SetUserData(key string, value []byte) error {
|
|||
}
|
||||
|
||||
// DeleteUserData deletes the userdata key and the associated value
|
||||
func (*MetadataAPI) DeleteUserData(key string) error {
|
||||
func (meta *MetadataAPI) DeleteUserData(key string) error {
|
||||
if key == "" {
|
||||
return errors.New("key must not be empty in DeleteUserData")
|
||||
}
|
||||
|
@ -260,7 +298,7 @@ func (*MetadataAPI) DeleteUserData(key string) error {
|
|||
}).DialContext,
|
||||
},
|
||||
}
|
||||
request, err := http.NewRequest("DELETE", metadataURL+"/user_data/"+key, bytes.NewBuffer([]byte("")))
|
||||
request, err := http.NewRequest("DELETE", meta.getMetadataUrl()+"/user_data/"+key, bytes.NewBuffer([]byte("")))
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "error creating delete userdata request")
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -109,10 +109,19 @@ type AttachVolumeResponse struct {
|
|||
func volumesToVolumeTemplates(volumes map[string]*VolumeServer) map[string]*VolumeServerTemplate {
|
||||
volumeTemplates := map[string]*VolumeServerTemplate{}
|
||||
for key, volume := range volumes {
|
||||
volumeTemplates[key] = &VolumeServerTemplate{
|
||||
ID: &volume.ID,
|
||||
Name: &volume.Name,
|
||||
volumeTemplate := &VolumeServerTemplate{
|
||||
ID: &volume.ID,
|
||||
}
|
||||
|
||||
if volume.Name != "" {
|
||||
volumeTemplate.Name = &volume.Name
|
||||
}
|
||||
|
||||
if volume.VolumeType == VolumeServerVolumeTypeSbsVolume {
|
||||
volumeTemplate.VolumeType = VolumeVolumeTypeSbsVolume
|
||||
}
|
||||
|
||||
volumeTemplates[key] = volumeTemplate
|
||||
}
|
||||
return volumeTemplates
|
||||
}
|
||||
|
@ -122,6 +131,15 @@ func volumesToVolumeTemplates(volumes map[string]*VolumeServer) map[string]*Volu
|
|||
// Note: Implementation is thread-safe.
|
||||
func (s *API) AttachVolume(req *AttachVolumeRequest, opts ...scw.RequestOption) (*AttachVolumeResponse, error) {
|
||||
defer lockServer(req.Zone, req.ServerID).Unlock()
|
||||
// check where the volume comes from
|
||||
volume, err := s.getUnknownVolume(&getUnknownVolumeRequest{
|
||||
Zone: req.Zone,
|
||||
VolumeID: req.VolumeID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// get server with volumes
|
||||
getServerResponse, err := s.GetServer(&GetServerRequest{
|
||||
Zone: req.Zone,
|
||||
|
@ -144,9 +162,13 @@ func (s *API) AttachVolume(req *AttachVolumeRequest, opts ...scw.RequestOption)
|
|||
if _, ok := newVolumes[key]; !ok {
|
||||
newVolumes[key] = &VolumeServerTemplate{
|
||||
ID: &req.VolumeID,
|
||||
// name is ignored on this PATCH
|
||||
Name: &req.VolumeID,
|
||||
}
|
||||
if volume.Type == VolumeVolumeTypeSbsVolume {
|
||||
newVolumes[key].VolumeType = VolumeVolumeTypeSbsVolume
|
||||
} else {
|
||||
newVolumes[key].Name = &req.VolumeID
|
||||
}
|
||||
|
||||
found = true
|
||||
break
|
||||
}
|
||||
|
@ -173,6 +195,10 @@ func (s *API) AttachVolume(req *AttachVolumeRequest, opts ...scw.RequestOption)
|
|||
type DetachVolumeRequest struct {
|
||||
Zone scw.Zone `json:"-"`
|
||||
VolumeID string `json:"-"`
|
||||
// IsBlockVolume should be set to true if volume is from block API,
|
||||
// can be set to false if volume is from instance API,
|
||||
// if left nil both API will be tried
|
||||
IsBlockVolume *bool `json:"-"`
|
||||
}
|
||||
|
||||
// DetachVolumeResponse contains the updated server after detaching a volume
|
||||
|
@ -184,27 +210,23 @@ type DetachVolumeResponse struct {
|
|||
//
|
||||
// Note: Implementation is thread-safe.
|
||||
func (s *API) DetachVolume(req *DetachVolumeRequest, opts ...scw.RequestOption) (*DetachVolumeResponse, error) {
|
||||
// get volume
|
||||
getVolumeResponse, err := s.GetVolume(&GetVolumeRequest{
|
||||
volume, err := s.getUnknownVolume(&getUnknownVolumeRequest{
|
||||
Zone: req.Zone,
|
||||
VolumeID: req.VolumeID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if getVolumeResponse.Volume == nil {
|
||||
return nil, errors.New("expected volume to have value in response")
|
||||
}
|
||||
if getVolumeResponse.Volume.Server == nil {
|
||||
|
||||
if volume.ServerID == nil {
|
||||
return nil, errors.New("volume should be attached to a server")
|
||||
}
|
||||
serverID := getVolumeResponse.Volume.Server.ID
|
||||
|
||||
defer lockServer(req.Zone, serverID).Unlock()
|
||||
defer lockServer(req.Zone, *volume.ServerID).Unlock()
|
||||
// get server with volumes
|
||||
getServerResponse, err := s.GetServer(&GetServerRequest{
|
||||
Zone: req.Zone,
|
||||
ServerID: serverID,
|
||||
ServerID: *volume.ServerID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -222,7 +244,7 @@ func (s *API) DetachVolume(req *DetachVolumeRequest, opts ...scw.RequestOption)
|
|||
// update server
|
||||
updateServerResponse, err := s.updateServer(&UpdateServerRequest{
|
||||
Zone: req.Zone,
|
||||
ServerID: serverID,
|
||||
ServerID: *volume.ServerID,
|
||||
Volumes: &newVolumes,
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -286,32 +308,6 @@ func (r *ListImagesResponse) UnsafeSetTotalCount(totalCount int) {
|
|||
r.TotalCount = uint32(totalCount)
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
// Internal usage only
|
||||
func (r *ListServersTypesResponse) UnsafeGetTotalCount() uint32 {
|
||||
return r.TotalCount
|
||||
}
|
||||
|
||||
// UnsafeAppend should not be used
|
||||
// Internal usage only
|
||||
func (r *ListServersTypesResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
||||
results, ok := res.(*ListServersTypesResponse)
|
||||
if !ok {
|
||||
return 0, errors.New("%T type cannot be appended to type %T", res, r)
|
||||
}
|
||||
|
||||
if r.Servers == nil {
|
||||
r.Servers = make(map[string]*ServerType, len(results.Servers))
|
||||
}
|
||||
|
||||
for name, serverType := range results.Servers {
|
||||
r.Servers[name] = serverType
|
||||
}
|
||||
|
||||
r.TotalCount += uint32(len(results.Servers))
|
||||
return uint32(len(results.Servers)), nil
|
||||
}
|
||||
|
||||
func (v *NullableStringValue) UnmarshalJSON(b []byte) error {
|
||||
if string(b) == "null" {
|
||||
v.Null = true
|
||||
|
@ -436,29 +432,3 @@ func (s *API) WaitForMACAddress(req *WaitForMACAddressRequest, opts ...scw.Reque
|
|||
func (r *GetServerTypesAvailabilityResponse) UnsafeSetTotalCount(totalCount int) {
|
||||
r.TotalCount = uint32(totalCount)
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
// Internal usage only
|
||||
func (r *GetServerTypesAvailabilityResponse) UnsafeGetTotalCount() uint32 {
|
||||
return r.TotalCount
|
||||
}
|
||||
|
||||
// UnsafeAppend should not be used
|
||||
// Internal usage only
|
||||
func (r *GetServerTypesAvailabilityResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
||||
results, ok := res.(*GetServerTypesAvailabilityResponse)
|
||||
if !ok {
|
||||
return 0, errors.New("%T type cannot be appended to type %T", res, r)
|
||||
}
|
||||
|
||||
if r.Servers == nil {
|
||||
r.Servers = make(map[string]*GetServerTypesAvailabilityResponseAvailability, len(results.Servers))
|
||||
}
|
||||
|
||||
for name, serverTypeAvailability := range results.Servers {
|
||||
r.Servers[name] = serverTypeAvailability
|
||||
}
|
||||
|
||||
r.TotalCount += uint32(len(results.Servers))
|
||||
return uint32(len(results.Servers)), nil
|
||||
}
|
||||
|
|
222
vendor/github.com/scaleway/scaleway-sdk-go/api/instance/v1/security_group_utils.go
generated
vendored
222
vendor/github.com/scaleway/scaleway-sdk-go/api/instance/v1/security_group_utils.go
generated
vendored
|
@ -1,222 +0,0 @@
|
|||
package instance
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/errors"
|
||||
"github.com/scaleway/scaleway-sdk-go/scw"
|
||||
)
|
||||
|
||||
// UpdateSecurityGroupRequest contains the parameters to update a security group
|
||||
type UpdateSecurityGroupRequest struct {
|
||||
Zone scw.Zone `json:"-"`
|
||||
SecurityGroupID string `json:"-"`
|
||||
|
||||
Name *string `json:"name,omitempty"`
|
||||
Description *string `json:"description,omitempty"`
|
||||
InboundDefaultPolicy *SecurityGroupPolicy `json:"inbound_default_policy,omitempty"`
|
||||
OutboundDefaultPolicy *SecurityGroupPolicy `json:"outbound_default_policy,omitempty"`
|
||||
Stateful *bool `json:"stateful,omitempty"`
|
||||
OrganizationDefault *bool `json:"organization_default,omitempty"`
|
||||
ProjectDefault *bool `json:"project_default,omitempty"`
|
||||
EnableDefaultSecurity *bool `json:"enable_default_security,omitempty"`
|
||||
Tags *[]string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateSecurityGroupResponse struct {
|
||||
SecurityGroup *SecurityGroup
|
||||
}
|
||||
|
||||
// UpdateSecurityGroup updates a security group.
|
||||
func (s *API) UpdateSecurityGroup(req *UpdateSecurityGroupRequest, opts ...scw.RequestOption) (*UpdateSecurityGroupResponse, error) {
|
||||
var err error
|
||||
|
||||
if req.Zone == "" {
|
||||
defaultZone, _ := s.client.GetDefaultZone()
|
||||
req.Zone = defaultZone
|
||||
}
|
||||
|
||||
if fmt.Sprint(req.Zone) == "" {
|
||||
return nil, errors.New("field Zone cannot be empty in request")
|
||||
}
|
||||
|
||||
if fmt.Sprint(req.SecurityGroupID) == "" {
|
||||
return nil, errors.New("field SecurityGroupID cannot be empty in request")
|
||||
}
|
||||
|
||||
getSGResponse, err := s.GetSecurityGroup(&GetSecurityGroupRequest{
|
||||
Zone: req.Zone,
|
||||
SecurityGroupID: req.SecurityGroupID,
|
||||
}, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
setRequest := &setSecurityGroupRequest{
|
||||
ID: getSGResponse.SecurityGroup.ID,
|
||||
Name: getSGResponse.SecurityGroup.Name,
|
||||
Description: getSGResponse.SecurityGroup.Description,
|
||||
Organization: getSGResponse.SecurityGroup.Organization,
|
||||
Project: getSGResponse.SecurityGroup.Project,
|
||||
OrganizationDefault: getSGResponse.SecurityGroup.OrganizationDefault,
|
||||
ProjectDefault: getSGResponse.SecurityGroup.ProjectDefault,
|
||||
OutboundDefaultPolicy: getSGResponse.SecurityGroup.OutboundDefaultPolicy,
|
||||
InboundDefaultPolicy: getSGResponse.SecurityGroup.InboundDefaultPolicy,
|
||||
Stateful: getSGResponse.SecurityGroup.Stateful,
|
||||
Zone: req.Zone,
|
||||
EnableDefaultSecurity: getSGResponse.SecurityGroup.EnableDefaultSecurity,
|
||||
CreationDate: getSGResponse.SecurityGroup.CreationDate,
|
||||
ModificationDate: getSGResponse.SecurityGroup.ModificationDate,
|
||||
Servers: getSGResponse.SecurityGroup.Servers,
|
||||
}
|
||||
|
||||
// Override the values that need to be updated
|
||||
if req.Name != nil {
|
||||
setRequest.Name = *req.Name
|
||||
}
|
||||
if req.Description != nil {
|
||||
setRequest.Description = *req.Description
|
||||
}
|
||||
if req.InboundDefaultPolicy != nil {
|
||||
setRequest.InboundDefaultPolicy = *req.InboundDefaultPolicy
|
||||
}
|
||||
if req.OutboundDefaultPolicy != nil {
|
||||
setRequest.OutboundDefaultPolicy = *req.OutboundDefaultPolicy
|
||||
}
|
||||
if req.Stateful != nil {
|
||||
setRequest.Stateful = *req.Stateful
|
||||
}
|
||||
if req.OrganizationDefault != nil {
|
||||
setRequest.OrganizationDefault = req.OrganizationDefault
|
||||
}
|
||||
if req.ProjectDefault != nil {
|
||||
setRequest.ProjectDefault = *req.ProjectDefault
|
||||
}
|
||||
if req.EnableDefaultSecurity != nil {
|
||||
setRequest.EnableDefaultSecurity = *req.EnableDefaultSecurity
|
||||
}
|
||||
if req.Tags != nil {
|
||||
setRequest.Tags = req.Tags
|
||||
}
|
||||
|
||||
setRes, err := s.setSecurityGroup(setRequest, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &UpdateSecurityGroupResponse{
|
||||
SecurityGroup: setRes.SecurityGroup,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// UpdateSecurityGroupRuleRequest contains the parameters to update a security group rule
|
||||
type UpdateSecurityGroupRuleRequest struct {
|
||||
Zone scw.Zone `json:"-"`
|
||||
SecurityGroupID string `json:"-"`
|
||||
SecurityGroupRuleID string `json:"-"`
|
||||
|
||||
Protocol *SecurityGroupRuleProtocol `json:"protocol"`
|
||||
Direction *SecurityGroupRuleDirection `json:"direction"`
|
||||
Action *SecurityGroupRuleAction `json:"action"`
|
||||
IPRange *scw.IPNet `json:"ip_range"`
|
||||
Position *uint32 `json:"position"`
|
||||
|
||||
// If set to 0, DestPortFrom will be removed.
|
||||
// See SecurityGroupRule.DestPortFrom for more information
|
||||
DestPortFrom *uint32 `json:"dest_port_from"`
|
||||
|
||||
// If set to 0, DestPortTo will be removed.
|
||||
// See SecurityGroupRule.DestPortTo for more information
|
||||
DestPortTo *uint32 `json:"dest_port_to"`
|
||||
}
|
||||
|
||||
type UpdateSecurityGroupRuleResponse struct {
|
||||
Rule *SecurityGroupRule `json:"security_rule"`
|
||||
}
|
||||
|
||||
// UpdateSecurityGroupRule updates a security group.
|
||||
func (s *API) UpdateSecurityGroupRule(req *UpdateSecurityGroupRuleRequest, opts ...scw.RequestOption) (*UpdateSecurityGroupRuleResponse, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.Zone) == "" {
|
||||
defaultZone, _ := s.client.GetDefaultZone()
|
||||
req.Zone = defaultZone
|
||||
}
|
||||
|
||||
if fmt.Sprint(req.Zone) == "" {
|
||||
return nil, errors.New("field Zone cannot be empty in request")
|
||||
}
|
||||
|
||||
res, err := s.GetSecurityGroupRule(&GetSecurityGroupRuleRequest{
|
||||
SecurityGroupRuleID: req.SecurityGroupRuleID,
|
||||
SecurityGroupID: req.SecurityGroupID,
|
||||
Zone: req.Zone,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
setRequest := &setSecurityGroupRuleRequest{
|
||||
Zone: req.Zone,
|
||||
SecurityGroupID: req.SecurityGroupID,
|
||||
SecurityGroupRuleID: req.SecurityGroupRuleID,
|
||||
ID: req.SecurityGroupRuleID,
|
||||
Direction: res.Rule.Direction,
|
||||
Protocol: res.Rule.Protocol,
|
||||
DestPortFrom: res.Rule.DestPortFrom,
|
||||
DestPortTo: res.Rule.DestPortTo,
|
||||
IPRange: res.Rule.IPRange,
|
||||
Action: res.Rule.Action,
|
||||
Position: res.Rule.Position,
|
||||
Editable: res.Rule.Editable,
|
||||
}
|
||||
|
||||
// Override the values that need to be updated
|
||||
if req.Action != nil {
|
||||
setRequest.Action = *req.Action
|
||||
}
|
||||
if req.IPRange != nil {
|
||||
setRequest.IPRange = *req.IPRange
|
||||
}
|
||||
if req.DestPortTo != nil {
|
||||
if *req.DestPortTo > 0 {
|
||||
setRequest.DestPortTo = req.DestPortTo
|
||||
} else {
|
||||
setRequest.DestPortTo = nil
|
||||
}
|
||||
}
|
||||
if req.DestPortFrom != nil {
|
||||
if *req.DestPortFrom > 0 {
|
||||
setRequest.DestPortFrom = req.DestPortFrom
|
||||
} else {
|
||||
setRequest.DestPortFrom = nil
|
||||
}
|
||||
}
|
||||
if req.DestPortFrom != nil && req.DestPortTo != nil && *req.DestPortFrom == *req.DestPortTo {
|
||||
setRequest.DestPortTo = nil
|
||||
}
|
||||
if req.Protocol != nil {
|
||||
setRequest.Protocol = *req.Protocol
|
||||
}
|
||||
if req.Direction != nil {
|
||||
setRequest.Direction = *req.Direction
|
||||
}
|
||||
if req.Position != nil {
|
||||
setRequest.Position = *req.Position
|
||||
}
|
||||
|
||||
// When we use ICMP protocol portFrom and portTo should be set to nil
|
||||
if req.Protocol != nil && *req.Protocol == SecurityGroupRuleProtocolICMP {
|
||||
setRequest.DestPortFrom = nil
|
||||
setRequest.DestPortTo = nil
|
||||
}
|
||||
|
||||
resp, err := s.setSecurityGroupRule(setRequest)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &UpdateSecurityGroupRuleResponse{
|
||||
Rule: resp.Rule,
|
||||
}, nil
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package instance
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/async"
|
||||
|
@ -55,68 +54,3 @@ func (s *API) WaitForSnapshot(req *WaitForSnapshotRequest, opts ...scw.RequestOp
|
|||
}
|
||||
return snapshot.(*Snapshot), nil
|
||||
}
|
||||
|
||||
type UpdateSnapshotRequest struct {
|
||||
Zone scw.Zone
|
||||
SnapshotID string
|
||||
Name *string `json:"name,omitempty"`
|
||||
Tags *[]string `json:"tags,omitempty"`
|
||||
}
|
||||
|
||||
type UpdateSnapshotResponse struct {
|
||||
Snapshot *Snapshot
|
||||
}
|
||||
|
||||
func (s *API) UpdateSnapshot(req *UpdateSnapshotRequest, opts ...scw.RequestOption) (*UpdateSnapshotResponse, error) {
|
||||
var err error
|
||||
|
||||
if req.Zone == "" {
|
||||
defaultZone, _ := s.client.GetDefaultZone()
|
||||
req.Zone = defaultZone
|
||||
}
|
||||
|
||||
if fmt.Sprint(req.Zone) == "" {
|
||||
return nil, errors.New("field Zone cannot be empty in request")
|
||||
}
|
||||
|
||||
if fmt.Sprint(req.SnapshotID) == "" {
|
||||
return nil, errors.New("field SnapshotID cannot be empty in request")
|
||||
}
|
||||
|
||||
getSnapshotResponse, err := s.GetSnapshot(&GetSnapshotRequest{
|
||||
Zone: req.Zone,
|
||||
SnapshotID: req.SnapshotID,
|
||||
}, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
setRequest := &setSnapshotRequest{
|
||||
SnapshotID: getSnapshotResponse.Snapshot.ID,
|
||||
Zone: getSnapshotResponse.Snapshot.Zone,
|
||||
ID: getSnapshotResponse.Snapshot.ID,
|
||||
Name: getSnapshotResponse.Snapshot.Name,
|
||||
CreationDate: getSnapshotResponse.Snapshot.CreationDate,
|
||||
ModificationDate: getSnapshotResponse.Snapshot.ModificationDate,
|
||||
Organization: getSnapshotResponse.Snapshot.Organization,
|
||||
Project: getSnapshotResponse.Snapshot.Project,
|
||||
}
|
||||
|
||||
// Override the values that need to be updated
|
||||
if req.Name != nil {
|
||||
setRequest.Name = *req.Name
|
||||
}
|
||||
|
||||
if req.Tags != nil {
|
||||
setRequest.Tags = req.Tags
|
||||
}
|
||||
|
||||
setRes, err := s.setSnapshot(setRequest, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &UpdateSnapshotResponse{
|
||||
Snapshot: setRes.Snapshot,
|
||||
}, nil
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package instance
|
||||
|
||||
import (
|
||||
goerrors "errors"
|
||||
"time"
|
||||
|
||||
block "github.com/scaleway/scaleway-sdk-go/api/block/v1alpha1"
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/async"
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/errors"
|
||||
"github.com/scaleway/scaleway-sdk-go/scw"
|
||||
|
@ -54,3 +56,58 @@ func (s *API) WaitForVolume(req *WaitForVolumeRequest, opts ...scw.RequestOption
|
|||
}
|
||||
return volume.(*Volume), nil
|
||||
}
|
||||
|
||||
type unknownVolume struct {
|
||||
ID string
|
||||
ServerID *string
|
||||
Type VolumeVolumeType
|
||||
}
|
||||
|
||||
type getUnknownVolumeRequest struct {
|
||||
Zone scw.Zone
|
||||
VolumeID string
|
||||
IsBlockVolume *bool
|
||||
}
|
||||
|
||||
// getUnknownVolume is used to get a volume that can be either from instance or block API
|
||||
func (s *API) getUnknownVolume(req *getUnknownVolumeRequest, opts ...scw.RequestOption) (*unknownVolume, error) {
|
||||
volume := &unknownVolume{
|
||||
ID: req.VolumeID,
|
||||
}
|
||||
|
||||
// Try instance API
|
||||
if req.IsBlockVolume == nil || *req.IsBlockVolume == false {
|
||||
getVolumeResponse, err := s.GetVolume(&GetVolumeRequest{
|
||||
Zone: req.Zone,
|
||||
VolumeID: req.VolumeID,
|
||||
})
|
||||
notFoundErr := &scw.ResourceNotFoundError{}
|
||||
if err != nil && !goerrors.As(err, ¬FoundErr) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if getVolumeResponse != nil {
|
||||
if getVolumeResponse.Volume != nil && getVolumeResponse.Volume.Server != nil {
|
||||
volume.ServerID = &getVolumeResponse.Volume.Server.ID
|
||||
}
|
||||
volume.Type = getVolumeResponse.Volume.VolumeType
|
||||
}
|
||||
}
|
||||
if volume.Type == "" && (req.IsBlockVolume == nil || *req.IsBlockVolume == true) {
|
||||
getVolumeResponse, err := block.NewAPI(s.client).GetVolume(&block.GetVolumeRequest{
|
||||
Zone: req.Zone,
|
||||
VolumeID: req.VolumeID,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, reference := range getVolumeResponse.References {
|
||||
if reference.ProductResourceType == "instance_server" {
|
||||
volume.ServerID = &reference.ProductResourceID
|
||||
}
|
||||
}
|
||||
volume.Type = VolumeVolumeTypeSbsVolume
|
||||
}
|
||||
|
||||
return volume, nil
|
||||
}
|
||||
|
|
|
@ -39,18 +39,6 @@ var (
|
|||
_ = namegenerator.GetRandomName
|
||||
)
|
||||
|
||||
// API: iPAM API.
|
||||
type API struct {
|
||||
client *scw.Client
|
||||
}
|
||||
|
||||
// NewAPI returns a API object from a Scaleway client.
|
||||
func NewAPI(client *scw.Client) *API {
|
||||
return &API{
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
type ListIPsRequestOrderBy string
|
||||
|
||||
const (
|
||||
|
@ -97,6 +85,7 @@ const (
|
|||
ResourceTypeVpcGateway = ResourceType("vpc_gateway")
|
||||
ResourceTypeVpcGatewayNetwork = ResourceType("vpc_gateway_network")
|
||||
ResourceTypeK8sNode = ResourceType("k8s_node")
|
||||
ResourceTypeK8sCluster = ResourceType("k8s_cluster")
|
||||
ResourceTypeRdbInstance = ResourceType("rdb_instance")
|
||||
ResourceTypeRedisCluster = ResourceType("redis_cluster")
|
||||
ResourceTypeBaremetalServer = ResourceType("baremetal_server")
|
||||
|
@ -126,6 +115,26 @@ func (enum *ResourceType) UnmarshalJSON(data []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Resource: resource.
|
||||
type Resource struct {
|
||||
// Type: default value: unknown_type
|
||||
Type ResourceType `json:"type"`
|
||||
|
||||
ID string `json:"id"`
|
||||
|
||||
MacAddress *string `json:"mac_address"`
|
||||
|
||||
Name *string `json:"name"`
|
||||
}
|
||||
|
||||
// Reverse: reverse.
|
||||
type Reverse struct {
|
||||
Hostname string `json:"hostname"`
|
||||
|
||||
Address *scw.IPNet `json:"address"`
|
||||
}
|
||||
|
||||
// IP: ip.
|
||||
type IP struct {
|
||||
ID string `json:"id"`
|
||||
|
||||
|
@ -139,69 +148,32 @@ type IP struct {
|
|||
|
||||
UpdatedAt *time.Time `json:"updated_at"`
|
||||
|
||||
// Precisely one of Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
// Precisely one of Regional, Zonal, ZonalNat, SubnetID must be set.
|
||||
Regional *bool `json:"regional,omitempty"`
|
||||
|
||||
// Precisely one of Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
// Precisely one of Regional, Zonal, ZonalNat, SubnetID must be set.
|
||||
Zonal *string `json:"zonal,omitempty"`
|
||||
|
||||
// Precisely one of Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
// Precisely one of Regional, Zonal, ZonalNat, SubnetID must be set.
|
||||
ZonalNat *string `json:"zonal_nat,omitempty"`
|
||||
|
||||
// Precisely one of Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
// Precisely one of Regional, Zonal, ZonalNat, SubnetID must be set.
|
||||
SubnetID *string `json:"subnet_id,omitempty"`
|
||||
|
||||
Resource *Resource `json:"resource"`
|
||||
|
||||
Tags []string `json:"tags"`
|
||||
|
||||
Reverses []*Reverse `json:"reverses"`
|
||||
|
||||
// Region: region to target. If none is passed will use default region from the config.
|
||||
Region scw.Region `json:"region"`
|
||||
|
||||
// Zone: zone to target. If none is passed will use default zone from the config.
|
||||
Zone *scw.Zone `json:"zone"`
|
||||
}
|
||||
|
||||
type ListIPsResponse struct {
|
||||
TotalCount uint64 `json:"total_count"`
|
||||
|
||||
IPs []*IP `json:"ips"`
|
||||
}
|
||||
|
||||
type Resource struct {
|
||||
// Type: default value: unknown_type
|
||||
Type ResourceType `json:"type"`
|
||||
|
||||
ID string `json:"id"`
|
||||
|
||||
MacAddress *string `json:"mac_address"`
|
||||
|
||||
Name *string `json:"name"`
|
||||
}
|
||||
|
||||
type Source struct {
|
||||
|
||||
// Precisely one of PrivateNetworkID, Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
Zonal *string `json:"zonal,omitempty"`
|
||||
|
||||
// Precisely one of PrivateNetworkID, Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
ZonalNat *string `json:"zonal_nat,omitempty"`
|
||||
|
||||
// Precisely one of PrivateNetworkID, Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
Regional *bool `json:"regional,omitempty"`
|
||||
|
||||
// Precisely one of PrivateNetworkID, Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
PrivateNetworkID *string `json:"private_network_id,omitempty"`
|
||||
|
||||
// Precisely one of PrivateNetworkID, Regional, SubnetID, Zonal, ZonalNat must be set.
|
||||
SubnetID *string `json:"subnet_id,omitempty"`
|
||||
}
|
||||
|
||||
// Service API
|
||||
|
||||
// Regions list localities the api is available in
|
||||
func (s *API) Regions() []scw.Region {
|
||||
return []scw.Region{scw.RegionFrPar, scw.RegionNlAms, scw.RegionPlWaw}
|
||||
}
|
||||
|
||||
// ListIPsRequest: list i ps request.
|
||||
type ListIPsRequest struct {
|
||||
// Region: region to target. If none is passed will use default region from the config.
|
||||
Region scw.Region `json:"-"`
|
||||
|
@ -209,6 +181,7 @@ type ListIPsRequest struct {
|
|||
Page *int32 `json:"-"`
|
||||
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
// OrderBy: default value: created_at_desc
|
||||
OrderBy ListIPsRequestOrderBy `json:"-"`
|
||||
|
||||
|
@ -216,19 +189,25 @@ type ListIPsRequest struct {
|
|||
|
||||
OrganizationID *string `json:"-"`
|
||||
|
||||
Zonal *string `json:"-"`
|
||||
// Precisely one of Zonal, ZonalNat, Regional, PrivateNetworkID, SubnetID must be set.
|
||||
Zonal *string `json:"zonal,omitempty"`
|
||||
|
||||
ZonalNat *string `json:"-"`
|
||||
// Precisely one of Zonal, ZonalNat, Regional, PrivateNetworkID, SubnetID must be set.
|
||||
ZonalNat *string `json:"zonal_nat,omitempty"`
|
||||
|
||||
Regional *bool `json:"-"`
|
||||
// Precisely one of Zonal, ZonalNat, Regional, PrivateNetworkID, SubnetID must be set.
|
||||
Regional *bool `json:"regional,omitempty"`
|
||||
|
||||
PrivateNetworkID *string `json:"-"`
|
||||
// Precisely one of Zonal, ZonalNat, Regional, PrivateNetworkID, SubnetID must be set.
|
||||
PrivateNetworkID *string `json:"private_network_id,omitempty"`
|
||||
|
||||
SubnetID *string `json:"-"`
|
||||
// Precisely one of Zonal, ZonalNat, Regional, PrivateNetworkID, SubnetID must be set.
|
||||
SubnetID *string `json:"subnet_id,omitempty"`
|
||||
|
||||
Attached *bool `json:"-"`
|
||||
|
||||
ResourceID *string `json:"-"`
|
||||
|
||||
// ResourceType: default value: unknown_type
|
||||
ResourceType ResourceType `json:"-"`
|
||||
|
||||
|
@ -243,58 +222,11 @@ type ListIPsRequest struct {
|
|||
ResourceIDs []string `json:"-"`
|
||||
}
|
||||
|
||||
// ListIPs: find IP addresses.
|
||||
func (s *API) ListIPs(req *ListIPsRequest, opts ...scw.RequestOption) (*ListIPsResponse, error) {
|
||||
var err error
|
||||
// ListIPsResponse: list i ps response.
|
||||
type ListIPsResponse struct {
|
||||
TotalCount uint64 `json:"total_count"`
|
||||
|
||||
if req.Region == "" {
|
||||
defaultRegion, _ := s.client.GetDefaultRegion()
|
||||
req.Region = defaultRegion
|
||||
}
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
parameter.AddToQuery(query, "project_id", req.ProjectID)
|
||||
parameter.AddToQuery(query, "organization_id", req.OrganizationID)
|
||||
parameter.AddToQuery(query, "zonal", req.Zonal)
|
||||
parameter.AddToQuery(query, "zonal_nat", req.ZonalNat)
|
||||
parameter.AddToQuery(query, "regional", req.Regional)
|
||||
parameter.AddToQuery(query, "private_network_id", req.PrivateNetworkID)
|
||||
parameter.AddToQuery(query, "subnet_id", req.SubnetID)
|
||||
parameter.AddToQuery(query, "attached", req.Attached)
|
||||
parameter.AddToQuery(query, "resource_id", req.ResourceID)
|
||||
parameter.AddToQuery(query, "resource_type", req.ResourceType)
|
||||
parameter.AddToQuery(query, "mac_address", req.MacAddress)
|
||||
parameter.AddToQuery(query, "tags", req.Tags)
|
||||
parameter.AddToQuery(query, "is_ipv6", req.IsIPv6)
|
||||
parameter.AddToQuery(query, "resource_name", req.ResourceName)
|
||||
parameter.AddToQuery(query, "resource_ids", req.ResourceIDs)
|
||||
|
||||
if fmt.Sprint(req.Region) == "" {
|
||||
return nil, errors.New("field Region cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/ipam/v1alpha1/regions/" + fmt.Sprint(req.Region) + "/ips",
|
||||
Query: query,
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListIPsResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
IPs []*IP `json:"ips"`
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
|
@ -315,3 +247,71 @@ func (r *ListIPsResponse) UnsafeAppend(res interface{}) (uint64, error) {
|
|||
r.TotalCount += uint64(len(results.IPs))
|
||||
return uint64(len(results.IPs)), nil
|
||||
}
|
||||
|
||||
// IPAM API.
|
||||
type API struct {
|
||||
client *scw.Client
|
||||
}
|
||||
|
||||
// NewAPI returns a API object from a Scaleway client.
|
||||
func NewAPI(client *scw.Client) *API {
|
||||
return &API{
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
func (s *API) Regions() []scw.Region {
|
||||
return []scw.Region{scw.RegionFrPar, scw.RegionNlAms, scw.RegionPlWaw}
|
||||
}
|
||||
|
||||
// ListIPs: Find IP addresses.
|
||||
func (s *API) ListIPs(req *ListIPsRequest, opts ...scw.RequestOption) (*ListIPsResponse, error) {
|
||||
var err error
|
||||
|
||||
if req.Region == "" {
|
||||
defaultRegion, _ := s.client.GetDefaultRegion()
|
||||
req.Region = defaultRegion
|
||||
}
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
parameter.AddToQuery(query, "project_id", req.ProjectID)
|
||||
parameter.AddToQuery(query, "organization_id", req.OrganizationID)
|
||||
parameter.AddToQuery(query, "attached", req.Attached)
|
||||
parameter.AddToQuery(query, "resource_id", req.ResourceID)
|
||||
parameter.AddToQuery(query, "resource_type", req.ResourceType)
|
||||
parameter.AddToQuery(query, "mac_address", req.MacAddress)
|
||||
parameter.AddToQuery(query, "tags", req.Tags)
|
||||
parameter.AddToQuery(query, "is_ipv6", req.IsIPv6)
|
||||
parameter.AddToQuery(query, "resource_name", req.ResourceName)
|
||||
parameter.AddToQuery(query, "resource_ids", req.ResourceIDs)
|
||||
parameter.AddToQuery(query, "zonal", req.Zonal)
|
||||
parameter.AddToQuery(query, "zonal_nat", req.ZonalNat)
|
||||
parameter.AddToQuery(query, "regional", req.Regional)
|
||||
parameter.AddToQuery(query, "private_network_id", req.PrivateNetworkID)
|
||||
parameter.AddToQuery(query, "subnet_id", req.SubnetID)
|
||||
|
||||
if fmt.Sprint(req.Region) == "" {
|
||||
return nil, errors.New("field Region cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/ipam/v1alpha1/regions/" + fmt.Sprint(req.Region) + "/ips",
|
||||
Query: query,
|
||||
}
|
||||
|
||||
var resp ListIPsResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
288
vendor/github.com/scaleway/scaleway-sdk-go/api/marketplace/v1/marketplace_sdk.go
generated
vendored
288
vendor/github.com/scaleway/scaleway-sdk-go/api/marketplace/v1/marketplace_sdk.go
generated
vendored
|
@ -39,80 +39,22 @@ var (
|
|||
_ = namegenerator.GetRandomName
|
||||
)
|
||||
|
||||
// API: marketplace API.
|
||||
type API struct {
|
||||
client *scw.Client
|
||||
}
|
||||
|
||||
// NewAPI returns a API object from a Scaleway client.
|
||||
func NewAPI(client *scw.Client) *API {
|
||||
return &API{
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
type GetImageResponse struct {
|
||||
Image *Image `json:"image"`
|
||||
}
|
||||
|
||||
type GetVersionResponse struct {
|
||||
Version *Version `json:"version"`
|
||||
}
|
||||
|
||||
// Image: image.
|
||||
type Image struct {
|
||||
// ID: UUID of this image.
|
||||
ID string `json:"id"`
|
||||
// Name: name of the image.
|
||||
Name string `json:"name"`
|
||||
// Description: text description of this image.
|
||||
Description string `json:"description"`
|
||||
// Logo: URL of this image's logo.
|
||||
Logo string `json:"logo"`
|
||||
// Categories: list of categories this image belongs to.
|
||||
Categories []string `json:"categories"`
|
||||
// CreationDate: creation date of this image.
|
||||
CreationDate *time.Time `json:"creation_date"`
|
||||
// ModificationDate: date of the last modification of this image.
|
||||
ModificationDate *time.Time `json:"modification_date"`
|
||||
// ValidUntil: expiration date of this image.
|
||||
ValidUntil *time.Time `json:"valid_until"`
|
||||
// Label: label of this image.
|
||||
// Typically an identifier for a distribution (ex. "ubuntu_focal").
|
||||
Label string `json:"label"`
|
||||
// Versions: list of versions of this image.
|
||||
Versions []*Version `json:"versions"`
|
||||
// Organization: organization this image belongs to.
|
||||
Organization *Organization `json:"organization"`
|
||||
|
||||
CurrentPublicVersion string `json:"current_public_version"`
|
||||
}
|
||||
|
||||
type ListImagesResponse struct {
|
||||
Images []*Image `json:"images"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
type ListVersionsResponse struct {
|
||||
Versions []*Version `json:"versions"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
// LocalImage: local image.
|
||||
type LocalImage struct {
|
||||
// ID: UUID of this local image.
|
||||
// Version you will typically use to define an image in an API call.
|
||||
// ID: version you will typically use to define an image in an API call.
|
||||
ID string `json:"id"`
|
||||
|
||||
// CompatibleCommercialTypes: list of all commercial types that are compatible with this local image.
|
||||
CompatibleCommercialTypes []string `json:"compatible_commercial_types"`
|
||||
|
||||
// Arch: supported architecture for this local image.
|
||||
Arch string `json:"arch"`
|
||||
|
||||
// Zone: availability Zone where this local image is available.
|
||||
Zone scw.Zone `json:"zone"`
|
||||
}
|
||||
|
||||
// Organization: organization.
|
||||
type Organization struct {
|
||||
ID string `json:"id"`
|
||||
|
||||
|
@ -123,138 +65,83 @@ type Organization struct {
|
|||
type Version struct {
|
||||
// ID: UUID of this version.
|
||||
ID string `json:"id"`
|
||||
|
||||
// Name: name of this version.
|
||||
Name string `json:"name"`
|
||||
|
||||
// CreationDate: creation date of this image version.
|
||||
CreationDate *time.Time `json:"creation_date"`
|
||||
|
||||
// ModificationDate: date of the last modification of this version.
|
||||
ModificationDate *time.Time `json:"modification_date"`
|
||||
|
||||
// LocalImages: list of local images available in this version.
|
||||
LocalImages []*LocalImage `json:"local_images"`
|
||||
}
|
||||
|
||||
// Service API
|
||||
// Image: image.
|
||||
type Image struct {
|
||||
// ID: UUID of this image.
|
||||
ID string `json:"id"`
|
||||
|
||||
type ListImagesRequest struct {
|
||||
// PerPage: a positive integer lower or equal to 100 to select the number of items to display.
|
||||
PerPage *uint32 `json:"-"`
|
||||
// Page: a positive integer to choose the page to display.
|
||||
Page *int32 `json:"-"`
|
||||
}
|
||||
|
||||
// ListImages: list marketplace images.
|
||||
func (s *API) ListImages(req *ListImagesRequest, opts ...scw.RequestOption) (*ListImagesResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPerPage, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PerPage == nil || *req.PerPage == 0) && exist {
|
||||
req.PerPage = &defaultPerPage
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "per_page", req.PerPage)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v1/images",
|
||||
Query: query,
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListImagesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
// Name: name of the image.
|
||||
Name string `json:"name"`
|
||||
|
||||
// Description: text description of this image.
|
||||
Description string `json:"description"`
|
||||
|
||||
// Logo: URL of this image's logo.
|
||||
Logo string `json:"logo"`
|
||||
|
||||
// Categories: list of categories this image belongs to.
|
||||
Categories []string `json:"categories"`
|
||||
|
||||
// CreationDate: creation date of this image.
|
||||
CreationDate *time.Time `json:"creation_date"`
|
||||
|
||||
// ModificationDate: date of the last modification of this image.
|
||||
ModificationDate *time.Time `json:"modification_date"`
|
||||
|
||||
// ValidUntil: expiration date of this image.
|
||||
ValidUntil *time.Time `json:"valid_until"`
|
||||
|
||||
// Label: typically an identifier for a distribution (ex. "ubuntu_focal").
|
||||
Label string `json:"label"`
|
||||
|
||||
// Versions: list of versions of this image.
|
||||
Versions []*Version `json:"versions"`
|
||||
|
||||
// Organization: organization this image belongs to.
|
||||
Organization *Organization `json:"organization"`
|
||||
|
||||
CurrentPublicVersion string `json:"current_public_version"`
|
||||
}
|
||||
|
||||
// GetImageRequest: get image request.
|
||||
type GetImageRequest struct {
|
||||
// ImageID: display the image name.
|
||||
ImageID string `json:"-"`
|
||||
}
|
||||
|
||||
// GetImage: get a specific marketplace image.
|
||||
func (s *API) GetImage(req *GetImageRequest, opts ...scw.RequestOption) (*GetImageResponse, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v1/images/" + fmt.Sprint(req.ImageID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp GetImageResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
// GetImageResponse: get image response.
|
||||
type GetImageResponse struct {
|
||||
Image *Image `json:"image"`
|
||||
}
|
||||
|
||||
type ListVersionsRequest struct {
|
||||
ImageID string `json:"-"`
|
||||
// ListImagesRequest: list images request.
|
||||
type ListImagesRequest struct {
|
||||
// PerPage: a positive integer lower or equal to 100 to select the number of items to display.
|
||||
PerPage *uint32 `json:"-"`
|
||||
|
||||
// Page: a positive integer to choose the page to display.
|
||||
Page *int32 `json:"-"`
|
||||
}
|
||||
|
||||
func (s *API) ListVersions(req *ListVersionsRequest, opts ...scw.RequestOption) (*ListVersionsResponse, error) {
|
||||
var err error
|
||||
// ListImagesResponse: list images response.
|
||||
type ListImagesResponse struct {
|
||||
Images []*Image `json:"images"`
|
||||
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v1/images/" + fmt.Sprint(req.ImageID) + "/versions",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListVersionsResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
type GetVersionRequest struct {
|
||||
ImageID string `json:"-"`
|
||||
|
||||
VersionID string `json:"-"`
|
||||
}
|
||||
|
||||
func (s *API) GetVersion(req *GetVersionRequest, opts ...scw.RequestOption) (*GetVersionResponse, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
if fmt.Sprint(req.VersionID) == "" {
|
||||
return nil, errors.New("field VersionID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v1/images/" + fmt.Sprint(req.ImageID) + "/versions/" + fmt.Sprint(req.VersionID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp GetVersionResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
|
@ -275,3 +162,60 @@ func (r *ListImagesResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
|||
r.TotalCount += uint32(len(results.Images))
|
||||
return uint32(len(results.Images)), nil
|
||||
}
|
||||
|
||||
// Marketplace API.
|
||||
type API struct {
|
||||
client *scw.Client
|
||||
}
|
||||
|
||||
// NewAPI returns a API object from a Scaleway client.
|
||||
func NewAPI(client *scw.Client) *API {
|
||||
return &API{
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
// ListImages: List marketplace images.
|
||||
func (s *API) ListImages(req *ListImagesRequest, opts ...scw.RequestOption) (*ListImagesResponse, error) {
|
||||
var err error
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "per_page", req.PerPage)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v1/images",
|
||||
Query: query,
|
||||
}
|
||||
|
||||
var resp ListImagesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// GetImage: Get a specific marketplace image.
|
||||
func (s *API) GetImage(req *GetImageRequest, opts ...scw.RequestOption) (*GetImageResponse, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v1/images/" + fmt.Sprint(req.ImageID) + "",
|
||||
}
|
||||
|
||||
var resp GetImageResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
|
6
vendor/github.com/scaleway/scaleway-sdk-go/api/marketplace/v1/marketplace_utils.go
generated
vendored
6
vendor/github.com/scaleway/scaleway-sdk-go/api/marketplace/v1/marketplace_utils.go
generated
vendored
|
@ -91,9 +91,3 @@ func (s *API) GetLocalImageIDByLabel(req *GetLocalImageIDByLabelRequest, opts ..
|
|||
func (r *ListImagesResponse) UnsafeSetTotalCount(totalCount int) {
|
||||
r.TotalCount = uint32(totalCount)
|
||||
}
|
||||
|
||||
// UnsafeSetTotalCount should not be used
|
||||
// Internal usage only
|
||||
func (r *ListVersionsResponse) UnsafeSetTotalCount(totalCount int) {
|
||||
r.TotalCount = uint32(totalCount)
|
||||
}
|
||||
|
|
687
vendor/github.com/scaleway/scaleway-sdk-go/api/marketplace/v2/marketplace_sdk.go
generated
vendored
687
vendor/github.com/scaleway/scaleway-sdk-go/api/marketplace/v2/marketplace_sdk.go
generated
vendored
|
@ -39,18 +39,6 @@ var (
|
|||
_ = namegenerator.GetRandomName
|
||||
)
|
||||
|
||||
// API: marketplace API.
|
||||
type API struct {
|
||||
client *scw.Client
|
||||
}
|
||||
|
||||
// NewAPI returns a API object from a Scaleway client.
|
||||
func NewAPI(client *scw.Client) *API {
|
||||
return &API{
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
type ListImagesRequestOrderBy string
|
||||
|
||||
const (
|
||||
|
@ -148,7 +136,7 @@ func (enum *ListVersionsRequestOrderBy) UnmarshalJSON(data []byte) error {
|
|||
type LocalImageType string
|
||||
|
||||
const (
|
||||
// Unspecified image type
|
||||
// Unspecified image type.
|
||||
LocalImageTypeUnknownType = LocalImageType("unknown_type")
|
||||
// An image type that can be used to create volumes which are managed via the Instance API.
|
||||
LocalImageTypeInstanceLocal = LocalImageType("instance_local")
|
||||
|
@ -179,6 +167,7 @@ func (enum *LocalImageType) UnmarshalJSON(data []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Category: category.
|
||||
type Category struct {
|
||||
ID string `json:"id"`
|
||||
|
||||
|
@ -191,62 +180,49 @@ type Category struct {
|
|||
type Image struct {
|
||||
// ID: UUID of this image.
|
||||
ID string `json:"id"`
|
||||
|
||||
// Name: name of the image.
|
||||
Name string `json:"name"`
|
||||
|
||||
// Description: text description of this image.
|
||||
Description string `json:"description"`
|
||||
|
||||
// Logo: URL of this image's logo.
|
||||
Logo string `json:"logo"`
|
||||
|
||||
// Categories: list of categories this image belongs to.
|
||||
Categories []string `json:"categories"`
|
||||
|
||||
// CreatedAt: creation date of this image.
|
||||
CreatedAt *time.Time `json:"created_at"`
|
||||
|
||||
// UpdatedAt: date of the last modification of this image.
|
||||
UpdatedAt *time.Time `json:"updated_at"`
|
||||
|
||||
// ValidUntil: expiration date of this image.
|
||||
ValidUntil *time.Time `json:"valid_until"`
|
||||
// Label: label of this image.
|
||||
// Typically an identifier for a distribution (ex. "ubuntu_focal").
|
||||
|
||||
// Label: typically an identifier for a distribution (ex. "ubuntu_focal").
|
||||
Label string `json:"label"`
|
||||
}
|
||||
|
||||
type ListCategoriesResponse struct {
|
||||
Categories []*Category `json:"categories"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
type ListImagesResponse struct {
|
||||
Images []*Image `json:"images"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
type ListLocalImagesResponse struct {
|
||||
LocalImages []*LocalImage `json:"local_images"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
type ListVersionsResponse struct {
|
||||
Versions []*Version `json:"versions"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
// LocalImage: local image.
|
||||
type LocalImage struct {
|
||||
// ID: UUID of this local image.
|
||||
// Version you will typically use to define an image in an API call.
|
||||
// ID: version you will typically use to define an image in an API call.
|
||||
ID string `json:"id"`
|
||||
|
||||
// CompatibleCommercialTypes: list of all commercial types that are compatible with this local image.
|
||||
CompatibleCommercialTypes []string `json:"compatible_commercial_types"`
|
||||
|
||||
// Arch: supported architecture for this local image.
|
||||
Arch string `json:"arch"`
|
||||
|
||||
// Zone: availability Zone where this local image is available.
|
||||
Zone scw.Zone `json:"zone"`
|
||||
|
||||
// Label: image label this image belongs to.
|
||||
Label string `json:"label"`
|
||||
|
||||
// Type: type of this local image.
|
||||
// Default value: unknown_type
|
||||
Type LocalImageType `json:"type"`
|
||||
|
@ -256,316 +232,101 @@ type LocalImage struct {
|
|||
type Version struct {
|
||||
// ID: UUID of this version.
|
||||
ID string `json:"id"`
|
||||
|
||||
// Name: name of this version.
|
||||
Name string `json:"name"`
|
||||
|
||||
// CreatedAt: creation date of this image version.
|
||||
CreatedAt *time.Time `json:"created_at"`
|
||||
|
||||
// UpdatedAt: date of the last modification of this version.
|
||||
UpdatedAt *time.Time `json:"updated_at"`
|
||||
|
||||
// PublishedAt: date this version was officially published.
|
||||
PublishedAt *time.Time `json:"published_at"`
|
||||
}
|
||||
|
||||
// Service API
|
||||
|
||||
type ListImagesRequest struct {
|
||||
// PageSize: a positive integer lower or equal to 100 to select the number of items to display.
|
||||
PageSize *uint32 `json:"-"`
|
||||
// Page: a positive integer to choose the page to display.
|
||||
Page *int32 `json:"-"`
|
||||
// OrderBy: ordering to use.
|
||||
// Default value: name_asc
|
||||
OrderBy ListImagesRequestOrderBy `json:"-"`
|
||||
// Arch: choose for which machine architecture to return images.
|
||||
Arch *string `json:"-"`
|
||||
// Category: choose the category of images to get.
|
||||
Category *string `json:"-"`
|
||||
// IncludeEol: choose to include end-of-life images.
|
||||
IncludeEol bool `json:"-"`
|
||||
}
|
||||
|
||||
// ListImages: list marketplace images.
|
||||
// List all available images on the marketplace, their UUID, CPU architecture and description.
|
||||
func (s *API) ListImages(req *ListImagesRequest, opts ...scw.RequestOption) (*ListImagesResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
parameter.AddToQuery(query, "arch", req.Arch)
|
||||
parameter.AddToQuery(query, "category", req.Category)
|
||||
parameter.AddToQuery(query, "include_eol", req.IncludeEol)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/images",
|
||||
Query: query,
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListImagesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
// GetCategoryRequest: get category request.
|
||||
type GetCategoryRequest struct {
|
||||
CategoryID string `json:"-"`
|
||||
}
|
||||
|
||||
// GetImageRequest: get image request.
|
||||
type GetImageRequest struct {
|
||||
// ImageID: display the image name.
|
||||
ImageID string `json:"-"`
|
||||
}
|
||||
|
||||
// GetImage: get a specific marketplace image.
|
||||
// Get detailed information about a marketplace image, specified by its `image_id` (UUID format).
|
||||
func (s *API) GetImage(req *GetImageRequest, opts ...scw.RequestOption) (*Image, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/images/" + fmt.Sprint(req.ImageID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp Image
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
type ListVersionsRequest struct {
|
||||
ImageID string `json:"-"`
|
||||
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
Page *int32 `json:"-"`
|
||||
// OrderBy: default value: created_at_asc
|
||||
OrderBy ListVersionsRequestOrderBy `json:"-"`
|
||||
}
|
||||
|
||||
// ListVersions: list versions of an Image.
|
||||
// Get a list of all available version of an image, specified by its `image_id` (UUID format).
|
||||
func (s *API) ListVersions(req *ListVersionsRequest, opts ...scw.RequestOption) (*ListVersionsResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "image_id", req.ImageID)
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/versions",
|
||||
Query: query,
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListVersionsResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
type GetVersionRequest struct {
|
||||
VersionID string `json:"-"`
|
||||
}
|
||||
|
||||
// GetVersion: get a specific image version.
|
||||
// Get information such as the name, creation date, last update and published date for an image version specified by its `version_id` (UUID format).
|
||||
func (s *API) GetVersion(req *GetVersionRequest, opts ...scw.RequestOption) (*Version, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.VersionID) == "" {
|
||||
return nil, errors.New("field VersionID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/versions/" + fmt.Sprint(req.VersionID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp Version
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
type ListLocalImagesRequest struct {
|
||||
ImageID *string `json:"-"`
|
||||
|
||||
VersionID *string `json:"-"`
|
||||
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
Page *int32 `json:"-"`
|
||||
// OrderBy: default value: created_at_asc
|
||||
OrderBy ListLocalImagesRequestOrderBy `json:"-"`
|
||||
|
||||
ImageLabel *string `json:"-"`
|
||||
|
||||
Zone *scw.Zone `json:"-"`
|
||||
// Type: default value: unknown_type
|
||||
Type LocalImageType `json:"-"`
|
||||
}
|
||||
|
||||
// ListLocalImages: list local images from a specific image or version.
|
||||
// List information about local images in a specific Availability Zone, specified by its `image_id` (UUID format), `version_id` (UUID format) or `image_label`. Only one of these three parameters may be set.
|
||||
func (s *API) ListLocalImages(req *ListLocalImagesRequest, opts ...scw.RequestOption) (*ListLocalImagesResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultZone, exist := s.client.GetDefaultZone()
|
||||
if (req.Zone == nil || *req.Zone == "") && exist {
|
||||
req.Zone = &defaultZone
|
||||
}
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "image_id", req.ImageID)
|
||||
parameter.AddToQuery(query, "version_id", req.VersionID)
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
parameter.AddToQuery(query, "image_label", req.ImageLabel)
|
||||
parameter.AddToQuery(query, "zone", req.Zone)
|
||||
parameter.AddToQuery(query, "type", req.Type)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/local-images",
|
||||
Query: query,
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListLocalImagesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// GetLocalImageRequest: get local image request.
|
||||
type GetLocalImageRequest struct {
|
||||
LocalImageID string `json:"-"`
|
||||
}
|
||||
|
||||
// GetLocalImage: get a specific local image by ID.
|
||||
// Get detailed information about a local image, including compatible commercial types, supported architecture, labels and the Availability Zone of the image, specified by its `local_image_id` (UUID format).
|
||||
func (s *API) GetLocalImage(req *GetLocalImageRequest, opts ...scw.RequestOption) (*LocalImage, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.LocalImageID) == "" {
|
||||
return nil, errors.New("field LocalImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/local-images/" + fmt.Sprint(req.LocalImageID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp LocalImage
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
// GetVersionRequest: get version request.
|
||||
type GetVersionRequest struct {
|
||||
VersionID string `json:"-"`
|
||||
}
|
||||
|
||||
// ListCategoriesRequest: list categories request.
|
||||
type ListCategoriesRequest struct {
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
Page *int32 `json:"-"`
|
||||
}
|
||||
|
||||
// ListCategories: list existing image categories.
|
||||
// Get a list of all existing categories. The output can be paginated.
|
||||
func (s *API) ListCategories(req *ListCategoriesRequest, opts ...scw.RequestOption) (*ListCategoriesResponse, error) {
|
||||
var err error
|
||||
// ListCategoriesResponse: list categories response.
|
||||
type ListCategoriesResponse struct {
|
||||
Categories []*Category `json:"categories"`
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/categories",
|
||||
Query: query,
|
||||
Headers: http.Header{},
|
||||
}
|
||||
|
||||
var resp ListCategoriesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
type GetCategoryRequest struct {
|
||||
CategoryID string `json:"-"`
|
||||
// UnsafeGetTotalCount should not be used
|
||||
// Internal usage only
|
||||
func (r *ListCategoriesResponse) UnsafeGetTotalCount() uint32 {
|
||||
return r.TotalCount
|
||||
}
|
||||
|
||||
// GetCategory: get a specific category.
|
||||
// Get information about a specific category of the marketplace catalog, specified by its `category_id` (UUID format).
|
||||
func (s *API) GetCategory(req *GetCategoryRequest, opts ...scw.RequestOption) (*Category, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.CategoryID) == "" {
|
||||
return nil, errors.New("field CategoryID cannot be empty in request")
|
||||
// UnsafeAppend should not be used
|
||||
// Internal usage only
|
||||
func (r *ListCategoriesResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
||||
results, ok := res.(*ListCategoriesResponse)
|
||||
if !ok {
|
||||
return 0, errors.New("%T type cannot be appended to type %T", res, r)
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/categories/" + fmt.Sprint(req.CategoryID) + "",
|
||||
Headers: http.Header{},
|
||||
}
|
||||
r.Categories = append(r.Categories, results.Categories...)
|
||||
r.TotalCount += uint32(len(results.Categories))
|
||||
return uint32(len(results.Categories)), nil
|
||||
}
|
||||
|
||||
var resp Category
|
||||
// ListImagesRequest: list images request.
|
||||
type ListImagesRequest struct {
|
||||
// PageSize: a positive integer lower or equal to 100 to select the number of items to display.
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
// Page: a positive integer to choose the page to display.
|
||||
Page *int32 `json:"-"`
|
||||
|
||||
// OrderBy: ordering to use.
|
||||
// Default value: name_asc
|
||||
OrderBy ListImagesRequestOrderBy `json:"-"`
|
||||
|
||||
// Arch: choose for which machine architecture to return images.
|
||||
Arch *string `json:"-"`
|
||||
|
||||
// Category: choose the category of images to get.
|
||||
Category *string `json:"-"`
|
||||
|
||||
// IncludeEol: choose to include end-of-life images.
|
||||
IncludeEol bool `json:"-"`
|
||||
}
|
||||
|
||||
// ListImagesResponse: list images response.
|
||||
type ListImagesResponse struct {
|
||||
Images []*Image `json:"images"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
|
@ -587,23 +348,36 @@ func (r *ListImagesResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
|||
return uint32(len(results.Images)), nil
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
// Internal usage only
|
||||
func (r *ListVersionsResponse) UnsafeGetTotalCount() uint32 {
|
||||
return r.TotalCount
|
||||
// ListLocalImagesRequest: list local images request.
|
||||
type ListLocalImagesRequest struct {
|
||||
// Precisely one of ImageID, VersionID, ImageLabel must be set.
|
||||
ImageID *string `json:"image_id,omitempty"`
|
||||
|
||||
// Precisely one of ImageID, VersionID, ImageLabel must be set.
|
||||
VersionID *string `json:"version_id,omitempty"`
|
||||
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
Page *int32 `json:"-"`
|
||||
|
||||
// OrderBy: default value: created_at_asc
|
||||
OrderBy ListLocalImagesRequestOrderBy `json:"-"`
|
||||
|
||||
// Precisely one of ImageID, VersionID, ImageLabel must be set.
|
||||
ImageLabel *string `json:"image_label,omitempty"`
|
||||
|
||||
// Zone: zone to target. If none is passed will use default zone from the config.
|
||||
Zone *scw.Zone `json:"-"`
|
||||
|
||||
// Type: default value: unknown_type
|
||||
Type LocalImageType `json:"-"`
|
||||
}
|
||||
|
||||
// UnsafeAppend should not be used
|
||||
// Internal usage only
|
||||
func (r *ListVersionsResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
||||
results, ok := res.(*ListVersionsResponse)
|
||||
if !ok {
|
||||
return 0, errors.New("%T type cannot be appended to type %T", res, r)
|
||||
}
|
||||
// ListLocalImagesResponse: list local images response.
|
||||
type ListLocalImagesResponse struct {
|
||||
LocalImages []*LocalImage `json:"local_images"`
|
||||
|
||||
r.Versions = append(r.Versions, results.Versions...)
|
||||
r.TotalCount += uint32(len(results.Versions))
|
||||
return uint32(len(results.Versions)), nil
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
|
@ -625,21 +399,268 @@ func (r *ListLocalImagesResponse) UnsafeAppend(res interface{}) (uint32, error)
|
|||
return uint32(len(results.LocalImages)), nil
|
||||
}
|
||||
|
||||
// ListVersionsRequest: list versions request.
|
||||
type ListVersionsRequest struct {
|
||||
ImageID string `json:"-"`
|
||||
|
||||
PageSize *uint32 `json:"-"`
|
||||
|
||||
Page *int32 `json:"-"`
|
||||
|
||||
// OrderBy: default value: created_at_asc
|
||||
OrderBy ListVersionsRequestOrderBy `json:"-"`
|
||||
}
|
||||
|
||||
// ListVersionsResponse: list versions response.
|
||||
type ListVersionsResponse struct {
|
||||
Versions []*Version `json:"versions"`
|
||||
|
||||
TotalCount uint32 `json:"total_count"`
|
||||
}
|
||||
|
||||
// UnsafeGetTotalCount should not be used
|
||||
// Internal usage only
|
||||
func (r *ListCategoriesResponse) UnsafeGetTotalCount() uint32 {
|
||||
func (r *ListVersionsResponse) UnsafeGetTotalCount() uint32 {
|
||||
return r.TotalCount
|
||||
}
|
||||
|
||||
// UnsafeAppend should not be used
|
||||
// Internal usage only
|
||||
func (r *ListCategoriesResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
||||
results, ok := res.(*ListCategoriesResponse)
|
||||
func (r *ListVersionsResponse) UnsafeAppend(res interface{}) (uint32, error) {
|
||||
results, ok := res.(*ListVersionsResponse)
|
||||
if !ok {
|
||||
return 0, errors.New("%T type cannot be appended to type %T", res, r)
|
||||
}
|
||||
|
||||
r.Categories = append(r.Categories, results.Categories...)
|
||||
r.TotalCount += uint32(len(results.Categories))
|
||||
return uint32(len(results.Categories)), nil
|
||||
r.Versions = append(r.Versions, results.Versions...)
|
||||
r.TotalCount += uint32(len(results.Versions))
|
||||
return uint32(len(results.Versions)), nil
|
||||
}
|
||||
|
||||
type API struct {
|
||||
client *scw.Client
|
||||
}
|
||||
|
||||
// NewAPI returns a API object from a Scaleway client.
|
||||
func NewAPI(client *scw.Client) *API {
|
||||
return &API{
|
||||
client: client,
|
||||
}
|
||||
}
|
||||
|
||||
// ListImages: List all available images on the marketplace, their UUID, CPU architecture and description.
|
||||
func (s *API) ListImages(req *ListImagesRequest, opts ...scw.RequestOption) (*ListImagesResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
parameter.AddToQuery(query, "arch", req.Arch)
|
||||
parameter.AddToQuery(query, "category", req.Category)
|
||||
parameter.AddToQuery(query, "include_eol", req.IncludeEol)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/images",
|
||||
Query: query,
|
||||
}
|
||||
|
||||
var resp ListImagesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// GetImage: Get detailed information about a marketplace image, specified by its `image_id` (UUID format).
|
||||
func (s *API) GetImage(req *GetImageRequest, opts ...scw.RequestOption) (*Image, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.ImageID) == "" {
|
||||
return nil, errors.New("field ImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/images/" + fmt.Sprint(req.ImageID) + "",
|
||||
}
|
||||
|
||||
var resp Image
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// ListVersions: Get a list of all available version of an image, specified by its `image_id` (UUID format).
|
||||
func (s *API) ListVersions(req *ListVersionsRequest, opts ...scw.RequestOption) (*ListVersionsResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "image_id", req.ImageID)
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/versions",
|
||||
Query: query,
|
||||
}
|
||||
|
||||
var resp ListVersionsResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// GetVersion: Get information such as the name, creation date, last update and published date for an image version specified by its `version_id` (UUID format).
|
||||
func (s *API) GetVersion(req *GetVersionRequest, opts ...scw.RequestOption) (*Version, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.VersionID) == "" {
|
||||
return nil, errors.New("field VersionID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/versions/" + fmt.Sprint(req.VersionID) + "",
|
||||
}
|
||||
|
||||
var resp Version
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// ListLocalImages: List information about local images in a specific Availability Zone, specified by its `image_id` (UUID format), `version_id` (UUID format) or `image_label`. Only one of these three parameters may be set.
|
||||
func (s *API) ListLocalImages(req *ListLocalImagesRequest, opts ...scw.RequestOption) (*ListLocalImagesResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
defaultZone, exist := s.client.GetDefaultZone()
|
||||
if (req.Zone == nil || *req.Zone == "") && exist {
|
||||
req.Zone = &defaultZone
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
parameter.AddToQuery(query, "order_by", req.OrderBy)
|
||||
parameter.AddToQuery(query, "zone", req.Zone)
|
||||
parameter.AddToQuery(query, "type", req.Type)
|
||||
parameter.AddToQuery(query, "image_id", req.ImageID)
|
||||
parameter.AddToQuery(query, "version_id", req.VersionID)
|
||||
parameter.AddToQuery(query, "image_label", req.ImageLabel)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/local-images",
|
||||
Query: query,
|
||||
}
|
||||
|
||||
var resp ListLocalImagesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// GetLocalImage: Get detailed information about a local image, including compatible commercial types, supported architecture, labels and the Availability Zone of the image, specified by its `local_image_id` (UUID format).
|
||||
func (s *API) GetLocalImage(req *GetLocalImageRequest, opts ...scw.RequestOption) (*LocalImage, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.LocalImageID) == "" {
|
||||
return nil, errors.New("field LocalImageID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/local-images/" + fmt.Sprint(req.LocalImageID) + "",
|
||||
}
|
||||
|
||||
var resp LocalImage
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// ListCategories: Get a list of all existing categories. The output can be paginated.
|
||||
func (s *API) ListCategories(req *ListCategoriesRequest, opts ...scw.RequestOption) (*ListCategoriesResponse, error) {
|
||||
var err error
|
||||
|
||||
defaultPageSize, exist := s.client.GetDefaultPageSize()
|
||||
if (req.PageSize == nil || *req.PageSize == 0) && exist {
|
||||
req.PageSize = &defaultPageSize
|
||||
}
|
||||
|
||||
query := url.Values{}
|
||||
parameter.AddToQuery(query, "page_size", req.PageSize)
|
||||
parameter.AddToQuery(query, "page", req.Page)
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/categories",
|
||||
Query: query,
|
||||
}
|
||||
|
||||
var resp ListCategoriesResponse
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
||||
// GetCategory: Get information about a specific category of the marketplace catalog, specified by its `category_id` (UUID format).
|
||||
func (s *API) GetCategory(req *GetCategoryRequest, opts ...scw.RequestOption) (*Category, error) {
|
||||
var err error
|
||||
|
||||
if fmt.Sprint(req.CategoryID) == "" {
|
||||
return nil, errors.New("field CategoryID cannot be empty in request")
|
||||
}
|
||||
|
||||
scwReq := &scw.ScalewayRequest{
|
||||
Method: "GET",
|
||||
Path: "/marketplace/v2/categories/" + fmt.Sprint(req.CategoryID) + "",
|
||||
}
|
||||
|
||||
var resp Category
|
||||
|
||||
err = s.client.Do(scwReq, &resp, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &resp, nil
|
||||
}
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
// This file was automatically generated. DO NOT EDIT.
|
||||
// If you have any remark or suggestion do not hesitate to open an issue.
|
||||
|
||||
// Package std provides methods and message types of the std API.
|
||||
package std
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/marshaler"
|
||||
"github.com/scaleway/scaleway-sdk-go/internal/parameter"
|
||||
"github.com/scaleway/scaleway-sdk-go/namegenerator"
|
||||
"github.com/scaleway/scaleway-sdk-go/scw"
|
||||
)
|
||||
|
||||
// always import dependencies
|
||||
var (
|
||||
_ fmt.Stringer
|
||||
_ json.Unmarshaler
|
||||
_ url.URL
|
||||
_ net.IP
|
||||
_ http.Header
|
||||
_ bytes.Reader
|
||||
_ time.Time
|
||||
_ = strings.Join
|
||||
|
||||
_ scw.ScalewayRequest
|
||||
_ marshaler.Duration
|
||||
_ scw.File
|
||||
_ = parameter.AddToQuery
|
||||
_ = namegenerator.GetRandomName
|
||||
)
|
||||
|
||||
type LanguageCode string
|
||||
|
||||
const (
|
||||
LanguageCodeUnknownLanguageCode = LanguageCode("unknown_language_code")
|
||||
LanguageCodeEnUS = LanguageCode("en_US")
|
||||
LanguageCodeFrFR = LanguageCode("fr_FR")
|
||||
LanguageCodeDeDE = LanguageCode("de_DE")
|
||||
)
|
||||
|
||||
func (enum LanguageCode) String() string {
|
||||
if enum == "" {
|
||||
// return default value if empty
|
||||
return "unknown_language_code"
|
||||
}
|
||||
return string(enum)
|
||||
}
|
||||
|
||||
func (enum LanguageCode) MarshalJSON() ([]byte, error) {
|
||||
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
|
||||
}
|
||||
|
||||
func (enum *LanguageCode) UnmarshalJSON(data []byte) error {
|
||||
tmp := ""
|
||||
|
||||
if err := json.Unmarshal(data, &tmp); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*enum = LanguageCode(LanguageCode(tmp).String())
|
||||
return nil
|
||||
}
|
|
@ -6,6 +6,8 @@ import (
|
|||
"net/url"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"github.com/scaleway/scaleway-sdk-go/scw"
|
||||
)
|
||||
|
||||
// AddToQuery add a key/value pair to an URL query
|
||||
|
@ -24,12 +26,16 @@ func AddToQuery(query url.Values, key string, value interface{}) {
|
|||
switch {
|
||||
case elemType == reflect.TypeOf(net.IP{}):
|
||||
query.Add(key, value.(*net.IP).String())
|
||||
case elemType == reflect.TypeOf(net.IPNet{}):
|
||||
query.Add(key, value.(*net.IPNet).String())
|
||||
case elemType == reflect.TypeOf(scw.IPNet{}):
|
||||
query.Add(key, value.(*scw.IPNet).String())
|
||||
case elemType.Kind() == reflect.Slice:
|
||||
for i := 0; i < elemValue.Len(); i++ {
|
||||
query.Add(key, fmt.Sprint(elemValue.Index(i).Interface()))
|
||||
}
|
||||
case elemType == reflect.TypeOf(time.Time{}):
|
||||
query.Add(key, value.(time.Time).Format(time.RFC3339))
|
||||
query.Add(key, value.(*time.Time).Format(time.RFC3339))
|
||||
default:
|
||||
query.Add(key, fmt.Sprint(elemValue.Interface()))
|
||||
}
|
||||
|
|
|
@ -43,6 +43,28 @@ type File struct {
|
|||
Content io.Reader `json:"content"`
|
||||
}
|
||||
|
||||
func (f *File) MarshalJSON() ([]byte, error) {
|
||||
buf := new(bytes.Buffer)
|
||||
if f.Content != nil {
|
||||
_, err := io.Copy(buf, f.Content)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
tmpFile := struct {
|
||||
Name string `json:"name"`
|
||||
ContentType string `json:"content_type"`
|
||||
Content string `json:"content"`
|
||||
}{
|
||||
Name: f.Name,
|
||||
ContentType: f.ContentType,
|
||||
Content: buf.String(),
|
||||
}
|
||||
|
||||
return json.Marshal(tmpFile)
|
||||
}
|
||||
|
||||
func (f *File) UnmarshalJSON(b []byte) error {
|
||||
type file File
|
||||
var tmpFile struct {
|
||||
|
@ -305,6 +327,15 @@ func (d *Duration) UnmarshalJSON(b []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func NewDurationFromTimeDuration(t time.Duration) *Duration {
|
||||
duration := Duration{
|
||||
Seconds: int64(t.Seconds()),
|
||||
}
|
||||
duration.Nanos = int32(t.Nanoseconds() - (time.Duration(duration.Seconds) * time.Second).Nanoseconds())
|
||||
|
||||
return &duration
|
||||
}
|
||||
|
||||
// splitFloatString splits a float represented in a string, and returns its units (left-coma part) and nanos (right-coma part).
|
||||
// E.g.:
|
||||
// "3" ==> units = 3 | nanos = 0
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
//go:build viper_bind_struct
|
||||
|
||||
package features
|
||||
|
||||
const BindStruct = true
|
5
vendor/github.com/spf13/viper/internal/features/bind_struct_default.go
generated
vendored
Normal file
5
vendor/github.com/spf13/viper/internal/features/bind_struct_default.go
generated
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
//go:build !viper_bind_struct
|
||||
|
||||
package features
|
||||
|
||||
const BindStruct = false
|
|
@ -48,6 +48,7 @@ import (
|
|||
"github.com/spf13/viper/internal/encoding/json"
|
||||
"github.com/spf13/viper/internal/encoding/toml"
|
||||
"github.com/spf13/viper/internal/encoding/yaml"
|
||||
"github.com/spf13/viper/internal/features"
|
||||
)
|
||||
|
||||
// ConfigMarshalError happens when failing to marshal the configuration.
|
||||
|
@ -1114,14 +1115,20 @@ func Unmarshal(rawVal any, opts ...DecoderConfigOption) error {
|
|||
}
|
||||
|
||||
func (v *Viper) Unmarshal(rawVal any, opts ...DecoderConfigOption) error {
|
||||
// TODO: make this optional?
|
||||
structKeys, err := v.decodeStructKeys(rawVal, opts...)
|
||||
if err != nil {
|
||||
return err
|
||||
keys := v.AllKeys()
|
||||
|
||||
if features.BindStruct {
|
||||
// TODO: make this optional?
|
||||
structKeys, err := v.decodeStructKeys(rawVal, opts...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
keys = append(keys, structKeys...)
|
||||
}
|
||||
|
||||
// TODO: struct keys should be enough?
|
||||
return decode(v.getSettings(append(v.AllKeys(), structKeys...)), defaultDecoderConfig(rawVal, opts...))
|
||||
return decode(v.getSettings(keys), defaultDecoderConfig(rawVal, opts...))
|
||||
}
|
||||
|
||||
func (v *Viper) decodeStructKeys(input any, opts ...DecoderConfigOption) ([]string, error) {
|
||||
|
@ -1179,7 +1186,20 @@ func (v *Viper) UnmarshalExact(rawVal any, opts ...DecoderConfigOption) error {
|
|||
config := defaultDecoderConfig(rawVal, opts...)
|
||||
config.ErrorUnused = true
|
||||
|
||||
return decode(v.AllSettings(), config)
|
||||
keys := v.AllKeys()
|
||||
|
||||
if features.BindStruct {
|
||||
// TODO: make this optional?
|
||||
structKeys, err := v.decodeStructKeys(rawVal, opts...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
keys = append(keys, structKeys...)
|
||||
}
|
||||
|
||||
// TODO: struct keys should be enough?
|
||||
return decode(v.getSettings(keys), config)
|
||||
}
|
||||
|
||||
// BindPFlags binds a full flag set to the configuration, using each flag's long
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build go1.7 && amd64 && gc && !purego
|
||||
//go:build amd64 && gc && !purego
|
||||
|
||||
package blake2b
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build go1.7 && amd64 && gc && !purego
|
||||
//go:build amd64 && gc && !purego
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build !go1.7 && amd64 && gc && !purego
|
||||
|
||||
package blake2b
|
||||
|
||||
import "golang.org/x/sys/cpu"
|
||||
|
||||
func init() {
|
||||
useSSE4 = cpu.X86.HasSSE41
|
||||
}
|
||||
|
||||
//go:noescape
|
||||
func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte)
|
||||
|
||||
func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) {
|
||||
if useSSE4 {
|
||||
hashBlocksSSE4(h, c, flag, blocks)
|
||||
} else {
|
||||
hashBlocksGeneric(h, c, flag, blocks)
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@
|
|||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build go1.9
|
||||
|
||||
package blake2b
|
||||
|
||||
import (
|
||||
|
|
|
@ -187,9 +187,11 @@ type channel struct {
|
|||
pending *buffer
|
||||
extPending *buffer
|
||||
|
||||
// windowMu protects myWindow, the flow-control window.
|
||||
windowMu sync.Mutex
|
||||
myWindow uint32
|
||||
// windowMu protects myWindow, the flow-control window, and myConsumed,
|
||||
// the number of bytes consumed since we last increased myWindow
|
||||
windowMu sync.Mutex
|
||||
myWindow uint32
|
||||
myConsumed uint32
|
||||
|
||||
// writeMu serializes calls to mux.conn.writePacket() and
|
||||
// protects sentClose and packetPool. This mutex must be
|
||||
|
@ -332,14 +334,24 @@ func (ch *channel) handleData(packet []byte) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (c *channel) adjustWindow(n uint32) error {
|
||||
func (c *channel) adjustWindow(adj uint32) error {
|
||||
c.windowMu.Lock()
|
||||
// Since myWindow is managed on our side, and can never exceed
|
||||
// the initial window setting, we don't worry about overflow.
|
||||
c.myWindow += uint32(n)
|
||||
// Since myConsumed and myWindow are managed on our side, and can never
|
||||
// exceed the initial window setting, we don't worry about overflow.
|
||||
c.myConsumed += adj
|
||||
var sendAdj uint32
|
||||
if (channelWindowSize-c.myWindow > 3*c.maxIncomingPayload) ||
|
||||
(c.myWindow < channelWindowSize/2) {
|
||||
sendAdj = c.myConsumed
|
||||
c.myConsumed = 0
|
||||
c.myWindow += sendAdj
|
||||
}
|
||||
c.windowMu.Unlock()
|
||||
if sendAdj == 0 {
|
||||
return nil
|
||||
}
|
||||
return c.sendMessage(windowAdjustMsg{
|
||||
AdditionalBytes: uint32(n),
|
||||
AdditionalBytes: sendAdj,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ func NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan
|
|||
|
||||
if err := conn.clientHandshake(addr, &fullConf); err != nil {
|
||||
c.Close()
|
||||
return nil, nil, nil, fmt.Errorf("ssh: handshake failed: %v", err)
|
||||
return nil, nil, nil, fmt.Errorf("ssh: handshake failed: %w", err)
|
||||
}
|
||||
conn.mux = newMux(conn.transport)
|
||||
return conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil
|
||||
|
|
|
@ -35,6 +35,16 @@ type keyingTransport interface {
|
|||
// direction will be effected if a msgNewKeys message is sent
|
||||
// or received.
|
||||
prepareKeyChange(*algorithms, *kexResult) error
|
||||
|
||||
// setStrictMode sets the strict KEX mode, notably triggering
|
||||
// sequence number resets on sending or receiving msgNewKeys.
|
||||
// If the sequence number is already > 1 when setStrictMode
|
||||
// is called, an error is returned.
|
||||
setStrictMode() error
|
||||
|
||||
// setInitialKEXDone indicates to the transport that the initial key exchange
|
||||
// was completed
|
||||
setInitialKEXDone()
|
||||
}
|
||||
|
||||
// handshakeTransport implements rekeying on top of a keyingTransport
|
||||
|
@ -100,6 +110,10 @@ type handshakeTransport struct {
|
|||
|
||||
// The session ID or nil if first kex did not complete yet.
|
||||
sessionID []byte
|
||||
|
||||
// strictMode indicates if the other side of the handshake indicated
|
||||
// that we should be following the strict KEX protocol restrictions.
|
||||
strictMode bool
|
||||
}
|
||||
|
||||
type pendingKex struct {
|
||||
|
@ -209,7 +223,10 @@ func (t *handshakeTransport) readLoop() {
|
|||
close(t.incoming)
|
||||
break
|
||||
}
|
||||
if p[0] == msgIgnore || p[0] == msgDebug {
|
||||
// If this is the first kex, and strict KEX mode is enabled,
|
||||
// we don't ignore any messages, as they may be used to manipulate
|
||||
// the packet sequence numbers.
|
||||
if !(t.sessionID == nil && t.strictMode) && (p[0] == msgIgnore || p[0] == msgDebug) {
|
||||
continue
|
||||
}
|
||||
t.incoming <- p
|
||||
|
@ -441,6 +458,11 @@ func (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) {
|
|||
return successPacket, nil
|
||||
}
|
||||
|
||||
const (
|
||||
kexStrictClient = "kex-strict-c-v00@openssh.com"
|
||||
kexStrictServer = "kex-strict-s-v00@openssh.com"
|
||||
)
|
||||
|
||||
// sendKexInit sends a key change message.
|
||||
func (t *handshakeTransport) sendKexInit() error {
|
||||
t.mu.Lock()
|
||||
|
@ -454,7 +476,6 @@ func (t *handshakeTransport) sendKexInit() error {
|
|||
}
|
||||
|
||||
msg := &kexInitMsg{
|
||||
KexAlgos: t.config.KeyExchanges,
|
||||
CiphersClientServer: t.config.Ciphers,
|
||||
CiphersServerClient: t.config.Ciphers,
|
||||
MACsClientServer: t.config.MACs,
|
||||
|
@ -464,6 +485,13 @@ func (t *handshakeTransport) sendKexInit() error {
|
|||
}
|
||||
io.ReadFull(rand.Reader, msg.Cookie[:])
|
||||
|
||||
// We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm,
|
||||
// and possibly to add the ext-info extension algorithm. Since the slice may be the
|
||||
// user owned KeyExchanges, we create our own slice in order to avoid using user
|
||||
// owned memory by mistake.
|
||||
msg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+2) // room for kex-strict and ext-info
|
||||
msg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...)
|
||||
|
||||
isServer := len(t.hostKeys) > 0
|
||||
if isServer {
|
||||
for _, k := range t.hostKeys {
|
||||
|
@ -488,17 +516,24 @@ func (t *handshakeTransport) sendKexInit() error {
|
|||
msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat)
|
||||
}
|
||||
}
|
||||
|
||||
if t.sessionID == nil {
|
||||
msg.KexAlgos = append(msg.KexAlgos, kexStrictServer)
|
||||
}
|
||||
} else {
|
||||
msg.ServerHostKeyAlgos = t.hostKeyAlgorithms
|
||||
|
||||
// As a client we opt in to receiving SSH_MSG_EXT_INFO so we know what
|
||||
// algorithms the server supports for public key authentication. See RFC
|
||||
// 8308, Section 2.1.
|
||||
//
|
||||
// We also send the strict KEX mode extension algorithm, in order to opt
|
||||
// into the strict KEX mode.
|
||||
if firstKeyExchange := t.sessionID == nil; firstKeyExchange {
|
||||
msg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+1)
|
||||
msg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...)
|
||||
msg.KexAlgos = append(msg.KexAlgos, "ext-info-c")
|
||||
msg.KexAlgos = append(msg.KexAlgos, kexStrictClient)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
packet := Marshal(msg)
|
||||
|
@ -604,6 +639,13 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error {
|
|||
return err
|
||||
}
|
||||
|
||||
if t.sessionID == nil && ((isClient && contains(serverInit.KexAlgos, kexStrictServer)) || (!isClient && contains(clientInit.KexAlgos, kexStrictClient))) {
|
||||
t.strictMode = true
|
||||
if err := t.conn.setStrictMode(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// We don't send FirstKexFollows, but we handle receiving it.
|
||||
//
|
||||
// RFC 4253 section 7 defines the kex and the agreement method for
|
||||
|
@ -679,6 +721,12 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error {
|
|||
return unexpectedMessageError(msgNewKeys, packet[0])
|
||||
}
|
||||
|
||||
if firstKeyExchange {
|
||||
// Indicates to the transport that the first key exchange is completed
|
||||
// after receiving SSH_MSG_NEWKEYS.
|
||||
t.conn.setInitialKEXDone()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -213,6 +213,7 @@ func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewCha
|
|||
} else {
|
||||
for _, algo := range fullConf.PublicKeyAuthAlgorithms {
|
||||
if !contains(supportedPubKeyAuthAlgos, algo) {
|
||||
c.Close()
|
||||
return nil, nil, nil, fmt.Errorf("ssh: unsupported public key authentication algorithm %s", algo)
|
||||
}
|
||||
}
|
||||
|
@ -220,6 +221,7 @@ func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewCha
|
|||
// Check if the config contains any unsupported key exchanges
|
||||
for _, kex := range fullConf.KeyExchanges {
|
||||
if _, ok := serverForbiddenKexAlgos[kex]; ok {
|
||||
c.Close()
|
||||
return nil, nil, nil, fmt.Errorf("ssh: unsupported key exchange %s for server", kex)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -49,6 +49,9 @@ type transport struct {
|
|||
rand io.Reader
|
||||
isClient bool
|
||||
io.Closer
|
||||
|
||||
strictMode bool
|
||||
initialKEXDone bool
|
||||
}
|
||||
|
||||
// packetCipher represents a combination of SSH encryption/MAC
|
||||
|
@ -74,6 +77,18 @@ type connectionState struct {
|
|||
pendingKeyChange chan packetCipher
|
||||
}
|
||||
|
||||
func (t *transport) setStrictMode() error {
|
||||
if t.reader.seqNum != 1 {
|
||||
return errors.New("ssh: sequence number != 1 when strict KEX mode requested")
|
||||
}
|
||||
t.strictMode = true
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *transport) setInitialKEXDone() {
|
||||
t.initialKEXDone = true
|
||||
}
|
||||
|
||||
// prepareKeyChange sets up key material for a keychange. The key changes in
|
||||
// both directions are triggered by reading and writing a msgNewKey packet
|
||||
// respectively.
|
||||
|
@ -112,11 +127,12 @@ func (t *transport) printPacket(p []byte, write bool) {
|
|||
// Read and decrypt next packet.
|
||||
func (t *transport) readPacket() (p []byte, err error) {
|
||||
for {
|
||||
p, err = t.reader.readPacket(t.bufReader)
|
||||
p, err = t.reader.readPacket(t.bufReader, t.strictMode)
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
if len(p) == 0 || (p[0] != msgIgnore && p[0] != msgDebug) {
|
||||
// in strict mode we pass through DEBUG and IGNORE packets only during the initial KEX
|
||||
if len(p) == 0 || (t.strictMode && !t.initialKEXDone) || (p[0] != msgIgnore && p[0] != msgDebug) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -127,7 +143,7 @@ func (t *transport) readPacket() (p []byte, err error) {
|
|||
return p, err
|
||||
}
|
||||
|
||||
func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) {
|
||||
func (s *connectionState) readPacket(r *bufio.Reader, strictMode bool) ([]byte, error) {
|
||||
packet, err := s.packetCipher.readCipherPacket(s.seqNum, r)
|
||||
s.seqNum++
|
||||
if err == nil && len(packet) == 0 {
|
||||
|
@ -140,6 +156,9 @@ func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) {
|
|||
select {
|
||||
case cipher := <-s.pendingKeyChange:
|
||||
s.packetCipher = cipher
|
||||
if strictMode {
|
||||
s.seqNum = 0
|
||||
}
|
||||
default:
|
||||
return nil, errors.New("ssh: got bogus newkeys message")
|
||||
}
|
||||
|
@ -170,10 +189,10 @@ func (t *transport) writePacket(packet []byte) error {
|
|||
if debugTransport {
|
||||
t.printPacket(packet, true)
|
||||
}
|
||||
return t.writer.writePacket(t.bufWriter, t.rand, packet)
|
||||
return t.writer.writePacket(t.bufWriter, t.rand, packet, t.strictMode)
|
||||
}
|
||||
|
||||
func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte) error {
|
||||
func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte, strictMode bool) error {
|
||||
changeKeys := len(packet) > 0 && packet[0] == msgNewKeys
|
||||
|
||||
err := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet)
|
||||
|
@ -188,6 +207,9 @@ func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []
|
|||
select {
|
||||
case cipher := <-s.pendingKeyChange:
|
||||
s.packetCipher = cipher
|
||||
if strictMode {
|
||||
s.seqNum = 0
|
||||
}
|
||||
default:
|
||||
panic("ssh: no key material for msgNewKeys")
|
||||
}
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Package context defines the Context type, which carries deadlines,
|
||||
// cancelation signals, and other request-scoped values across API boundaries
|
||||
// and between processes.
|
||||
// As of Go 1.7 this package is available in the standard library under the
|
||||
// name context. https://golang.org/pkg/context.
|
||||
//
|
||||
// Incoming requests to a server should create a Context, and outgoing calls to
|
||||
// servers should accept a Context. The chain of function calls between must
|
||||
// propagate the Context, optionally replacing it with a modified copy created
|
||||
// using WithDeadline, WithTimeout, WithCancel, or WithValue.
|
||||
//
|
||||
// Programs that use Contexts should follow these rules to keep interfaces
|
||||
// consistent across packages and enable static analysis tools to check context
|
||||
// propagation:
|
||||
//
|
||||
// Do not store Contexts inside a struct type; instead, pass a Context
|
||||
// explicitly to each function that needs it. The Context should be the first
|
||||
// parameter, typically named ctx:
|
||||
//
|
||||
// func DoSomething(ctx context.Context, arg Arg) error {
|
||||
// // ... use ctx ...
|
||||
// }
|
||||
//
|
||||
// Do not pass a nil Context, even if a function permits it. Pass context.TODO
|
||||
// if you are unsure about which Context to use.
|
||||
//
|
||||
// Use context Values only for request-scoped data that transits processes and
|
||||
// APIs, not for passing optional parameters to functions.
|
||||
//
|
||||
// The same Context may be passed to functions running in different goroutines;
|
||||
// Contexts are safe for simultaneous use by multiple goroutines.
|
||||
//
|
||||
// See http://blog.golang.org/context for example code for a server that uses
|
||||
// Contexts.
|
||||
package context // import "golang.org/x/net/context"
|
||||
|
||||
// Background returns a non-nil, empty Context. It is never canceled, has no
|
||||
// values, and has no deadline. It is typically used by the main function,
|
||||
// initialization, and tests, and as the top-level Context for incoming
|
||||
// requests.
|
||||
func Background() Context {
|
||||
return background
|
||||
}
|
||||
|
||||
// TODO returns a non-nil, empty Context. Code should use context.TODO when
|
||||
// it's unclear which Context to use or it is not yet available (because the
|
||||
// surrounding function has not yet been extended to accept a Context
|
||||
// parameter). TODO is recognized by static analysis tools that determine
|
||||
// whether Contexts are propagated correctly in a program.
|
||||
func TODO() Context {
|
||||
return todo
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
// Copyright 2016 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build go1.7
|
||||
|
||||
package context
|
||||
|
||||
import (
|
||||
"context" // standard library's context, as of Go 1.7
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
todo = context.TODO()
|
||||
background = context.Background()
|
||||
)
|
||||
|
||||
// Canceled is the error returned by Context.Err when the context is canceled.
|
||||
var Canceled = context.Canceled
|
||||
|
||||
// DeadlineExceeded is the error returned by Context.Err when the context's
|
||||
// deadline passes.
|
||||
var DeadlineExceeded = context.DeadlineExceeded
|
||||
|
||||
// WithCancel returns a copy of parent with a new Done channel. The returned
|
||||
// context's Done channel is closed when the returned cancel function is called
|
||||
// or when the parent context's Done channel is closed, whichever happens first.
|
||||
//
|
||||
// Canceling this context releases resources associated with it, so code should
|
||||
// call cancel as soon as the operations running in this Context complete.
|
||||
func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
|
||||
ctx, f := context.WithCancel(parent)
|
||||
return ctx, f
|
||||
}
|
||||
|
||||
// WithDeadline returns a copy of the parent context with the deadline adjusted
|
||||
// to be no later than d. If the parent's deadline is already earlier than d,
|
||||
// WithDeadline(parent, d) is semantically equivalent to parent. The returned
|
||||
// context's Done channel is closed when the deadline expires, when the returned
|
||||
// cancel function is called, or when the parent context's Done channel is
|
||||
// closed, whichever happens first.
|
||||
//
|
||||
// Canceling this context releases resources associated with it, so code should
|
||||
// call cancel as soon as the operations running in this Context complete.
|
||||
func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
|
||||
ctx, f := context.WithDeadline(parent, deadline)
|
||||
return ctx, f
|
||||
}
|
||||
|
||||
// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
|
||||
//
|
||||
// Canceling this context releases resources associated with it, so code should
|
||||
// call cancel as soon as the operations running in this Context complete:
|
||||
//
|
||||
// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
|
||||
// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
|
||||
// defer cancel() // releases resources if slowOperation completes before timeout elapses
|
||||
// return slowOperation(ctx)
|
||||
// }
|
||||
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
|
||||
return WithDeadline(parent, time.Now().Add(timeout))
|
||||
}
|
||||
|
||||
// WithValue returns a copy of parent in which the value associated with key is
|
||||
// val.
|
||||
//
|
||||
// Use context Values only for request-scoped data that transits processes and
|
||||
// APIs, not for passing optional parameters to functions.
|
||||
func WithValue(parent Context, key interface{}, val interface{}) Context {
|
||||
return context.WithValue(parent, key, val)
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
// Copyright 2017 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build go1.9
|
||||
|
||||
package context
|
||||
|
||||
import "context" // standard library's context, as of Go 1.7
|
||||
|
||||
// A Context carries a deadline, a cancelation signal, and other values across
|
||||
// API boundaries.
|
||||
//
|
||||
// Context's methods may be called by multiple goroutines simultaneously.
|
||||
type Context = context.Context
|
||||
|
||||
// A CancelFunc tells an operation to abandon its work.
|
||||
// A CancelFunc does not wait for the work to stop.
|
||||
// After the first call, subsequent calls to a CancelFunc do nothing.
|
||||
type CancelFunc = context.CancelFunc
|
|
@ -1,300 +0,0 @@
|
|||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build !go1.7
|
||||
|
||||
package context
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
)
|
||||
|
||||
// An emptyCtx is never canceled, has no values, and has no deadline. It is not
|
||||
// struct{}, since vars of this type must have distinct addresses.
|
||||
type emptyCtx int
|
||||
|
||||
func (*emptyCtx) Deadline() (deadline time.Time, ok bool) {
|
||||
return
|
||||
}
|
||||
|
||||
func (*emptyCtx) Done() <-chan struct{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*emptyCtx) Err() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (*emptyCtx) Value(key interface{}) interface{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *emptyCtx) String() string {
|
||||
switch e {
|
||||
case background:
|
||||
return "context.Background"
|
||||
case todo:
|
||||
return "context.TODO"
|
||||
}
|
||||
return "unknown empty Context"
|
||||
}
|
||||
|
||||
var (
|
||||
background = new(emptyCtx)
|
||||
todo = new(emptyCtx)
|
||||
)
|
||||
|
||||
// Canceled is the error returned by Context.Err when the context is canceled.
|
||||
var Canceled = errors.New("context canceled")
|
||||
|
||||
// DeadlineExceeded is the error returned by Context.Err when the context's
|
||||
// deadline passes.
|
||||
var DeadlineExceeded = errors.New("context deadline exceeded")
|
||||
|
||||
// WithCancel returns a copy of parent with a new Done channel. The returned
|
||||
// context's Done channel is closed when the returned cancel function is called
|
||||
// or when the parent context's Done channel is closed, whichever happens first.
|
||||
//
|
||||
// Canceling this context releases resources associated with it, so code should
|
||||
// call cancel as soon as the operations running in this Context complete.
|
||||
func WithCancel(parent Context) (ctx Context, cancel CancelFunc) {
|
||||
c := newCancelCtx(parent)
|
||||
propagateCancel(parent, c)
|
||||
return c, func() { c.cancel(true, Canceled) }
|
||||
}
|
||||
|
||||
// newCancelCtx returns an initialized cancelCtx.
|
||||
func newCancelCtx(parent Context) *cancelCtx {
|
||||
return &cancelCtx{
|
||||
Context: parent,
|
||||
done: make(chan struct{}),
|
||||
}
|
||||
}
|
||||
|
||||
// propagateCancel arranges for child to be canceled when parent is.
|
||||
func propagateCancel(parent Context, child canceler) {
|
||||
if parent.Done() == nil {
|
||||
return // parent is never canceled
|
||||
}
|
||||
if p, ok := parentCancelCtx(parent); ok {
|
||||
p.mu.Lock()
|
||||
if p.err != nil {
|
||||
// parent has already been canceled
|
||||
child.cancel(false, p.err)
|
||||
} else {
|
||||
if p.children == nil {
|
||||
p.children = make(map[canceler]bool)
|
||||
}
|
||||
p.children[child] = true
|
||||
}
|
||||
p.mu.Unlock()
|
||||
} else {
|
||||
go func() {
|
||||
select {
|
||||
case <-parent.Done():
|
||||
child.cancel(false, parent.Err())
|
||||
case <-child.Done():
|
||||
}
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
// parentCancelCtx follows a chain of parent references until it finds a
|
||||
// *cancelCtx. This function understands how each of the concrete types in this
|
||||
// package represents its parent.
|
||||
func parentCancelCtx(parent Context) (*cancelCtx, bool) {
|
||||
for {
|
||||
switch c := parent.(type) {
|
||||
case *cancelCtx:
|
||||
return c, true
|
||||
case *timerCtx:
|
||||
return c.cancelCtx, true
|
||||
case *valueCtx:
|
||||
parent = c.Context
|
||||
default:
|
||||
return nil, false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// removeChild removes a context from its parent.
|
||||
func removeChild(parent Context, child canceler) {
|
||||
p, ok := parentCancelCtx(parent)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
p.mu.Lock()
|
||||
if p.children != nil {
|
||||
delete(p.children, child)
|
||||
}
|
||||
p.mu.Unlock()
|
||||
}
|
||||
|
||||
// A canceler is a context type that can be canceled directly. The
|
||||
// implementations are *cancelCtx and *timerCtx.
|
||||
type canceler interface {
|
||||
cancel(removeFromParent bool, err error)
|
||||
Done() <-chan struct{}
|
||||
}
|
||||
|
||||
// A cancelCtx can be canceled. When canceled, it also cancels any children
|
||||
// that implement canceler.
|
||||
type cancelCtx struct {
|
||||
Context
|
||||
|
||||
done chan struct{} // closed by the first cancel call.
|
||||
|
||||
mu sync.Mutex
|
||||
children map[canceler]bool // set to nil by the first cancel call
|
||||
err error // set to non-nil by the first cancel call
|
||||
}
|
||||
|
||||
func (c *cancelCtx) Done() <-chan struct{} {
|
||||
return c.done
|
||||
}
|
||||
|
||||
func (c *cancelCtx) Err() error {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
return c.err
|
||||
}
|
||||
|
||||
func (c *cancelCtx) String() string {
|
||||
return fmt.Sprintf("%v.WithCancel", c.Context)
|
||||
}
|
||||
|
||||
// cancel closes c.done, cancels each of c's children, and, if
|
||||
// removeFromParent is true, removes c from its parent's children.
|
||||
func (c *cancelCtx) cancel(removeFromParent bool, err error) {
|
||||
if err == nil {
|
||||
panic("context: internal error: missing cancel error")
|
||||
}
|
||||
c.mu.Lock()
|
||||
if c.err != nil {
|
||||
c.mu.Unlock()
|
||||
return // already canceled
|
||||
}
|
||||
c.err = err
|
||||
close(c.done)
|
||||
for child := range c.children {
|
||||
// NOTE: acquiring the child's lock while holding parent's lock.
|
||||
child.cancel(false, err)
|
||||
}
|
||||
c.children = nil
|
||||
c.mu.Unlock()
|
||||
|
||||
if removeFromParent {
|
||||
removeChild(c.Context, c)
|
||||
}
|
||||
}
|
||||
|
||||
// WithDeadline returns a copy of the parent context with the deadline adjusted
|
||||
// to be no later than d. If the parent's deadline is already earlier than d,
|
||||
// WithDeadline(parent, d) is semantically equivalent to parent. The returned
|
||||
// context's Done channel is closed when the deadline expires, when the returned
|
||||
// cancel function is called, or when the parent context's Done channel is
|
||||
// closed, whichever happens first.
|
||||
//
|
||||
// Canceling this context releases resources associated with it, so code should
|
||||
// call cancel as soon as the operations running in this Context complete.
|
||||
func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) {
|
||||
if cur, ok := parent.Deadline(); ok && cur.Before(deadline) {
|
||||
// The current deadline is already sooner than the new one.
|
||||
return WithCancel(parent)
|
||||
}
|
||||
c := &timerCtx{
|
||||
cancelCtx: newCancelCtx(parent),
|
||||
deadline: deadline,
|
||||
}
|
||||
propagateCancel(parent, c)
|
||||
d := deadline.Sub(time.Now())
|
||||
if d <= 0 {
|
||||
c.cancel(true, DeadlineExceeded) // deadline has already passed
|
||||
return c, func() { c.cancel(true, Canceled) }
|
||||
}
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
if c.err == nil {
|
||||
c.timer = time.AfterFunc(d, func() {
|
||||
c.cancel(true, DeadlineExceeded)
|
||||
})
|
||||
}
|
||||
return c, func() { c.cancel(true, Canceled) }
|
||||
}
|
||||
|
||||
// A timerCtx carries a timer and a deadline. It embeds a cancelCtx to
|
||||
// implement Done and Err. It implements cancel by stopping its timer then
|
||||
// delegating to cancelCtx.cancel.
|
||||
type timerCtx struct {
|
||||
*cancelCtx
|
||||
timer *time.Timer // Under cancelCtx.mu.
|
||||
|
||||
deadline time.Time
|
||||
}
|
||||
|
||||
func (c *timerCtx) Deadline() (deadline time.Time, ok bool) {
|
||||
return c.deadline, true
|
||||
}
|
||||
|
||||
func (c *timerCtx) String() string {
|
||||
return fmt.Sprintf("%v.WithDeadline(%s [%s])", c.cancelCtx.Context, c.deadline, c.deadline.Sub(time.Now()))
|
||||
}
|
||||
|
||||
func (c *timerCtx) cancel(removeFromParent bool, err error) {
|
||||
c.cancelCtx.cancel(false, err)
|
||||
if removeFromParent {
|
||||
// Remove this timerCtx from its parent cancelCtx's children.
|
||||
removeChild(c.cancelCtx.Context, c)
|
||||
}
|
||||
c.mu.Lock()
|
||||
if c.timer != nil {
|
||||
c.timer.Stop()
|
||||
c.timer = nil
|
||||
}
|
||||
c.mu.Unlock()
|
||||
}
|
||||
|
||||
// WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
|
||||
//
|
||||
// Canceling this context releases resources associated with it, so code should
|
||||
// call cancel as soon as the operations running in this Context complete:
|
||||
//
|
||||
// func slowOperationWithTimeout(ctx context.Context) (Result, error) {
|
||||
// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
|
||||
// defer cancel() // releases resources if slowOperation completes before timeout elapses
|
||||
// return slowOperation(ctx)
|
||||
// }
|
||||
func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) {
|
||||
return WithDeadline(parent, time.Now().Add(timeout))
|
||||
}
|
||||
|
||||
// WithValue returns a copy of parent in which the value associated with key is
|
||||
// val.
|
||||
//
|
||||
// Use context Values only for request-scoped data that transits processes and
|
||||
// APIs, not for passing optional parameters to functions.
|
||||
func WithValue(parent Context, key interface{}, val interface{}) Context {
|
||||
return &valueCtx{parent, key, val}
|
||||
}
|
||||
|
||||
// A valueCtx carries a key-value pair. It implements Value for that key and
|
||||
// delegates all other calls to the embedded Context.
|
||||
type valueCtx struct {
|
||||
Context
|
||||
key, val interface{}
|
||||
}
|
||||
|
||||
func (c *valueCtx) String() string {
|
||||
return fmt.Sprintf("%v.WithValue(%#v, %#v)", c.Context, c.key, c.val)
|
||||
}
|
||||
|
||||
func (c *valueCtx) Value(key interface{}) interface{} {
|
||||
if c.key == key {
|
||||
return c.val
|
||||
}
|
||||
return c.Context.Value(key)
|
||||
}
|
|
@ -1,109 +0,0 @@
|
|||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
//go:build !go1.9
|
||||
|
||||
package context
|
||||
|
||||
import "time"
|
||||
|
||||
// A Context carries a deadline, a cancelation signal, and other values across
|
||||
// API boundaries.
|
||||
//
|
||||
// Context's methods may be called by multiple goroutines simultaneously.
|
||||
type Context interface {
|
||||
// Deadline returns the time when work done on behalf of this context
|
||||
// should be canceled. Deadline returns ok==false when no deadline is
|
||||
// set. Successive calls to Deadline return the same results.
|
||||
Deadline() (deadline time.Time, ok bool)
|
||||
|
||||
// Done returns a channel that's closed when work done on behalf of this
|
||||
// context should be canceled. Done may return nil if this context can
|
||||
// never be canceled. Successive calls to Done return the same value.
|
||||
//
|
||||
// WithCancel arranges for Done to be closed when cancel is called;
|
||||
// WithDeadline arranges for Done to be closed when the deadline
|
||||
// expires; WithTimeout arranges for Done to be closed when the timeout
|
||||
// elapses.
|
||||
//
|
||||
// Done is provided for use in select statements:
|
||||
//
|
||||
// // Stream generates values with DoSomething and sends them to out
|
||||
// // until DoSomething returns an error or ctx.Done is closed.
|
||||
// func Stream(ctx context.Context, out chan<- Value) error {
|
||||
// for {
|
||||
// v, err := DoSomething(ctx)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// select {
|
||||
// case <-ctx.Done():
|
||||
// return ctx.Err()
|
||||
// case out <- v:
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// See http://blog.golang.org/pipelines for more examples of how to use
|
||||
// a Done channel for cancelation.
|
||||
Done() <-chan struct{}
|
||||
|
||||
// Err returns a non-nil error value after Done is closed. Err returns
|
||||
// Canceled if the context was canceled or DeadlineExceeded if the
|
||||
// context's deadline passed. No other values for Err are defined.
|
||||
// After Done is closed, successive calls to Err return the same value.
|
||||
Err() error
|
||||
|
||||
// Value returns the value associated with this context for key, or nil
|
||||
// if no value is associated with key. Successive calls to Value with
|
||||
// the same key returns the same result.
|
||||
//
|
||||
// Use context values only for request-scoped data that transits
|
||||
// processes and API boundaries, not for passing optional parameters to
|
||||
// functions.
|
||||
//
|
||||
// A key identifies a specific value in a Context. Functions that wish
|
||||
// to store values in Context typically allocate a key in a global
|
||||
// variable then use that key as the argument to context.WithValue and
|
||||
// Context.Value. A key can be any type that supports equality;
|
||||
// packages should define keys as an unexported type to avoid
|
||||
// collisions.
|
||||
//
|
||||
// Packages that define a Context key should provide type-safe accessors
|
||||
// for the values stores using that key:
|
||||
//
|
||||
// // Package user defines a User type that's stored in Contexts.
|
||||
// package user
|
||||
//
|
||||
// import "golang.org/x/net/context"
|
||||
//
|
||||
// // User is the type of value stored in the Contexts.
|
||||
// type User struct {...}
|
||||
//
|
||||
// // key is an unexported type for keys defined in this package.
|
||||
// // This prevents collisions with keys defined in other packages.
|
||||
// type key int
|
||||
//
|
||||
// // userKey is the key for user.User values in Contexts. It is
|
||||
// // unexported; clients use user.NewContext and user.FromContext
|
||||
// // instead of using this key directly.
|
||||
// var userKey key = 0
|
||||
//
|
||||
// // NewContext returns a new Context that carries value u.
|
||||
// func NewContext(ctx context.Context, u *User) context.Context {
|
||||
// return context.WithValue(ctx, userKey, u)
|
||||
// }
|
||||
//
|
||||
// // FromContext returns the User value stored in ctx, if any.
|
||||
// func FromContext(ctx context.Context) (*User, bool) {
|
||||
// u, ok := ctx.Value(userKey).(*User)
|
||||
// return u, ok
|
||||
// }
|
||||
Value(key interface{}) interface{}
|
||||
}
|
||||
|
||||
// A CancelFunc tells an operation to abandon its work.
|
||||
// A CancelFunc does not wait for the work to stop.
|
||||
// After the first call, subsequent calls to a CancelFunc do nothing.
|
||||
type CancelFunc func()
|
|
@ -9192,7 +9192,7 @@
|
|||
]
|
||||
},
|
||||
"listManagedInstances": {
|
||||
"description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"flatPath": "projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.instanceGroupManagers.listManagedInstances",
|
||||
|
@ -11098,6 +11098,55 @@
|
|||
"https://www.googleapis.com/auth/compute"
|
||||
]
|
||||
},
|
||||
"addNetworkInterface": {
|
||||
"description": "Adds a network interface to an instance.",
|
||||
"flatPath": "projects/{project}/zones/{zone}/instances/{instance}/addNetworkInterface",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.instances.addNetworkInterface",
|
||||
"parameterOrder": [
|
||||
"project",
|
||||
"zone",
|
||||
"instance"
|
||||
],
|
||||
"parameters": {
|
||||
"instance": {
|
||||
"description": "The instance name for this request stored as resource_id. Name should conform to RFC1035 or be an unsigned long integer.",
|
||||
"location": "path",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
"project": {
|
||||
"description": "Project ID for this request.",
|
||||
"location": "path",
|
||||
"pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
"requestId": {
|
||||
"description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported ( 00000000-0000-0000-0000-000000000000).",
|
||||
"location": "query",
|
||||
"type": "string"
|
||||
},
|
||||
"zone": {
|
||||
"description": "The name of the zone for this request.",
|
||||
"location": "path",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"path": "projects/{project}/zones/{zone}/instances/{instance}/addNetworkInterface",
|
||||
"request": {
|
||||
"$ref": "InstancesAddNetworkInterfaceRequest"
|
||||
},
|
||||
"response": {
|
||||
"$ref": "Operation"
|
||||
},
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform",
|
||||
"https://www.googleapis.com/auth/compute"
|
||||
]
|
||||
},
|
||||
"addResourcePolicies": {
|
||||
"description": "Adds existing resource policies to an instance. You can only add one policy right now which will be applied to this instance for scheduling live migrations.",
|
||||
"flatPath": "projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies",
|
||||
|
@ -13379,7 +13428,7 @@
|
|||
],
|
||||
"parameters": {
|
||||
"discardLocalSsd": {
|
||||
"description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
"description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -13436,7 +13485,7 @@
|
|||
],
|
||||
"parameters": {
|
||||
"discardLocalSsd": {
|
||||
"description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
"description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -26215,7 +26264,7 @@
|
|||
]
|
||||
},
|
||||
"listManagedInstances": {
|
||||
"description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"flatPath": "projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.regionInstanceGroupManagers.listManagedInstances",
|
||||
|
@ -40966,7 +41015,7 @@
|
|||
]
|
||||
},
|
||||
"setSslPolicy": {
|
||||
"description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
"description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
"flatPath": "projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.targetSslProxies.setSslPolicy",
|
||||
|
@ -43552,7 +43601,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"revision": "20231031",
|
||||
"revision": "20231128",
|
||||
"rootUrl": "https://compute.googleapis.com/",
|
||||
"schemas": {
|
||||
"AWSV4Signature": {
|
||||
|
@ -44807,6 +44856,10 @@
|
|||
"description": "Whether to enable UEFI networking for instance creation.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"enableWatchdogTimer": {
|
||||
"description": "Whether to enable the watchdog timer.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"numaNodeCount": {
|
||||
"description": "The number of vNUMA nodes.",
|
||||
"format": "int32",
|
||||
|
@ -46752,7 +46805,7 @@
|
|||
"id": "BackendService",
|
||||
"properties": {
|
||||
"affinityCookieTtlSec": {
|
||||
"description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
|
||||
"description": "Lifetime of cookies in seconds. This setting is applicable to Application Load Balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
|
@ -46787,7 +46840,7 @@
|
|||
},
|
||||
"connectionTrackingPolicy": {
|
||||
"$ref": "BackendServiceConnectionTrackingPolicy",
|
||||
"description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
|
||||
"description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for external passthrough Network Load Balancers and internal passthrough Network Load Balancers."
|
||||
},
|
||||
"consistentHash": {
|
||||
"$ref": "ConsistentHashLoadBalancerSettings",
|
||||
|
@ -46820,18 +46873,22 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enableCDN": {
|
||||
"description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
|
||||
"description": "If true, enables Cloud CDN for the backend service of a global external Application Load Balancer.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"failoverPolicy": {
|
||||
"$ref": "BackendServiceFailoverPolicy",
|
||||
"description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
|
||||
"description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
|
||||
},
|
||||
"fingerprint": {
|
||||
"description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
|
||||
"format": "byte",
|
||||
"type": "string"
|
||||
},
|
||||
"haPolicy": {
|
||||
"$ref": "BackendServiceHAPolicy",
|
||||
"description": "Configuring haPolicy is not supported."
|
||||
},
|
||||
"healthChecks": {
|
||||
"description": "The list of URLs to the healthChecks, httpHealthChecks (legacy), or httpsHealthChecks (legacy) resource for health checking this backend service. Not all backend services support legacy health checks. See Load balancer guide. Currently, at most one health check can be specified for each backend service. Backend services with instance group or zonal NEG backends must have a health check. Backend services with internet or serverless NEG backends must not have a health check.",
|
||||
"items": {
|
||||
|
@ -46841,7 +46898,7 @@
|
|||
},
|
||||
"iap": {
|
||||
"$ref": "BackendServiceIAP",
|
||||
"description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
|
||||
"description": "The configurations for Identity-Aware Proxy on this resource. Not available for internal passthrough Network Load Balancers and external passthrough Network Load Balancers."
|
||||
},
|
||||
"id": {
|
||||
"description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
|
||||
|
@ -46849,7 +46906,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"ipAddressSelectionPolicy": {
|
||||
"description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
|
||||
"description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced global external Application Load Balancer (load balancing scheme EXTERNAL_MANAGED), - Regional external Application Load Balancer, - Internal proxy Network Load Balancer (load balancing scheme INTERNAL_MANAGED), - Regional internal Application Load Balancer (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
|
||||
"enum": [
|
||||
"IPV4_ONLY",
|
||||
"IPV6_ONLY",
|
||||
|
@ -46880,10 +46937,10 @@
|
|||
"INVALID_LOAD_BALANCING_SCHEME"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
|
||||
"Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
|
||||
"Signifies that this will be used for Internal TCP/UDP Load Balancing.",
|
||||
"Signifies that this will be used for Internal HTTP(S) Load Balancing.",
|
||||
"Signifies that this will be used for classic Application Load Balancers, global external proxy Network Load Balancers, or external passthrough Network Load Balancers.",
|
||||
"Signifies that this will be used for global external Application Load Balancers, regional external Application Load Balancers, or regional external proxy Network Load Balancers.",
|
||||
"Signifies that this will be used for internal passthrough Network Load Balancers.",
|
||||
"Signifies that this will be used for internal Application Load Balancers.",
|
||||
"Signifies that this will be used by Traffic Director.",
|
||||
""
|
||||
],
|
||||
|
@ -46950,12 +47007,12 @@
|
|||
},
|
||||
"port": {
|
||||
"deprecated": true,
|
||||
"description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
|
||||
"description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"portName": {
|
||||
"description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
|
||||
"description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port_name.",
|
||||
"type": "string"
|
||||
},
|
||||
"protocol": {
|
||||
|
@ -47356,11 +47413,11 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enableStrongAffinity": {
|
||||
"description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly.",
|
||||
"description": "Enable Strong Session Affinity for external passthrough Network Load Balancers. This option is not available publicly.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"idleTimeoutSec": {
|
||||
"description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly.",
|
||||
"description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For internal passthrough Network Load Balancers: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For external passthrough Network Load Balancers the default is 60 seconds. This option is not available publicly.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
|
@ -47382,7 +47439,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"BackendServiceFailoverPolicy": {
|
||||
"description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
|
||||
"description": "For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
|
||||
"id": "BackendServiceFailoverPolicy",
|
||||
"properties": {
|
||||
"disableConnectionDrainOnFailover": {
|
||||
|
@ -47390,7 +47447,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"dropTrafficIfUnhealthy": {
|
||||
"description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false.",
|
||||
"description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"failoverRatio": {
|
||||
|
@ -47426,6 +47483,52 @@
|
|||
},
|
||||
"type": "object"
|
||||
},
|
||||
"BackendServiceHAPolicy": {
|
||||
"id": "BackendServiceHAPolicy",
|
||||
"properties": {
|
||||
"fastIPMove": {
|
||||
"description": "Enabling fastIPMove is not supported.",
|
||||
"enum": [
|
||||
"DISABLED",
|
||||
"GARP_RA"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"leader": {
|
||||
"$ref": "BackendServiceHAPolicyLeader",
|
||||
"description": "Setting a leader is not supported."
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"BackendServiceHAPolicyLeader": {
|
||||
"id": "BackendServiceHAPolicyLeader",
|
||||
"properties": {
|
||||
"backendGroup": {
|
||||
"description": "Setting backendGroup is not supported.",
|
||||
"type": "string"
|
||||
},
|
||||
"networkEndpoint": {
|
||||
"$ref": "BackendServiceHAPolicyLeaderNetworkEndpoint",
|
||||
"description": "Setting a network endpoint as leader is not supported."
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"BackendServiceHAPolicyLeaderNetworkEndpoint": {
|
||||
"id": "BackendServiceHAPolicyLeaderNetworkEndpoint",
|
||||
"properties": {
|
||||
"instance": {
|
||||
"description": "Specifying the instance name of a leader is not supported.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"BackendServiceIAP": {
|
||||
"description": "Identity-Aware Proxy",
|
||||
"id": "BackendServiceIAP",
|
||||
|
@ -49927,6 +50030,11 @@
|
|||
"$ref": "DiskResourceStatus",
|
||||
"description": "[Output Only] Status information for the disk resource."
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "Output only. Reserved for future use.",
|
||||
"readOnly": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -52682,7 +52790,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"ForwardingRule": {
|
||||
"description": "Represents a Forwarding Rule resource. Forwarding rule resources in Google Cloud can be either regional or global in scope: * [Global](https://cloud.google.com/compute/docs/reference/rest/alpha/globalForwardingRules) * [Regional](https://cloud.google.com/compute/docs/reference/rest/alpha/forwardingRules) A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud Platform load balancer. Forwarding rules can also reference target instances and Cloud VPN Classic gateways (targetVpnGateway). For more information, read Forwarding rule concepts and Using protocol forwarding.",
|
||||
"description": "Represents a Forwarding Rule resource. Forwarding rule resources in Google Cloud can be either regional or global in scope: * [Global](https://cloud.google.com/compute/docs/reference/rest/alpha/globalForwardingRules) * [Regional](https://cloud.google.com/compute/docs/reference/rest/alpha/forwardingRules) A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules can also reference target instances and Cloud VPN Classic gateways (targetVpnGateway). For more information, read Forwarding rule concepts and Using protocol forwarding.",
|
||||
"id": "ForwardingRule",
|
||||
"properties": {
|
||||
"IPAddress": {
|
||||
|
@ -52718,7 +52826,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"allowGlobalAccess": {
|
||||
"description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
|
||||
"description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the internal passthrough Network Load Balancers, the regional internal Application Load Balancer, and the regional internal proxy Network Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"allowPscGlobalAccess": {
|
||||
|
@ -52730,11 +52838,11 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"backendService": {
|
||||
"description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
|
||||
"description": "Identifies the backend service to which the forwarding rule sends traffic. Required for internal and external passthrough Network Load Balancers; must be omitted for all other load balancer types.",
|
||||
"type": "string"
|
||||
},
|
||||
"baseForwardingRule": {
|
||||
"description": "[Output Only] The URL for the corresponding base Forwarding Rule. By base Forwarding Rule, we mean the Forwarding Rule that has the same IP address, protocol, and port settings with the current Forwarding Rule, but without sourceIPRanges specified. Always empty if the current Forwarding Rule does not have sourceIPRanges specified.",
|
||||
"description": "[Output Only] The URL for the corresponding base forwarding rule. By base forwarding rule, we mean the forwarding rule that has the same IP address, protocol, and port settings with the current forwarding rule, but without sourceIPRanges specified. Always empty if the current forwarding rule does not have sourceIPRanges specified.",
|
||||
"type": "string"
|
||||
},
|
||||
"creationTimestamp": {
|
||||
|
@ -52779,7 +52887,7 @@
|
|||
},
|
||||
"kind": {
|
||||
"default": "compute#forwardingRule",
|
||||
"description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
|
||||
"description": "[Output Only] Type of the resource. Always compute#forwardingRule for forwarding rule resources.",
|
||||
"type": "string"
|
||||
},
|
||||
"labelFingerprint": {
|
||||
|
@ -52827,7 +52935,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"network": {
|
||||
"description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
|
||||
"description": "This field is not used for global external load balancing. For internal passthrough Network Load Balancers, this field identifies the network that the load balanced IP should belong to for this forwarding rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
|
||||
"type": "string"
|
||||
},
|
||||
"networkTier": {
|
||||
|
@ -52864,7 +52972,7 @@
|
|||
"type": "array"
|
||||
},
|
||||
"pscConnectionId": {
|
||||
"description": "[Output Only] The PSC connection id of the PSC Forwarding Rule.",
|
||||
"description": "[Output Only] The PSC connection id of the PSC forwarding rule.",
|
||||
"format": "uint64",
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -52907,23 +53015,23 @@
|
|||
"type": "array"
|
||||
},
|
||||
"serviceLabel": {
|
||||
"description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
|
||||
"description": "An optional prefix to the service name for this forwarding rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"type": "string"
|
||||
},
|
||||
"serviceName": {
|
||||
"description": "[Output Only] The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
|
||||
"description": "[Output Only] The internal fully qualified service name for this forwarding rule. This field is only used for internal load balancing.",
|
||||
"type": "string"
|
||||
},
|
||||
"sourceIpRanges": {
|
||||
"description": "If not empty, this Forwarding Rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a Forwarding Rule can only have up to 64 source IP ranges, and this field can only be used with a regional Forwarding Rule whose scheme is EXTERNAL. Each source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
|
||||
"description": "If not empty, this forwarding rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a forwarding rule can only have up to 64 source IP ranges, and this field can only be used with a regional forwarding rule whose scheme is EXTERNAL. Each source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"subnetwork": {
|
||||
"description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
|
||||
"description": "This field identifies the subnetwork that the load balanced IP should belong to for this forwarding rule, used with internal load balancers and external passthrough Network Load Balancers with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
|
||||
"type": "string"
|
||||
},
|
||||
"target": {
|
||||
|
@ -53254,7 +53362,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"ForwardingRuleServiceDirectoryRegistration": {
|
||||
"description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
|
||||
"description": "Describes the auto-registration of the forwarding rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this forwarding rule.",
|
||||
"id": "ForwardingRuleServiceDirectoryRegistration",
|
||||
"properties": {
|
||||
"namespace": {
|
||||
|
@ -53266,7 +53374,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"serviceDirectoryRegion": {
|
||||
"description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region.",
|
||||
"description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs forwarding rules on the same network should use the same Service Directory region.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
|
@ -53410,12 +53518,12 @@
|
|||
"id": "FutureReservation",
|
||||
"properties": {
|
||||
"autoCreatedReservationsDeleteTime": {
|
||||
"description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\"\u003eRFC3339 value.",
|
||||
"description": "Future timestamp when the FR auto-created reservations will be deleted by Compute Engine. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\"\u003eRFC3339 value.",
|
||||
"type": "string"
|
||||
},
|
||||
"autoCreatedReservationsDuration": {
|
||||
"$ref": "Duration",
|
||||
"description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
|
||||
"description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by Compute Engine. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
|
||||
},
|
||||
"autoDeleteAutoCreatedReservations": {
|
||||
"description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false.",
|
||||
|
@ -54174,7 +54282,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -54445,7 +54553,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -54512,7 +54620,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -54579,7 +54687,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -54630,7 +54738,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"HealthCheck": {
|
||||
"description": "Represents a health check resource. Google Compute Engine has two health check resources: * [Regional](/compute/docs/reference/rest/alpha/regionHealthChecks) * [Global](/compute/docs/reference/rest/alpha/healthChecks) These health check resources can be used for load balancing and for autohealing VMs in a managed instance group (MIG). **Load balancing** The following load balancer can use either regional or global health check: * Internal TCP/UDP load balancer The following load balancers require regional health check: * Internal HTTP(S) load balancer * Backend service-based network load balancer Traffic Director and the following load balancers require global health check: * External HTTP(S) load balancer * TCP proxy load balancer * SSL proxy load balancer The following load balancer require [legacy HTTP health checks](/compute/docs/reference/rest/v1/httpHealthChecks): * Target pool-based network load balancer **Autohealing in MIGs** The health checks that you use for autohealing VMs in a MIG can be either regional or global. For more information, see Set up an application health check and autohealing. For more information, see Health checks overview.",
|
||||
"description": "Represents a health check resource. Google Compute Engine has two health check resources: * [Regional](/compute/docs/reference/rest/alpha/regionHealthChecks) * [Global](/compute/docs/reference/rest/alpha/healthChecks) These health check resources can be used for load balancing and for autohealing VMs in a managed instance group (MIG). **Load balancing** Health check requirements vary depending on the type of load balancer. For details about the type of health check supported for each load balancer and corresponding backend type, see Health checks overview: Load balancer guide. **Autohealing in MIGs** The health checks that you use for autohealing VMs in a MIG can be either regional or global. For more information, see Set up an application health check and autohealing. For more information, see Health checks overview.",
|
||||
"id": "HealthCheck",
|
||||
"properties": {
|
||||
"checkIntervalSec": {
|
||||
|
@ -56913,6 +57021,11 @@
|
|||
"$ref": "RolloutPolicy",
|
||||
"description": "A rollout policy to apply to this image. When specified, the rollout policy overrides per-zone references to the image via the associated image family. The rollout policy restricts the zones where this image is accessible when using a zonal image family reference. When the rollout policy does not include the user specified zone, or if the zone is rolled out, this image is accessible. The rollout policy for this image is read-only, except for allowlisted users. This field might not be configured. To view the latest non-deprecated image in a specific zone, use the imageFamilyViews.get method."
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "Output only. Reserved for future use.",
|
||||
"readOnly": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -57408,6 +57521,10 @@
|
|||
"$ref": "ResourceStatus",
|
||||
"description": "[Output Only] Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -58213,6 +58330,10 @@
|
|||
},
|
||||
"type": "array"
|
||||
},
|
||||
"params": {
|
||||
"$ref": "InstanceGroupManagerParams",
|
||||
"description": "Input only. Additional params passed with the request, but not persisted as part of resource payload."
|
||||
},
|
||||
"region": {
|
||||
"description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources).",
|
||||
"type": "string"
|
||||
|
@ -58829,6 +58950,20 @@
|
|||
},
|
||||
"type": "object"
|
||||
},
|
||||
"InstanceGroupManagerParams": {
|
||||
"description": "Input only additional params for instance group manager creation.",
|
||||
"id": "InstanceGroupManagerParams",
|
||||
"properties": {
|
||||
"resourceManagerTags": {
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": "Resource manager tags to be bound to the instance group manager. Tag keys and values have the same definition as resource manager tags. Keys must be in the format `tagKeys/123`, and values are in the format `tagValues/456`. The field is allowed for INSERT only.",
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"InstanceGroupManagerResizeRequest": {
|
||||
"description": "InstanceGroupManagerResizeRequest represents a request to create a number of VMs: either immediately or by queuing the request for the specified time. This resize request is nested under InstanceGroupManager and the VMs created by this request are added to the owning InstanceGroupManager.",
|
||||
"id": "InstanceGroupManagerResizeRequest",
|
||||
|
@ -59138,14 +59273,14 @@
|
|||
"type": "integer"
|
||||
},
|
||||
"mode": {
|
||||
"description": "Defines behaviour of using instances from standby pool to resize MIG.",
|
||||
"description": "Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. The default mode is `MANUAL`.",
|
||||
"enum": [
|
||||
"MANUAL",
|
||||
"SCALE_OUT_POOL"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"MIG does not automatically stop/start or suspend/resume VMs.",
|
||||
"MIG automatically resumes and starts VMs when it scales out, and replenishes the standby pool afterwards."
|
||||
"MIG does not automatically resume or start VMs in the standby pool when the group scales out.",
|
||||
"MIG automatically resumes or starts VMs in the standby pool when the group scales out, and replenishes the standby pool afterwards."
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
|
@ -61496,6 +61631,16 @@
|
|||
},
|
||||
"type": "object"
|
||||
},
|
||||
"InstancesAddNetworkInterfaceRequest": {
|
||||
"id": "InstancesAddNetworkInterfaceRequest",
|
||||
"properties": {
|
||||
"network_interface": {
|
||||
"$ref": "NetworkInterface",
|
||||
"description": "The new network interface to add."
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"InstancesAddResourcePoliciesRequest": {
|
||||
"id": "InstancesAddResourcePoliciesRequest",
|
||||
"properties": {
|
||||
|
@ -61959,6 +62104,11 @@
|
|||
"$ref": "InstantSnapshotResourceStatus",
|
||||
"description": "[Output Only] Status information for the instant snapshot resource."
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "Output only. Reserved for future use.",
|
||||
"readOnly": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -65706,6 +65856,11 @@
|
|||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"type": "string"
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "Output only. Reserved for future use.",
|
||||
"readOnly": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -81536,6 +81691,10 @@
|
|||
"bfdStatus": {
|
||||
"$ref": "BfdStatus"
|
||||
},
|
||||
"enableIpv4": {
|
||||
"description": "Enable IPv4 traffic over BGP Peer. It is enabled by default if the peerIpAddress is version 4.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"enableIpv6": {
|
||||
"description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default.",
|
||||
"type": "boolean"
|
||||
|
@ -81544,6 +81703,10 @@
|
|||
"description": "IP address of the local BGP interface.",
|
||||
"type": "string"
|
||||
},
|
||||
"ipv4NexthopAddress": {
|
||||
"description": "IPv4 address of the local BGP interface.",
|
||||
"type": "string"
|
||||
},
|
||||
"ipv6NexthopAddress": {
|
||||
"description": "IPv6 address of the local BGP interface.",
|
||||
"type": "string"
|
||||
|
@ -81569,6 +81732,10 @@
|
|||
"description": "IP address of the remote BGP interface.",
|
||||
"type": "string"
|
||||
},
|
||||
"peerIpv4NexthopAddress": {
|
||||
"description": "IPv4 address of the remote BGP interface.",
|
||||
"type": "string"
|
||||
},
|
||||
"peerIpv6NexthopAddress": {
|
||||
"description": "IPv6 address of the remote BGP interface.",
|
||||
"type": "string"
|
||||
|
@ -81598,11 +81765,17 @@
|
|||
"statusReason": {
|
||||
"description": "Indicates why particular status was returned.",
|
||||
"enum": [
|
||||
"IPV4_PEER_ON_IPV6_ONLY_CONNECTION",
|
||||
"IPV6_PEER_ON_IPV4_ONLY_CONNECTION",
|
||||
"MD5_AUTH_INTERNAL_PROBLEM",
|
||||
"MISSING_NETWORK_CONNECTIVITY_CENTER_SPOKE",
|
||||
"STATUS_REASON_UNSPECIFIED"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"BGP peer disabled because it requires IPv4 but the underlying connection is IPv6-only.",
|
||||
"BGP peer disabled because it requires IPv6 but the underlying connection is IPv4-only.",
|
||||
"Indicates internal problems with configuration of MD5 authentication. This particular reason can only be returned when md5AuthEnabled is true and status is DOWN.",
|
||||
"BGP peer disabled because it is not labeled as an NCC spoke. Currently, BGP peers using SD-WAN connectivity will be disabled for this reason.",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -82289,7 +82462,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -83245,10 +83418,58 @@
|
|||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"detectionAbsoluteQps": {
|
||||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"detectionLoadThreshold": {
|
||||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"detectionRelativeToBaselineQps": {
|
||||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"name": {
|
||||
"description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy.",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"type": "string"
|
||||
},
|
||||
"trafficGranularityConfigs": {
|
||||
"description": "Configuration options for enabling Adaptive Protection to operate on specified granular traffic units.",
|
||||
"items": {
|
||||
"$ref": "SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig": {
|
||||
"description": "Configurations to specifc granular traffic units processed by Adaptive Protection.",
|
||||
"id": "SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig",
|
||||
"properties": {
|
||||
"enableEachUniqueValue": {
|
||||
"description": "If enabled, traffic matching each unique value for the specified type constitutes a separate traffic unit. It can only be set to true if `value` is empty.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"type": {
|
||||
"description": "Type of this configuration.",
|
||||
"enum": [
|
||||
"HTTP_HEADER_HOST",
|
||||
"HTTP_PATH",
|
||||
"UNSPECIFIED_TYPE"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
"description": "Requests that match this value constitute a granular traffic unit.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
|
@ -83987,7 +84208,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enforceOnKey": {
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. ",
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL. - USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP. ",
|
||||
"enum": [
|
||||
"ALL",
|
||||
"ALL_IPS",
|
||||
|
@ -83997,6 +84218,8 @@
|
|||
"IP",
|
||||
"REGION_CODE",
|
||||
"SNI",
|
||||
"TLS_JA3_FINGERPRINT",
|
||||
"USER_IP",
|
||||
"XFF_IP"
|
||||
],
|
||||
"enumDeprecated": [
|
||||
|
@ -84008,6 +84231,8 @@
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"enumDescriptions": [
|
||||
|
@ -84019,6 +84244,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -84061,7 +84288,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enforceOnKeyType": {
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. ",
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL. - USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP. ",
|
||||
"enum": [
|
||||
"ALL",
|
||||
"ALL_IPS",
|
||||
|
@ -84071,6 +84298,8 @@
|
|||
"IP",
|
||||
"REGION_CODE",
|
||||
"SNI",
|
||||
"TLS_JA3_FINGERPRINT",
|
||||
"USER_IP",
|
||||
"XFF_IP"
|
||||
],
|
||||
"enumDeprecated": [
|
||||
|
@ -84082,6 +84311,8 @@
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"enumDescriptions": [
|
||||
|
@ -84093,6 +84324,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -85411,6 +85644,11 @@
|
|||
"description": "[Output Only] URL of the region where the snapshot resides. Only applicable for regional snapshots.",
|
||||
"type": "string"
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "Output only. Reserved for future use.",
|
||||
"readOnly": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -87217,7 +87455,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"SslPolicy": {
|
||||
"description": "Represents an SSL Policy resource. Use SSL policies to control the SSL features, such as versions and cipher suites, offered by an HTTPS or SSL Proxy load balancer. For more information, read SSL Policy Concepts.",
|
||||
"description": "Represents an SSL Policy resource. Use SSL policies to control SSL features, such as versions and cipher suites, that are offered by Application Load Balancers and proxy Network Load Balancers. For more information, read SSL policies overview.",
|
||||
"id": "SslPolicy",
|
||||
"properties": {
|
||||
"creationTimestamp": {
|
||||
|
@ -89769,7 +90007,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -91656,7 +91894,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetPool": {
|
||||
"description": "Represents a Target Pool resource. Target pools are used for network TCP/UDP load balancing. A target pool references member instances, an associated legacy HttpHealthCheck resource, and, optionally, a backup target pool. For more information, read Using target pools.",
|
||||
"description": "Represents a Target Pool resource. Target pools are used with external passthrough Network Load Balancers. A target pool references member instances, an associated legacy HttpHealthCheck resource, and, optionally, a backup target pool. For more information, read Using target pools.",
|
||||
"id": "TargetPool",
|
||||
"properties": {
|
||||
"backupPool": {
|
||||
|
@ -92323,7 +92561,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetSslProxy": {
|
||||
"description": "Represents a Target SSL Proxy resource. A target SSL proxy is a component of a SSL Proxy load balancer. Global forwarding rules reference a target SSL proxy, and the target proxy then references an external backend service. For more information, read Using Target Proxies.",
|
||||
"description": "Represents a Target SSL Proxy resource. A target SSL proxy is a component of a Proxy Network Load Balancer. The forwarding rule references the target SSL proxy, and the target proxy then references a backend service. For more information, read Proxy Network Load Balancer overview.",
|
||||
"id": "TargetSslProxy",
|
||||
"properties": {
|
||||
"certificateMap": {
|
||||
|
@ -92702,7 +92940,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetTcpProxy": {
|
||||
"description": "Represents a Target TCP Proxy resource. A target TCP proxy is a component of a TCP Proxy load balancer. Global forwarding rules reference target TCP proxy, and the target proxy then references an external backend service. For more information, read TCP Proxy Load Balancing overview.",
|
||||
"description": "Represents a Target TCP Proxy resource. A target TCP proxy is a component of a Proxy Network Load Balancer. The forwarding rule references the target TCP proxy, and the target proxy then references a backend service. For more information, read Proxy Network Load Balancer overview.",
|
||||
"id": "TargetTcpProxy",
|
||||
"properties": {
|
||||
"creationTimestamp": {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -9067,7 +9067,7 @@
|
|||
]
|
||||
},
|
||||
"listManagedInstances": {
|
||||
"description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"flatPath": "projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.instanceGroupManagers.listManagedInstances",
|
||||
|
@ -12986,7 +12986,7 @@
|
|||
],
|
||||
"parameters": {
|
||||
"discardLocalSsd": {
|
||||
"description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
"description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -13038,7 +13038,7 @@
|
|||
],
|
||||
"parameters": {
|
||||
"discardLocalSsd": {
|
||||
"description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
"description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -24945,7 +24945,7 @@
|
|||
]
|
||||
},
|
||||
"listManagedInstances": {
|
||||
"description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"flatPath": "projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.regionInstanceGroupManagers.listManagedInstances",
|
||||
|
@ -37938,7 +37938,7 @@
|
|||
]
|
||||
},
|
||||
"setSslPolicy": {
|
||||
"description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
"description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
"flatPath": "projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.targetSslProxies.setSslPolicy",
|
||||
|
@ -40215,7 +40215,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"revision": "20231110",
|
||||
"revision": "20231128",
|
||||
"rootUrl": "https://compute.googleapis.com/",
|
||||
"schemas": {
|
||||
"AWSV4Signature": {
|
||||
|
@ -43278,7 +43278,7 @@
|
|||
"id": "BackendService",
|
||||
"properties": {
|
||||
"affinityCookieTtlSec": {
|
||||
"description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
|
||||
"description": "Lifetime of cookies in seconds. This setting is applicable to Application Load Balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
|
@ -43313,7 +43313,7 @@
|
|||
},
|
||||
"connectionTrackingPolicy": {
|
||||
"$ref": "BackendServiceConnectionTrackingPolicy",
|
||||
"description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
|
||||
"description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for external passthrough Network Load Balancers and internal passthrough Network Load Balancers."
|
||||
},
|
||||
"consistentHash": {
|
||||
"$ref": "ConsistentHashLoadBalancerSettings",
|
||||
|
@ -43346,12 +43346,12 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enableCDN": {
|
||||
"description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
|
||||
"description": "If true, enables Cloud CDN for the backend service of a global external Application Load Balancer.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"failoverPolicy": {
|
||||
"$ref": "BackendServiceFailoverPolicy",
|
||||
"description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
|
||||
"description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
|
||||
},
|
||||
"fingerprint": {
|
||||
"description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
|
||||
|
@ -43367,7 +43367,7 @@
|
|||
},
|
||||
"iap": {
|
||||
"$ref": "BackendServiceIAP",
|
||||
"description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
|
||||
"description": "The configurations for Identity-Aware Proxy on this resource. Not available for internal passthrough Network Load Balancers and external passthrough Network Load Balancers."
|
||||
},
|
||||
"id": {
|
||||
"description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
|
||||
|
@ -43375,7 +43375,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"ipAddressSelectionPolicy": {
|
||||
"description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced Global External HTTPS Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional External HTTPS Load Balancing, - Internal TCP Proxy (load balancing scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
|
||||
"description": "Specifies a preference for traffic sent from the proxy to the backend (or from the client to the backend for proxyless gRPC). The possible values are: - IPV4_ONLY: Only send IPv4 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv4 health checks are used to check the health of the backends. This is the default setting. - PREFER_IPV6: Prioritize the connection to the endpoint's IPv6 address over its IPv4 address (provided there is a healthy IPv6 address). - IPV6_ONLY: Only send IPv6 traffic to the backends of the backend service (Instance Group, Managed Instance Group, Network Endpoint Group), regardless of traffic from the client to the proxy. Only IPv6 health checks are used to check the health of the backends. This field is applicable to either: - Advanced global external Application Load Balancer (load balancing scheme EXTERNAL_MANAGED), - Regional external Application Load Balancer, - Internal proxy Network Load Balancer (load balancing scheme INTERNAL_MANAGED), - Regional internal Application Load Balancer (load balancing scheme INTERNAL_MANAGED), - Traffic Director with Envoy proxies and proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED). ",
|
||||
"enum": [
|
||||
"IPV4_ONLY",
|
||||
"IPV6_ONLY",
|
||||
|
@ -43406,10 +43406,10 @@
|
|||
"INVALID_LOAD_BALANCING_SCHEME"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
|
||||
"Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
|
||||
"Signifies that this will be used for Internal TCP/UDP Load Balancing.",
|
||||
"Signifies that this will be used for Internal HTTP(S) Load Balancing.",
|
||||
"Signifies that this will be used for classic Application Load Balancers, global external proxy Network Load Balancers, or external passthrough Network Load Balancers.",
|
||||
"Signifies that this will be used for global external Application Load Balancers, regional external Application Load Balancers, or regional external proxy Network Load Balancers.",
|
||||
"Signifies that this will be used for internal passthrough Network Load Balancers.",
|
||||
"Signifies that this will be used for internal Application Load Balancers.",
|
||||
"Signifies that this will be used by Traffic Director.",
|
||||
""
|
||||
],
|
||||
|
@ -43476,12 +43476,12 @@
|
|||
},
|
||||
"port": {
|
||||
"deprecated": true,
|
||||
"description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
|
||||
"description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"portName": {
|
||||
"description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
|
||||
"description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port_name.",
|
||||
"type": "string"
|
||||
},
|
||||
"protocol": {
|
||||
|
@ -43864,11 +43864,11 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enableStrongAffinity": {
|
||||
"description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly.",
|
||||
"description": "Enable Strong Session Affinity for external passthrough Network Load Balancers. This option is not available publicly.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"idleTimeoutSec": {
|
||||
"description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly.",
|
||||
"description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For internal passthrough Network Load Balancers: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For external passthrough Network Load Balancers the default is 60 seconds. This option is not available publicly.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
|
@ -43890,7 +43890,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"BackendServiceFailoverPolicy": {
|
||||
"description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
|
||||
"description": "For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
|
||||
"id": "BackendServiceFailoverPolicy",
|
||||
"properties": {
|
||||
"disableConnectionDrainOnFailover": {
|
||||
|
@ -43898,7 +43898,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"dropTrafficIfUnhealthy": {
|
||||
"description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false.",
|
||||
"description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"failoverRatio": {
|
||||
|
@ -48815,7 +48815,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"ForwardingRule": {
|
||||
"description": "Represents a Forwarding Rule resource. Forwarding rule resources in Google Cloud can be either regional or global in scope: * [Global](https://cloud.google.com/compute/docs/reference/rest/beta/globalForwardingRules) * [Regional](https://cloud.google.com/compute/docs/reference/rest/beta/forwardingRules) A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud Platform load balancer. Forwarding rules can also reference target instances and Cloud VPN Classic gateways (targetVpnGateway). For more information, read Forwarding rule concepts and Using protocol forwarding.",
|
||||
"description": "Represents a Forwarding Rule resource. Forwarding rule resources in Google Cloud can be either regional or global in scope: * [Global](https://cloud.google.com/compute/docs/reference/rest/beta/globalForwardingRules) * [Regional](https://cloud.google.com/compute/docs/reference/rest/beta/forwardingRules) A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules can also reference target instances and Cloud VPN Classic gateways (targetVpnGateway). For more information, read Forwarding rule concepts and Using protocol forwarding.",
|
||||
"id": "ForwardingRule",
|
||||
"properties": {
|
||||
"IPAddress": {
|
||||
|
@ -48849,7 +48849,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"allowGlobalAccess": {
|
||||
"description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
|
||||
"description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the internal passthrough Network Load Balancers, the regional internal Application Load Balancer, and the regional internal proxy Network Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"allowPscGlobalAccess": {
|
||||
|
@ -48861,11 +48861,11 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"backendService": {
|
||||
"description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
|
||||
"description": "Identifies the backend service to which the forwarding rule sends traffic. Required for internal and external passthrough Network Load Balancers; must be omitted for all other load balancer types.",
|
||||
"type": "string"
|
||||
},
|
||||
"baseForwardingRule": {
|
||||
"description": "[Output Only] The URL for the corresponding base Forwarding Rule. By base Forwarding Rule, we mean the Forwarding Rule that has the same IP address, protocol, and port settings with the current Forwarding Rule, but without sourceIPRanges specified. Always empty if the current Forwarding Rule does not have sourceIPRanges specified.",
|
||||
"description": "[Output Only] The URL for the corresponding base forwarding rule. By base forwarding rule, we mean the forwarding rule that has the same IP address, protocol, and port settings with the current forwarding rule, but without sourceIPRanges specified. Always empty if the current forwarding rule does not have sourceIPRanges specified.",
|
||||
"type": "string"
|
||||
},
|
||||
"creationTimestamp": {
|
||||
|
@ -48906,7 +48906,7 @@
|
|||
},
|
||||
"kind": {
|
||||
"default": "compute#forwardingRule",
|
||||
"description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
|
||||
"description": "[Output Only] Type of the resource. Always compute#forwardingRule for forwarding rule resources.",
|
||||
"type": "string"
|
||||
},
|
||||
"labelFingerprint": {
|
||||
|
@ -48954,7 +48954,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"network": {
|
||||
"description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
|
||||
"description": "This field is not used for global external load balancing. For internal passthrough Network Load Balancers, this field identifies the network that the load balanced IP should belong to for this forwarding rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
|
||||
"type": "string"
|
||||
},
|
||||
"networkTier": {
|
||||
|
@ -48989,7 +48989,7 @@
|
|||
"type": "array"
|
||||
},
|
||||
"pscConnectionId": {
|
||||
"description": "[Output Only] The PSC connection id of the PSC Forwarding Rule.",
|
||||
"description": "[Output Only] The PSC connection id of the PSC forwarding rule.",
|
||||
"format": "uint64",
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -49028,23 +49028,23 @@
|
|||
"type": "array"
|
||||
},
|
||||
"serviceLabel": {
|
||||
"description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
|
||||
"description": "An optional prefix to the service name for this forwarding rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"type": "string"
|
||||
},
|
||||
"serviceName": {
|
||||
"description": "[Output Only] The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
|
||||
"description": "[Output Only] The internal fully qualified service name for this forwarding rule. This field is only used for internal load balancing.",
|
||||
"type": "string"
|
||||
},
|
||||
"sourceIpRanges": {
|
||||
"description": "If not empty, this Forwarding Rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a Forwarding Rule can only have up to 64 source IP ranges, and this field can only be used with a regional Forwarding Rule whose scheme is EXTERNAL. Each source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
|
||||
"description": "If not empty, this forwarding rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a forwarding rule can only have up to 64 source IP ranges, and this field can only be used with a regional forwarding rule whose scheme is EXTERNAL. Each source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"subnetwork": {
|
||||
"description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
|
||||
"description": "This field identifies the subnetwork that the load balanced IP should belong to for this forwarding rule, used with internal load balancers and external passthrough Network Load Balancers with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
|
||||
"type": "string"
|
||||
},
|
||||
"target": {
|
||||
|
@ -49375,7 +49375,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"ForwardingRuleServiceDirectoryRegistration": {
|
||||
"description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
|
||||
"description": "Describes the auto-registration of the forwarding rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this forwarding rule.",
|
||||
"id": "ForwardingRuleServiceDirectoryRegistration",
|
||||
"properties": {
|
||||
"namespace": {
|
||||
|
@ -49387,7 +49387,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"serviceDirectoryRegion": {
|
||||
"description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region.",
|
||||
"description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs forwarding rules on the same network should use the same Service Directory region.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
|
@ -49531,12 +49531,12 @@
|
|||
"id": "FutureReservation",
|
||||
"properties": {
|
||||
"autoCreatedReservationsDeleteTime": {
|
||||
"description": "Future timestamp when the FR auto-created reservations will be deleted by GCE. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\"\u003eRFC3339 value.",
|
||||
"description": "Future timestamp when the FR auto-created reservations will be deleted by Compute Engine. Format of this field must be a valid href=\"https://www.ietf.org/rfc/rfc3339.txt\"\u003eRFC3339 value.",
|
||||
"type": "string"
|
||||
},
|
||||
"autoCreatedReservationsDuration": {
|
||||
"$ref": "Duration",
|
||||
"description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by GCE. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
|
||||
"description": "Specifies the duration of auto-created reservations. It represents relative time to future reservation start_time when auto-created reservations will be automatically deleted by Compute Engine. Duration time unit is represented as a count of seconds and fractions of seconds at nanosecond resolution."
|
||||
},
|
||||
"autoDeleteAutoCreatedReservations": {
|
||||
"description": "Setting for enabling or disabling automatic deletion for auto-created reservation. If set to true, auto-created reservations will be deleted at Future Reservation's end time (default) or at user's defined timestamp if any of the [auto_created_reservations_delete_time, auto_created_reservations_duration] values is specified. For keeping auto-created reservation indefinitely, this value should be set to false.",
|
||||
|
@ -50295,7 +50295,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -50531,7 +50531,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -50584,7 +50584,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -50637,7 +50637,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -50674,7 +50674,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"HealthCheck": {
|
||||
"description": "Represents a health check resource. Google Compute Engine has two health check resources: * [Regional](/compute/docs/reference/rest/beta/regionHealthChecks) * [Global](/compute/docs/reference/rest/beta/healthChecks) These health check resources can be used for load balancing and for autohealing VMs in a managed instance group (MIG). **Load balancing** The following load balancer can use either regional or global health check: * Internal TCP/UDP load balancer The following load balancers require regional health check: * Internal HTTP(S) load balancer * Backend service-based network load balancer Traffic Director and the following load balancers require global health check: * External HTTP(S) load balancer * TCP proxy load balancer * SSL proxy load balancer The following load balancer require [legacy HTTP health checks](/compute/docs/reference/rest/v1/httpHealthChecks): * Target pool-based network load balancer **Autohealing in MIGs** The health checks that you use for autohealing VMs in a MIG can be either regional or global. For more information, see Set up an application health check and autohealing. For more information, see Health checks overview.",
|
||||
"description": "Represents a health check resource. Google Compute Engine has two health check resources: * [Regional](/compute/docs/reference/rest/beta/regionHealthChecks) * [Global](/compute/docs/reference/rest/beta/healthChecks) These health check resources can be used for load balancing and for autohealing VMs in a managed instance group (MIG). **Load balancing** Health check requirements vary depending on the type of load balancer. For details about the type of health check supported for each load balancer and corresponding backend type, see Health checks overview: Load balancer guide. **Autohealing in MIGs** The health checks that you use for autohealing VMs in a MIG can be either regional or global. For more information, see Set up an application health check and autohealing. For more information, see Health checks overview.",
|
||||
"id": "HealthCheck",
|
||||
"properties": {
|
||||
"checkIntervalSec": {
|
||||
|
@ -53114,6 +53114,10 @@
|
|||
"$ref": "ResourceStatus",
|
||||
"description": "[Output Only] Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -54227,6 +54231,13 @@
|
|||
},
|
||||
"description": "Named instance selections configuring properties that the group will use when creating new VMs.",
|
||||
"type": "object"
|
||||
},
|
||||
"instanceSelections": {
|
||||
"additionalProperties": {
|
||||
"$ref": "InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection"
|
||||
},
|
||||
"description": "Named instance selections configuring properties that the group will use when creating new VMs.",
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
|
@ -54732,14 +54743,14 @@
|
|||
"type": "integer"
|
||||
},
|
||||
"mode": {
|
||||
"description": "Defines behaviour of using instances from standby pool to resize MIG.",
|
||||
"description": "Defines how a MIG resumes or starts VMs from a standby pool when the group scales out. The default mode is `MANUAL`.",
|
||||
"enum": [
|
||||
"MANUAL",
|
||||
"SCALE_OUT_POOL"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"MIG does not automatically stop/start or suspend/resume VMs.",
|
||||
"MIG automatically resumes and starts VMs when it scales out, and replenishes the standby pool afterwards."
|
||||
"MIG does not automatically resume or start VMs in the standby pool when the group scales out.",
|
||||
"MIG automatically resumes or starts VMs in the standby pool when the group scales out, and replenishes the standby pool afterwards."
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
|
@ -69607,6 +69618,9 @@
|
|||
"PREEMPTIBLE_NVIDIA_T4_GPUS",
|
||||
"PREEMPTIBLE_NVIDIA_T4_VWS_GPUS",
|
||||
"PREEMPTIBLE_NVIDIA_V100_GPUS",
|
||||
"PREEMPTIBLE_TPU_LITE_DEVICE_V5",
|
||||
"PREEMPTIBLE_TPU_LITE_PODSLICE_V5",
|
||||
"PREEMPTIBLE_TPU_PODSLICE_V4",
|
||||
"PRIVATE_V6_ACCESS_SUBNETWORKS",
|
||||
"PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK",
|
||||
"PSC_INTERNAL_LB_FORWARDING_RULES",
|
||||
|
@ -69645,6 +69659,9 @@
|
|||
"TARGET_SSL_PROXIES",
|
||||
"TARGET_TCP_PROXIES",
|
||||
"TARGET_VPN_GATEWAYS",
|
||||
"TPU_LITE_DEVICE_V5",
|
||||
"TPU_LITE_PODSLICE_V5",
|
||||
"TPU_PODSLICE_V4",
|
||||
"URL_MAPS",
|
||||
"VPN_GATEWAYS",
|
||||
"VPN_TUNNELS",
|
||||
|
@ -69781,6 +69798,9 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"The total number of snapshots allowed for a single project.",
|
||||
"",
|
||||
"",
|
||||
|
@ -69800,6 +69820,9 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -75031,7 +75054,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -75932,10 +75955,58 @@
|
|||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"detectionAbsoluteQps": {
|
||||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"detectionLoadThreshold": {
|
||||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"detectionRelativeToBaselineQps": {
|
||||
"format": "float",
|
||||
"type": "number"
|
||||
},
|
||||
"name": {
|
||||
"description": "The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the security policy.",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"type": "string"
|
||||
},
|
||||
"trafficGranularityConfigs": {
|
||||
"description": "Configuration options for enabling Adaptive Protection to operate on specified granular traffic units.",
|
||||
"items": {
|
||||
"$ref": "SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig": {
|
||||
"description": "Configurations to specifc granular traffic units processed by Adaptive Protection.",
|
||||
"id": "SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig",
|
||||
"properties": {
|
||||
"enableEachUniqueValue": {
|
||||
"description": "If enabled, traffic matching each unique value for the specified type constitutes a separate traffic unit. It can only be set to true if `value` is empty.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"type": {
|
||||
"description": "Type of this configuration.",
|
||||
"enum": [
|
||||
"HTTP_HEADER_HOST",
|
||||
"HTTP_PATH",
|
||||
"UNSPECIFIED_TYPE"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
"description": "Requests that match this value constitute a granular traffic unit.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
|
@ -76610,7 +76681,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enforceOnKey": {
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. ",
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL. - USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP. ",
|
||||
"enum": [
|
||||
"ALL",
|
||||
"ALL_IPS",
|
||||
|
@ -76620,6 +76691,8 @@
|
|||
"IP",
|
||||
"REGION_CODE",
|
||||
"SNI",
|
||||
"TLS_JA3_FINGERPRINT",
|
||||
"USER_IP",
|
||||
"XFF_IP"
|
||||
],
|
||||
"enumDeprecated": [
|
||||
|
@ -76631,6 +76704,8 @@
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"enumDescriptions": [
|
||||
|
@ -76642,6 +76717,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -76680,7 +76757,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enforceOnKeyType": {
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. ",
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL. - USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP. ",
|
||||
"enum": [
|
||||
"ALL",
|
||||
"ALL_IPS",
|
||||
|
@ -76690,6 +76767,8 @@
|
|||
"IP",
|
||||
"REGION_CODE",
|
||||
"SNI",
|
||||
"TLS_JA3_FINGERPRINT",
|
||||
"USER_IP",
|
||||
"XFF_IP"
|
||||
],
|
||||
"enumDeprecated": [
|
||||
|
@ -76701,6 +76780,8 @@
|
|||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false
|
||||
],
|
||||
"enumDescriptions": [
|
||||
|
@ -76712,6 +76793,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -79409,7 +79492,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"SslPolicy": {
|
||||
"description": "Represents an SSL Policy resource. Use SSL policies to control the SSL features, such as versions and cipher suites, offered by an HTTPS or SSL Proxy load balancer. For more information, read SSL Policy Concepts.",
|
||||
"description": "Represents an SSL Policy resource. Use SSL policies to control SSL features, such as versions and cipher suites, that are offered by Application Load Balancers and proxy Network Load Balancers. For more information, read SSL policies overview.",
|
||||
"id": "SslPolicy",
|
||||
"properties": {
|
||||
"creationTimestamp": {
|
||||
|
@ -80487,7 +80570,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -82362,7 +82445,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetPool": {
|
||||
"description": "Represents a Target Pool resource. Target pools are used for network TCP/UDP load balancing. A target pool references member instances, an associated legacy HttpHealthCheck resource, and, optionally, a backup target pool. For more information, read Using target pools.",
|
||||
"description": "Represents a Target Pool resource. Target pools are used with external passthrough Network Load Balancers. A target pool references member instances, an associated legacy HttpHealthCheck resource, and, optionally, a backup target pool. For more information, read Using target pools.",
|
||||
"id": "TargetPool",
|
||||
"properties": {
|
||||
"backupPool": {
|
||||
|
@ -83025,7 +83108,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetSslProxy": {
|
||||
"description": "Represents a Target SSL Proxy resource. A target SSL proxy is a component of a SSL Proxy load balancer. Global forwarding rules reference a target SSL proxy, and the target proxy then references an external backend service. For more information, read Using Target Proxies.",
|
||||
"description": "Represents a Target SSL Proxy resource. A target SSL proxy is a component of a Proxy Network Load Balancer. The forwarding rule references the target SSL proxy, and the target proxy then references a backend service. For more information, read Proxy Network Load Balancer overview.",
|
||||
"id": "TargetSslProxy",
|
||||
"properties": {
|
||||
"certificateMap": {
|
||||
|
@ -83404,7 +83487,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetTcpProxy": {
|
||||
"description": "Represents a Target TCP Proxy resource. A target TCP proxy is a component of a TCP Proxy load balancer. Global forwarding rules reference target TCP proxy, and the target proxy then references an external backend service. For more information, read TCP Proxy Load Balancing overview.",
|
||||
"description": "Represents a Target TCP Proxy resource. A target TCP proxy is a component of a Proxy Network Load Balancer. The forwarding rule references the target TCP proxy, and the target proxy then references a backend service. For more information, read Proxy Network Load Balancer overview.",
|
||||
"id": "TargetTcpProxy",
|
||||
"properties": {
|
||||
"creationTimestamp": {
|
||||
|
|
|
@ -5863,13 +5863,13 @@ func (s *BackendBucketListWarningData) MarshalJSON() ([]byte, error) {
|
|||
// For more information, see Backend Services.
|
||||
type BackendService struct {
|
||||
// AffinityCookieTtlSec: Lifetime of cookies in seconds. This setting is
|
||||
// applicable to external and internal HTTP(S) load balancers and
|
||||
// Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session
|
||||
// affinity. If set to 0, the cookie is non-persistent and lasts only
|
||||
// until the end of the browser session (or equivalent). The maximum
|
||||
// allowed value is two weeks (1,209,600). Not supported when the
|
||||
// backend service is referenced by a URL map that is bound to target
|
||||
// gRPC proxy that has validateForProxyless field set to true.
|
||||
// applicable to Application Load Balancers and Traffic Director and
|
||||
// requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to
|
||||
// 0, the cookie is non-persistent and lasts only until the end of the
|
||||
// browser session (or equivalent). The maximum allowed value is two
|
||||
// weeks (1,209,600). Not supported when the backend service is
|
||||
// referenced by a URL map that is bound to target gRPC proxy that has
|
||||
// validateForProxyless field set to true.
|
||||
AffinityCookieTtlSec int64 `json:"affinityCookieTtlSec,omitempty"`
|
||||
|
||||
// Backends: The list of backends that serve this BackendService.
|
||||
|
@ -5895,8 +5895,8 @@ type BackendService struct {
|
|||
|
||||
// ConnectionTrackingPolicy: Connection Tracking configuration for this
|
||||
// BackendService. Connection tracking policy settings are only
|
||||
// available for Network Load Balancing and Internal TCP/UDP Load
|
||||
// Balancing.
|
||||
// available for external passthrough Network Load Balancers and
|
||||
// internal passthrough Network Load Balancers.
|
||||
ConnectionTrackingPolicy *BackendServiceConnectionTrackingPolicy `json:"connectionTrackingPolicy,omitempty"`
|
||||
|
||||
// ConsistentHash: Consistent Hash-based load balancing can be used to
|
||||
|
@ -5935,15 +5935,15 @@ type BackendService struct {
|
|||
// security policy associated with this backend service.
|
||||
EdgeSecurityPolicy string `json:"edgeSecurityPolicy,omitempty"`
|
||||
|
||||
// EnableCDN: If true, enables Cloud CDN for the backend service of an
|
||||
// external HTTP(S) load balancer.
|
||||
// EnableCDN: If true, enables Cloud CDN for the backend service of a
|
||||
// global external Application Load Balancer.
|
||||
EnableCDN bool `json:"enableCDN,omitempty"`
|
||||
|
||||
// FailoverPolicy: Requires at least one backend instance group to be
|
||||
// defined as a backup (failover) backend. For load balancers that have
|
||||
// configurable failover: Internal TCP/UDP Load Balancing
|
||||
// configurable failover: Internal passthrough Network Load Balancers
|
||||
// (https://cloud.google.com/load-balancing/docs/internal/failover-overview)
|
||||
// and external TCP/UDP Load Balancing
|
||||
// and external passthrough Network Load Balancers
|
||||
// (https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview).
|
||||
FailoverPolicy *BackendServiceFailoverPolicy `json:"failoverPolicy,omitempty"`
|
||||
|
||||
|
@ -5967,8 +5967,8 @@ type BackendService struct {
|
|||
HealthChecks []string `json:"healthChecks,omitempty"`
|
||||
|
||||
// Iap: The configurations for Identity-Aware Proxy on this resource.
|
||||
// Not available for Internal TCP/UDP Load Balancing and Network Load
|
||||
// Balancing.
|
||||
// Not available for internal passthrough Network Load Balancers and
|
||||
// external passthrough Network Load Balancers.
|
||||
Iap *BackendServiceIAP `json:"iap,omitempty"`
|
||||
|
||||
// Id: [Output Only] The unique identifier for the resource. This
|
||||
|
@ -5988,13 +5988,13 @@ type BackendService struct {
|
|||
// backend service (Instance Group, Managed Instance Group, Network
|
||||
// Endpoint Group), regardless of traffic from the client to the proxy.
|
||||
// Only IPv6 health checks are used to check the health of the backends.
|
||||
// This field is applicable to either: - Advanced Global External HTTPS
|
||||
// Load Balancing (load balancing scheme EXTERNAL_MANAGED), - Regional
|
||||
// External HTTPS Load Balancing, - Internal TCP Proxy (load balancing
|
||||
// scheme INTERNAL_MANAGED), - Regional Internal HTTPS Load Balancing
|
||||
// (load balancing scheme INTERNAL_MANAGED), - Traffic Director with
|
||||
// Envoy proxies and proxyless gRPC (load balancing scheme
|
||||
// INTERNAL_SELF_MANAGED).
|
||||
// This field is applicable to either: - Advanced global external
|
||||
// Application Load Balancer (load balancing scheme EXTERNAL_MANAGED), -
|
||||
// Regional external Application Load Balancer, - Internal proxy Network
|
||||
// Load Balancer (load balancing scheme INTERNAL_MANAGED), - Regional
|
||||
// internal Application Load Balancer (load balancing scheme
|
||||
// INTERNAL_MANAGED), - Traffic Director with Envoy proxies and
|
||||
// proxyless gRPC (load balancing scheme INTERNAL_SELF_MANAGED).
|
||||
//
|
||||
// Possible values:
|
||||
// "IPV4_ONLY" - Only send IPv4 traffic to the backends of the Backend
|
||||
|
@ -6022,14 +6022,16 @@ type BackendService struct {
|
|||
// another. For more information, refer to Choosing a load balancer.
|
||||
//
|
||||
// Possible values:
|
||||
// "EXTERNAL" - Signifies that this will be used for external HTTP(S),
|
||||
// SSL Proxy, TCP Proxy, or Network Load Balancing
|
||||
// "EXTERNAL_MANAGED" - Signifies that this will be used for External
|
||||
// Managed HTTP(S) Load Balancing.
|
||||
// "INTERNAL" - Signifies that this will be used for Internal TCP/UDP
|
||||
// Load Balancing.
|
||||
// "INTERNAL_MANAGED" - Signifies that this will be used for Internal
|
||||
// HTTP(S) Load Balancing.
|
||||
// "EXTERNAL" - Signifies that this will be used for classic
|
||||
// Application Load Balancers, global external proxy Network Load
|
||||
// Balancers, or external passthrough Network Load Balancers.
|
||||
// "EXTERNAL_MANAGED" - Signifies that this will be used for global
|
||||
// external Application Load Balancers, regional external Application
|
||||
// Load Balancers, or regional external proxy Network Load Balancers.
|
||||
// "INTERNAL" - Signifies that this will be used for internal
|
||||
// passthrough Network Load Balancers.
|
||||
// "INTERNAL_MANAGED" - Signifies that this will be used for internal
|
||||
// Application Load Balancers.
|
||||
// "INTERNAL_SELF_MANAGED" - Signifies that this will be used by
|
||||
// Traffic Director.
|
||||
// "INVALID_LOAD_BALANCING_SCHEME"
|
||||
|
@ -6171,16 +6173,18 @@ type BackendService struct {
|
|||
OutlierDetection *OutlierDetection `json:"outlierDetection,omitempty"`
|
||||
|
||||
// Port: Deprecated in favor of portName. The TCP port to connect on the
|
||||
// backend. The default value is 80. For Internal TCP/UDP Load Balancing
|
||||
// and Network Load Balancing, omit port.
|
||||
// backend. The default value is 80. For internal passthrough Network
|
||||
// Load Balancers and external passthrough Network Load Balancers, omit
|
||||
// port.
|
||||
Port int64 `json:"port,omitempty"`
|
||||
|
||||
// PortName: A named port on a backend instance group representing the
|
||||
// port for communication to the backend VMs in that group. The named
|
||||
// port must be defined on each backend instance group
|
||||
// (https://cloud.google.com/load-balancing/docs/backend-service#named_ports).
|
||||
// This parameter has no meaning if the backends are NEGs. For Internal
|
||||
// TCP/UDP Load Balancing and Network Load Balancing, omit port_name.
|
||||
// This parameter has no meaning if the backends are NEGs. For internal
|
||||
// passthrough Network Load Balancers and external passthrough Network
|
||||
// Load Balancers, omit port_name.
|
||||
PortName string `json:"portName,omitempty"`
|
||||
|
||||
// Protocol: The protocol this BackendService uses to communicate with
|
||||
|
@ -6769,18 +6773,19 @@ type BackendServiceConnectionTrackingPolicy struct {
|
|||
// "NEVER_PERSIST"
|
||||
ConnectionPersistenceOnUnhealthyBackends string `json:"connectionPersistenceOnUnhealthyBackends,omitempty"`
|
||||
|
||||
// EnableStrongAffinity: Enable Strong Session Affinity for Network Load
|
||||
// Balancing. This option is not available publicly.
|
||||
// EnableStrongAffinity: Enable Strong Session Affinity for external
|
||||
// passthrough Network Load Balancers. This option is not available
|
||||
// publicly.
|
||||
EnableStrongAffinity bool `json:"enableStrongAffinity,omitempty"`
|
||||
|
||||
// IdleTimeoutSec: Specifies how long to keep a Connection Tracking
|
||||
// entry while there is no matching traffic (in seconds). For Internal
|
||||
// TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the
|
||||
// maximum is 16 hours. - It can be set only if Connection Tracking is
|
||||
// less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION,
|
||||
// CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For
|
||||
// Network Load Balancer the default is 60 seconds. This option is not
|
||||
// available publicly.
|
||||
// entry while there is no matching traffic (in seconds). For internal
|
||||
// passthrough Network Load Balancers: - The minimum (default) is 10
|
||||
// minutes and the maximum is 16 hours. - It can be set only if
|
||||
// Connection Tracking is less than 5-tuple (i.e. Session Affinity is
|
||||
// CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking
|
||||
// Mode is PER_SESSION). For external passthrough Network Load Balancers
|
||||
// the default is 60 seconds. This option is not available publicly.
|
||||
IdleTimeoutSec int64 `json:"idleTimeoutSec,omitempty"`
|
||||
|
||||
// TrackingMode: Specifies the key used for connection tracking. There
|
||||
|
@ -6826,9 +6831,9 @@ func (s *BackendServiceConnectionTrackingPolicy) MarshalJSON() ([]byte, error) {
|
|||
}
|
||||
|
||||
// BackendServiceFailoverPolicy: For load balancers that have
|
||||
// configurable failover: Internal TCP/UDP Load Balancing
|
||||
// configurable failover: Internal passthrough Network Load Balancers
|
||||
// (https://cloud.google.com/load-balancing/docs/internal/failover-overview)
|
||||
// and external TCP/UDP Load Balancing
|
||||
// and external passthrough Network Load Balancers
|
||||
// (https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview).
|
||||
// On failover or failback, this field indicates whether connection
|
||||
// draining will be honored. Google Cloud has a fixed connection
|
||||
|
@ -6847,9 +6852,9 @@ type BackendServiceFailoverPolicy struct {
|
|||
// unhealthy.If set to false, connections are distributed among all
|
||||
// primary VMs when all primary and all backup backend VMs are
|
||||
// unhealthy. For load balancers that have configurable failover:
|
||||
// Internal TCP/UDP Load Balancing
|
||||
// Internal passthrough Network Load Balancers
|
||||
// (https://cloud.google.com/load-balancing/docs/internal/failover-overview)
|
||||
// and external TCP/UDP Load Balancing
|
||||
// and external passthrough Network Load Balancers
|
||||
// (https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview).
|
||||
// The default is false.
|
||||
DropTrafficIfUnhealthy bool `json:"dropTrafficIfUnhealthy,omitempty"`
|
||||
|
@ -13944,10 +13949,10 @@ func (s *FixedOrPercent) MarshalJSON() ([]byte, error) {
|
|||
// * Regional
|
||||
// (https://cloud.google.com/compute/docs/reference/rest/beta/forwardingRules)
|
||||
// A forwarding rule and its corresponding IP address represent the
|
||||
// frontend configuration of a Google Cloud Platform load balancer.
|
||||
// Forwarding rules can also reference target instances and Cloud VPN
|
||||
// Classic gateways (targetVpnGateway). For more information, read
|
||||
// Forwarding rule concepts and Using protocol forwarding.
|
||||
// frontend configuration of a Google Cloud load balancer. Forwarding
|
||||
// rules can also reference target instances and Cloud VPN Classic
|
||||
// gateways (targetVpnGateway). For more information, read Forwarding
|
||||
// rule concepts and Using protocol forwarding.
|
||||
type ForwardingRule struct {
|
||||
// IPAddress: IP address for which this forwarding rule accepts traffic.
|
||||
// When a client sends traffic to this IP address, the forwarding rule
|
||||
|
@ -14011,8 +14016,9 @@ type ForwardingRule struct {
|
|||
// AllowGlobalAccess: This field is used along with the backend_service
|
||||
// field for internal load balancing or with the target field for
|
||||
// internal TargetInstance. If set to true, clients can access the
|
||||
// Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load
|
||||
// Balancer from all regions. If false, only allows access from the
|
||||
// internal passthrough Network Load Balancers, the regional internal
|
||||
// Application Load Balancer, and the regional internal proxy Network
|
||||
// Load Balancer from all regions. If false, only allows access from the
|
||||
// local region the load balancer is located at. Note that for
|
||||
// INTERNAL_MANAGED forwarding rules, this field cannot be changed after
|
||||
// the forwarding rule is created.
|
||||
|
@ -14030,16 +14036,16 @@ type ForwardingRule struct {
|
|||
AllowPscPacketInjection bool `json:"allowPscPacketInjection,omitempty"`
|
||||
|
||||
// BackendService: Identifies the backend service to which the
|
||||
// forwarding rule sends traffic. Required for Internal TCP/UDP Load
|
||||
// Balancing and Network Load Balancing; must be omitted for all other
|
||||
// forwarding rule sends traffic. Required for internal and external
|
||||
// passthrough Network Load Balancers; must be omitted for all other
|
||||
// load balancer types.
|
||||
BackendService string `json:"backendService,omitempty"`
|
||||
|
||||
// BaseForwardingRule: [Output Only] The URL for the corresponding base
|
||||
// Forwarding Rule. By base Forwarding Rule, we mean the Forwarding Rule
|
||||
// forwarding rule. By base forwarding rule, we mean the forwarding rule
|
||||
// that has the same IP address, protocol, and port settings with the
|
||||
// current Forwarding Rule, but without sourceIPRanges specified. Always
|
||||
// empty if the current Forwarding Rule does not have sourceIPRanges
|
||||
// current forwarding rule, but without sourceIPRanges specified. Always
|
||||
// empty if the current forwarding rule does not have sourceIPRanges
|
||||
// specified.
|
||||
BaseForwardingRule string `json:"baseForwardingRule,omitempty"`
|
||||
|
||||
|
@ -14082,7 +14088,7 @@ type ForwardingRule struct {
|
|||
IsMirroringCollector bool `json:"isMirroringCollector,omitempty"`
|
||||
|
||||
// Kind: [Output Only] Type of the resource. Always
|
||||
// compute#forwardingRule for Forwarding Rule resources.
|
||||
// compute#forwardingRule for forwarding rule resources.
|
||||
Kind string `json:"kind,omitempty"`
|
||||
|
||||
// LabelFingerprint: A fingerprint for the labels being applied to this
|
||||
|
@ -14145,10 +14151,10 @@ type ForwardingRule struct {
|
|||
Name string `json:"name,omitempty"`
|
||||
|
||||
// Network: This field is not used for global external load balancing.
|
||||
// For Internal TCP/UDP Load Balancing, this field identifies the
|
||||
// network that the load balanced IP should belong to for this
|
||||
// Forwarding Rule. If the subnetwork is specified, the network of the
|
||||
// subnetwork will be used. If neither subnetwork nor this field is
|
||||
// For internal passthrough Network Load Balancers, this field
|
||||
// identifies the network that the load balanced IP should belong to for
|
||||
// this forwarding rule. If the subnetwork is specified, the network of
|
||||
// the subnetwork will be used. If neither subnetwork nor this field is
|
||||
// specified, the default network will be used. For Private Service
|
||||
// Connect forwarding rules that forward traffic to Google APIs, a
|
||||
// network must be provided.
|
||||
|
@ -14215,7 +14221,7 @@ type ForwardingRule struct {
|
|||
Ports []string `json:"ports,omitempty"`
|
||||
|
||||
// PscConnectionId: [Output Only] The PSC connection id of the PSC
|
||||
// Forwarding Rule.
|
||||
// forwarding rule.
|
||||
PscConnectionId uint64 `json:"pscConnectionId,omitempty,string"`
|
||||
|
||||
// Possible values:
|
||||
|
@ -14245,7 +14251,7 @@ type ForwardingRule struct {
|
|||
ServiceDirectoryRegistrations []*ForwardingRuleServiceDirectoryRegistration `json:"serviceDirectoryRegistrations,omitempty"`
|
||||
|
||||
// ServiceLabel: An optional prefix to the service name for this
|
||||
// Forwarding Rule. If specified, the prefix is the first label of the
|
||||
// forwarding rule. If specified, the prefix is the first label of the
|
||||
// fully qualified service name. The label must be 1-63 characters long,
|
||||
// and comply with RFC1035. Specifically, the label must be 1-63
|
||||
// characters long and match the regular expression
|
||||
|
@ -14256,25 +14262,26 @@ type ForwardingRule struct {
|
|||
ServiceLabel string `json:"serviceLabel,omitempty"`
|
||||
|
||||
// ServiceName: [Output Only] The internal fully qualified service name
|
||||
// for this Forwarding Rule. This field is only used for internal load
|
||||
// for this forwarding rule. This field is only used for internal load
|
||||
// balancing.
|
||||
ServiceName string `json:"serviceName,omitempty"`
|
||||
|
||||
// SourceIpRanges: If not empty, this Forwarding Rule will only forward
|
||||
// SourceIpRanges: If not empty, this forwarding rule will only forward
|
||||
// the traffic when the source IP address matches one of the IP
|
||||
// addresses or CIDR ranges set here. Note that a Forwarding Rule can
|
||||
// addresses or CIDR ranges set here. Note that a forwarding rule can
|
||||
// only have up to 64 source IP ranges, and this field can only be used
|
||||
// with a regional Forwarding Rule whose scheme is EXTERNAL. Each
|
||||
// with a regional forwarding rule whose scheme is EXTERNAL. Each
|
||||
// source_ip_range entry should be either an IP address (for example,
|
||||
// 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).
|
||||
SourceIpRanges []string `json:"sourceIpRanges,omitempty"`
|
||||
|
||||
// Subnetwork: This field identifies the subnetwork that the load
|
||||
// balanced IP should belong to for this Forwarding Rule, used in
|
||||
// internal load balancing and network load balancing with IPv6. If the
|
||||
// network specified is in auto subnet mode, this field is optional.
|
||||
// However, a subnetwork must be specified if the network is in custom
|
||||
// subnet mode or when creating external forwarding rule with IPv6.
|
||||
// balanced IP should belong to for this forwarding rule, used with
|
||||
// internal load balancers and external passthrough Network Load
|
||||
// Balancers with IPv6. If the network specified is in auto subnet mode,
|
||||
// this field is optional. However, a subnetwork must be specified if
|
||||
// the network is in custom subnet mode or when creating external
|
||||
// forwarding rule with IPv6.
|
||||
Subnetwork string `json:"subnetwork,omitempty"`
|
||||
|
||||
// Target: The URL of the target resource to receive the matched
|
||||
|
@ -14735,9 +14742,9 @@ func (s *ForwardingRuleReference) MarshalJSON() ([]byte, error) {
|
|||
}
|
||||
|
||||
// ForwardingRuleServiceDirectoryRegistration: Describes the
|
||||
// auto-registration of the Forwarding Rule to Service Directory. The
|
||||
// auto-registration of the forwarding rule to Service Directory. The
|
||||
// region and project of the Service Directory resource generated from
|
||||
// this registration will be the same as this Forwarding Rule.
|
||||
// this registration will be the same as this forwarding rule.
|
||||
type ForwardingRuleServiceDirectoryRegistration struct {
|
||||
// Namespace: Service Directory namespace to register the forwarding
|
||||
// rule under.
|
||||
|
@ -14749,8 +14756,8 @@ type ForwardingRuleServiceDirectoryRegistration struct {
|
|||
|
||||
// ServiceDirectoryRegion: [Optional] Service Directory region to
|
||||
// register this global forwarding rule under. Default to "us-central1".
|
||||
// Only used for PSC for Google APIs. All PSC for Google APIs Forwarding
|
||||
// Rules on the same network should use the same Service Directory
|
||||
// Only used for PSC for Google APIs. All PSC for Google APIs forwarding
|
||||
// rules on the same network should use the same Service Directory
|
||||
// region.
|
||||
ServiceDirectoryRegion string `json:"serviceDirectoryRegion,omitempty"`
|
||||
|
||||
|
@ -14950,16 +14957,17 @@ func (s *ForwardingRulesScopedListWarningData) MarshalJSON() ([]byte, error) {
|
|||
|
||||
type FutureReservation struct {
|
||||
// AutoCreatedReservationsDeleteTime: Future timestamp when the FR
|
||||
// auto-created reservations will be deleted by GCE. Format of this
|
||||
// field must be a valid
|
||||
// auto-created reservations will be deleted by Compute Engine. Format
|
||||
// of this field must be a valid
|
||||
// href="https://www.ietf.org/rfc/rfc3339.txt">RFC3339 value.
|
||||
AutoCreatedReservationsDeleteTime string `json:"autoCreatedReservationsDeleteTime,omitempty"`
|
||||
|
||||
// AutoCreatedReservationsDuration: Specifies the duration of
|
||||
// auto-created reservations. It represents relative time to future
|
||||
// reservation start_time when auto-created reservations will be
|
||||
// automatically deleted by GCE. Duration time unit is represented as a
|
||||
// count of seconds and fractions of seconds at nanosecond resolution.
|
||||
// automatically deleted by Compute Engine. Duration time unit is
|
||||
// represented as a count of seconds and fractions of seconds at
|
||||
// nanosecond resolution.
|
||||
AutoCreatedReservationsDuration *Duration `json:"autoCreatedReservationsDuration,omitempty"`
|
||||
|
||||
// AutoDeleteAutoCreatedReservations: Setting for enabling or disabling
|
||||
|
@ -15958,7 +15966,7 @@ type GRPCHealthCheck struct {
|
|||
// PortSpecification: Specifies how a port is selected for health
|
||||
// checking. Can be one of the following values: USE_FIXED_PORT:
|
||||
// Specifies a port number explicitly using the port field in the health
|
||||
// check. Supported by backend services for pass-through load balancers
|
||||
// check. Supported by backend services for passthrough load balancers
|
||||
// and backend services for proxy load balancers. Not supported by
|
||||
// target pools. The health check supports all backends supported by the
|
||||
// backend service provided the backend can be health checked. For
|
||||
|
@ -15968,7 +15976,7 @@ type GRPCHealthCheck struct {
|
|||
// specifying the health check port by referring to the backend service.
|
||||
// Only supported by backend services for proxy load balancers. Not
|
||||
// supported by target pools. Not supported by backend services for
|
||||
// pass-through load balancers. Supports all backends that can be health
|
||||
// passthrough load balancers. Supports all backends that can be health
|
||||
// checked; for example, GCE_VM_IP_PORT network endpoint groups and
|
||||
// instance group backends. For GCE_VM_IP_PORT network endpoint group
|
||||
// backends, the health check uses the port number specified for each
|
||||
|
@ -16398,7 +16406,7 @@ type HTTP2HealthCheck struct {
|
|||
// PortSpecification: Specifies how a port is selected for health
|
||||
// checking. Can be one of the following values: USE_FIXED_PORT:
|
||||
// Specifies a port number explicitly using the port field in the health
|
||||
// check. Supported by backend services for pass-through load balancers
|
||||
// check. Supported by backend services for passthrough load balancers
|
||||
// and backend services for proxy load balancers. Not supported by
|
||||
// target pools. The health check supports all backends supported by the
|
||||
// backend service provided the backend can be health checked. For
|
||||
|
@ -16408,7 +16416,7 @@ type HTTP2HealthCheck struct {
|
|||
// specifying the health check port by referring to the backend service.
|
||||
// Only supported by backend services for proxy load balancers. Not
|
||||
// supported by target pools. Not supported by backend services for
|
||||
// pass-through load balancers. Supports all backends that can be health
|
||||
// passthrough load balancers. Supports all backends that can be health
|
||||
// checked; for example, GCE_VM_IP_PORT network endpoint groups and
|
||||
// instance group backends. For GCE_VM_IP_PORT network endpoint group
|
||||
// backends, the health check uses the port number specified for each
|
||||
|
@ -16492,7 +16500,7 @@ type HTTPHealthCheck struct {
|
|||
// PortSpecification: Specifies how a port is selected for health
|
||||
// checking. Can be one of the following values: USE_FIXED_PORT:
|
||||
// Specifies a port number explicitly using the port field in the health
|
||||
// check. Supported by backend services for pass-through load balancers
|
||||
// check. Supported by backend services for passthrough load balancers
|
||||
// and backend services for proxy load balancers. Also supported in
|
||||
// legacy HTTP health checks for target pools. The health check supports
|
||||
// all backends supported by the backend service provided the backend
|
||||
|
@ -16586,7 +16594,7 @@ type HTTPSHealthCheck struct {
|
|||
// PortSpecification: Specifies how a port is selected for health
|
||||
// checking. Can be one of the following values: USE_FIXED_PORT:
|
||||
// Specifies a port number explicitly using the port field in the health
|
||||
// check. Supported by backend services for pass-through load balancers
|
||||
// check. Supported by backend services for passthrough load balancers
|
||||
// and backend services for proxy load balancers. Not supported by
|
||||
// target pools. The health check supports all backends supported by the
|
||||
// backend service provided the backend can be health checked. For
|
||||
|
@ -16596,7 +16604,7 @@ type HTTPSHealthCheck struct {
|
|||
// specifying the health check port by referring to the backend service.
|
||||
// Only supported by backend services for proxy load balancers. Not
|
||||
// supported by target pools. Not supported by backend services for
|
||||
// pass-through load balancers. Supports all backends that can be health
|
||||
// passthrough load balancers. Supports all backends that can be health
|
||||
// checked; for example, GCE_VM_IP_PORT network endpoint groups and
|
||||
// instance group backends. For GCE_VM_IP_PORT network endpoint group
|
||||
// backends, the health check uses the port number specified for each
|
||||
|
@ -16666,20 +16674,14 @@ func (s *HTTPSHealthCheck) MarshalJSON() ([]byte, error) {
|
|||
// (/compute/docs/reference/rest/beta/regionHealthChecks) * Global
|
||||
// (/compute/docs/reference/rest/beta/healthChecks) These health check
|
||||
// resources can be used for load balancing and for autohealing VMs in a
|
||||
// managed instance group (MIG). **Load balancing** The following load
|
||||
// balancer can use either regional or global health check: * Internal
|
||||
// TCP/UDP load balancer The following load balancers require regional
|
||||
// health check: * Internal HTTP(S) load balancer * Backend
|
||||
// service-based network load balancer Traffic Director and the
|
||||
// following load balancers require global health check: * External
|
||||
// HTTP(S) load balancer * TCP proxy load balancer * SSL proxy load
|
||||
// balancer The following load balancer require legacy HTTP health
|
||||
// checks (/compute/docs/reference/rest/v1/httpHealthChecks): * Target
|
||||
// pool-based network load balancer **Autohealing in MIGs** The health
|
||||
// checks that you use for autohealing VMs in a MIG can be either
|
||||
// regional or global. For more information, see Set up an application
|
||||
// health check and autohealing. For more information, see Health checks
|
||||
// overview.
|
||||
// managed instance group (MIG). **Load balancing** Health check
|
||||
// requirements vary depending on the type of load balancer. For details
|
||||
// about the type of health check supported for each load balancer and
|
||||
// corresponding backend type, see Health checks overview: Load balancer
|
||||
// guide. **Autohealing in MIGs** The health checks that you use for
|
||||
// autohealing VMs in a MIG can be either regional or global. For more
|
||||
// information, see Set up an application health check and autohealing.
|
||||
// For more information, see Health checks overview.
|
||||
type HealthCheck struct {
|
||||
// CheckIntervalSec: How often (in seconds) to send a health check. The
|
||||
// default value is 5 seconds.
|
||||
|
@ -20242,6 +20244,9 @@ type Instance struct {
|
|||
// corresponding input only field.
|
||||
ResourceStatus *ResourceStatus `json:"resourceStatus,omitempty"`
|
||||
|
||||
// SatisfiesPzi: [Output Only] Reserved for future use.
|
||||
SatisfiesPzi bool `json:"satisfiesPzi,omitempty"`
|
||||
|
||||
// SatisfiesPzs: [Output Only] Reserved for future use.
|
||||
SatisfiesPzs bool `json:"satisfiesPzs,omitempty"`
|
||||
|
||||
|
@ -21671,6 +21676,10 @@ type InstanceGroupManagerInstanceFlexibilityPolicy struct {
|
|||
// properties that the group will use when creating new VMs.
|
||||
InstanceSelectionLists map[string]InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection `json:"instanceSelectionLists,omitempty"`
|
||||
|
||||
// InstanceSelections: Named instance selections configuring properties
|
||||
// that the group will use when creating new VMs.
|
||||
InstanceSelections map[string]InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection `json:"instanceSelections,omitempty"`
|
||||
|
||||
// ForceSendFields is a list of field names (e.g.
|
||||
// "InstanceSelectionLists") to unconditionally include in API requests.
|
||||
// By default, fields with empty or default values are omitted from API
|
||||
|
@ -22403,14 +22412,15 @@ func (s *InstanceGroupManagerResizeRequestsListResponseWarningData) MarshalJSON(
|
|||
type InstanceGroupManagerStandbyPolicy struct {
|
||||
InitialDelaySec int64 `json:"initialDelaySec,omitempty"`
|
||||
|
||||
// Mode: Defines behaviour of using instances from standby pool to
|
||||
// resize MIG.
|
||||
// Mode: Defines how a MIG resumes or starts VMs from a standby pool
|
||||
// when the group scales out. The default mode is `MANUAL`.
|
||||
//
|
||||
// Possible values:
|
||||
// "MANUAL" - MIG does not automatically stop/start or suspend/resume
|
||||
// VMs.
|
||||
// "SCALE_OUT_POOL" - MIG automatically resumes and starts VMs when it
|
||||
// scales out, and replenishes the standby pool afterwards.
|
||||
// "MANUAL" - MIG does not automatically resume or start VMs in the
|
||||
// standby pool when the group scales out.
|
||||
// "SCALE_OUT_POOL" - MIG automatically resumes or starts VMs in the
|
||||
// standby pool when the group scales out, and replenishes the standby
|
||||
// pool afterwards.
|
||||
Mode string `json:"mode,omitempty"`
|
||||
|
||||
// ForceSendFields is a list of field names (e.g. "InitialDelaySec") to
|
||||
|
@ -43364,6 +43374,9 @@ type Quota struct {
|
|||
// "PREEMPTIBLE_NVIDIA_T4_GPUS"
|
||||
// "PREEMPTIBLE_NVIDIA_T4_VWS_GPUS"
|
||||
// "PREEMPTIBLE_NVIDIA_V100_GPUS"
|
||||
// "PREEMPTIBLE_TPU_LITE_DEVICE_V5"
|
||||
// "PREEMPTIBLE_TPU_LITE_PODSLICE_V5"
|
||||
// "PREEMPTIBLE_TPU_PODSLICE_V4"
|
||||
// "PRIVATE_V6_ACCESS_SUBNETWORKS"
|
||||
// "PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK"
|
||||
// "PSC_INTERNAL_LB_FORWARDING_RULES"
|
||||
|
@ -43403,6 +43416,9 @@ type Quota struct {
|
|||
// "TARGET_SSL_PROXIES"
|
||||
// "TARGET_TCP_PROXIES"
|
||||
// "TARGET_VPN_GATEWAYS"
|
||||
// "TPU_LITE_DEVICE_V5"
|
||||
// "TPU_LITE_PODSLICE_V5"
|
||||
// "TPU_PODSLICE_V4"
|
||||
// "URL_MAPS"
|
||||
// "VPN_GATEWAYS"
|
||||
// "VPN_TUNNELS"
|
||||
|
@ -50695,7 +50711,7 @@ type SSLHealthCheck struct {
|
|||
// PortSpecification: Specifies how a port is selected for health
|
||||
// checking. Can be one of the following values: USE_FIXED_PORT:
|
||||
// Specifies a port number explicitly using the port field in the health
|
||||
// check. Supported by backend services for pass-through load balancers
|
||||
// check. Supported by backend services for passthrough load balancers
|
||||
// and backend services for proxy load balancers. Not supported by
|
||||
// target pools. The health check supports all backends supported by the
|
||||
// backend service provided the backend can be health checked. For
|
||||
|
@ -50705,7 +50721,7 @@ type SSLHealthCheck struct {
|
|||
// specifying the health check port by referring to the backend service.
|
||||
// Only supported by backend services for proxy load balancers. Not
|
||||
// supported by target pools. Not supported by backend services for
|
||||
// pass-through load balancers. Supports all backends that can be health
|
||||
// passthrough load balancers. Supports all backends that can be health
|
||||
// checked; for example, GCE_VM_IP_PORT network endpoint groups and
|
||||
// instance group backends. For GCE_VM_IP_PORT network endpoint group
|
||||
// backends, the health check uses the port number specified for each
|
||||
|
@ -51932,10 +51948,20 @@ type SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfi
|
|||
|
||||
AutoDeployLoadThreshold float64 `json:"autoDeployLoadThreshold,omitempty"`
|
||||
|
||||
DetectionAbsoluteQps float64 `json:"detectionAbsoluteQps,omitempty"`
|
||||
|
||||
DetectionLoadThreshold float64 `json:"detectionLoadThreshold,omitempty"`
|
||||
|
||||
DetectionRelativeToBaselineQps float64 `json:"detectionRelativeToBaselineQps,omitempty"`
|
||||
|
||||
// Name: The name must be 1-63 characters long, and comply with RFC1035.
|
||||
// The name must be unique within the security policy.
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
// TrafficGranularityConfigs: Configuration options for enabling
|
||||
// Adaptive Protection to operate on specified granular traffic units.
|
||||
TrafficGranularityConfigs []*SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig `json:"trafficGranularityConfigs,omitempty"`
|
||||
|
||||
// ForceSendFields is a list of field names (e.g.
|
||||
// "AutoDeployConfidenceThreshold") to unconditionally include in API
|
||||
// requests. By default, fields with empty or default values are omitted
|
||||
|
@ -51967,6 +51993,9 @@ func (s *SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdC
|
|||
AutoDeployConfidenceThreshold gensupport.JSONFloat64 `json:"autoDeployConfidenceThreshold"`
|
||||
AutoDeployImpactedBaselineThreshold gensupport.JSONFloat64 `json:"autoDeployImpactedBaselineThreshold"`
|
||||
AutoDeployLoadThreshold gensupport.JSONFloat64 `json:"autoDeployLoadThreshold"`
|
||||
DetectionAbsoluteQps gensupport.JSONFloat64 `json:"detectionAbsoluteQps"`
|
||||
DetectionLoadThreshold gensupport.JSONFloat64 `json:"detectionLoadThreshold"`
|
||||
DetectionRelativeToBaselineQps gensupport.JSONFloat64 `json:"detectionRelativeToBaselineQps"`
|
||||
*NoMethod
|
||||
}
|
||||
s1.NoMethod = (*NoMethod)(s)
|
||||
|
@ -51976,9 +52005,58 @@ func (s *SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdC
|
|||
s.AutoDeployConfidenceThreshold = float64(s1.AutoDeployConfidenceThreshold)
|
||||
s.AutoDeployImpactedBaselineThreshold = float64(s1.AutoDeployImpactedBaselineThreshold)
|
||||
s.AutoDeployLoadThreshold = float64(s1.AutoDeployLoadThreshold)
|
||||
s.DetectionAbsoluteQps = float64(s1.DetectionAbsoluteQps)
|
||||
s.DetectionLoadThreshold = float64(s1.DetectionLoadThreshold)
|
||||
s.DetectionRelativeToBaselineQps = float64(s1.DetectionRelativeToBaselineQps)
|
||||
return nil
|
||||
}
|
||||
|
||||
// SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThreshold
|
||||
// ConfigTrafficGranularityConfig: Configurations to specifc granular
|
||||
// traffic units processed by Adaptive Protection.
|
||||
type SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig struct {
|
||||
// EnableEachUniqueValue: If enabled, traffic matching each unique value
|
||||
// for the specified type constitutes a separate traffic unit. It can
|
||||
// only be set to true if `value` is empty.
|
||||
EnableEachUniqueValue bool `json:"enableEachUniqueValue,omitempty"`
|
||||
|
||||
// Type: Type of this configuration.
|
||||
//
|
||||
// Possible values:
|
||||
// "HTTP_HEADER_HOST"
|
||||
// "HTTP_PATH"
|
||||
// "UNSPECIFIED_TYPE"
|
||||
Type string `json:"type,omitempty"`
|
||||
|
||||
// Value: Requests that match this value constitute a granular traffic
|
||||
// unit.
|
||||
Value string `json:"value,omitempty"`
|
||||
|
||||
// ForceSendFields is a list of field names (e.g.
|
||||
// "EnableEachUniqueValue") to unconditionally include in API requests.
|
||||
// By default, fields with empty or default values are omitted from API
|
||||
// requests. However, any non-pointer, non-interface field appearing in
|
||||
// ForceSendFields will be sent to the server regardless of whether the
|
||||
// field is empty or not. This may be used to include empty fields in
|
||||
// Patch requests.
|
||||
ForceSendFields []string `json:"-"`
|
||||
|
||||
// NullFields is a list of field names (e.g. "EnableEachUniqueValue") to
|
||||
// include in API requests with the JSON null value. By default, fields
|
||||
// with empty values are omitted from API requests. However, any field
|
||||
// with an empty value appearing in NullFields will be sent to the
|
||||
// server as null. It is an error if a field in this list has a
|
||||
// non-empty value. This may be used to include null fields in Patch
|
||||
// requests.
|
||||
NullFields []string `json:"-"`
|
||||
}
|
||||
|
||||
func (s *SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig) MarshalJSON() ([]byte, error) {
|
||||
type NoMethod SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfigThresholdConfigTrafficGranularityConfig
|
||||
raw := NoMethod(*s)
|
||||
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
|
||||
}
|
||||
|
||||
type SecurityPolicyAdvancedOptionsConfig struct {
|
||||
// JsonCustomConfig: Custom configuration to apply the JSON parsing.
|
||||
// Only applicable when json_parsing is set to STANDARD.
|
||||
|
@ -53042,7 +53120,13 @@ type SecurityPolicyRuleRateLimitOptions struct {
|
|||
// Server name indication in the TLS session of the HTTPS request. The
|
||||
// key value is truncated to the first 128 bytes. The key type defaults
|
||||
// to ALL on a HTTP session. - REGION_CODE: The country/region from
|
||||
// which the request originates.
|
||||
// which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL
|
||||
// fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If
|
||||
// not available, the key type defaults to ALL. - USER_IP: The IP
|
||||
// address of the originating client, which is resolved based on
|
||||
// "userIpRequestHeaders" configured with the security policy. If there
|
||||
// is no "userIpRequestHeaders" configuration or an IP address cannot be
|
||||
// resolved from it, the key type defaults to IP.
|
||||
//
|
||||
// Possible values:
|
||||
// "ALL"
|
||||
|
@ -53053,6 +53137,8 @@ type SecurityPolicyRuleRateLimitOptions struct {
|
|||
// "IP"
|
||||
// "REGION_CODE"
|
||||
// "SNI"
|
||||
// "TLS_JA3_FINGERPRINT"
|
||||
// "USER_IP"
|
||||
// "XFF_IP"
|
||||
EnforceOnKey string `json:"enforceOnKey,omitempty"`
|
||||
|
||||
|
@ -53139,7 +53225,14 @@ type SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig struct {
|
|||
// bytes. - SNI: Server name indication in the TLS session of the HTTPS
|
||||
// request. The key value is truncated to the first 128 bytes. The key
|
||||
// type defaults to ALL on a HTTP session. - REGION_CODE: The
|
||||
// country/region from which the request originates.
|
||||
// country/region from which the request originates. -
|
||||
// TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects
|
||||
// using HTTPS, HTTP/2 or HTTP/3. If not available, the key type
|
||||
// defaults to ALL. - USER_IP: The IP address of the originating client,
|
||||
// which is resolved based on "userIpRequestHeaders" configured with the
|
||||
// security policy. If there is no "userIpRequestHeaders" configuration
|
||||
// or an IP address cannot be resolved from it, the key type defaults to
|
||||
// IP.
|
||||
//
|
||||
// Possible values:
|
||||
// "ALL"
|
||||
|
@ -53150,6 +53243,8 @@ type SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig struct {
|
|||
// "IP"
|
||||
// "REGION_CODE"
|
||||
// "SNI"
|
||||
// "TLS_JA3_FINGERPRINT"
|
||||
// "USER_IP"
|
||||
// "XFF_IP"
|
||||
EnforceOnKeyType string `json:"enforceOnKeyType,omitempty"`
|
||||
|
||||
|
@ -56873,9 +56968,9 @@ func (s *SslPoliciesScopedListWarningData) MarshalJSON() ([]byte, error) {
|
|||
}
|
||||
|
||||
// SslPolicy: Represents an SSL Policy resource. Use SSL policies to
|
||||
// control the SSL features, such as versions and cipher suites, offered
|
||||
// by an HTTPS or SSL Proxy load balancer. For more information, read
|
||||
// SSL Policy Concepts.
|
||||
// control SSL features, such as versions and cipher suites, that are
|
||||
// offered by Application Load Balancers and proxy Network Load
|
||||
// Balancers. For more information, read SSL policies overview.
|
||||
type SslPolicy struct {
|
||||
// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
|
||||
// format.
|
||||
|
@ -58401,7 +58496,7 @@ type TCPHealthCheck struct {
|
|||
// PortSpecification: Specifies how a port is selected for health
|
||||
// checking. Can be one of the following values: USE_FIXED_PORT:
|
||||
// Specifies a port number explicitly using the port field in the health
|
||||
// check. Supported by backend services for pass-through load balancers
|
||||
// check. Supported by backend services for passthrough load balancers
|
||||
// and backend services for proxy load balancers. Not supported by
|
||||
// target pools. The health check supports all backends supported by the
|
||||
// backend service provided the backend can be health checked. For
|
||||
|
@ -58411,7 +58506,7 @@ type TCPHealthCheck struct {
|
|||
// specifying the health check port by referring to the backend service.
|
||||
// Only supported by backend services for proxy load balancers. Not
|
||||
// supported by target pools. Not supported by backend services for
|
||||
// pass-through load balancers. Supports all backends that can be health
|
||||
// passthrough load balancers. Supports all backends that can be health
|
||||
// checked; for example, GCE_VM_IP_PORT network endpoint groups and
|
||||
// instance group backends. For GCE_VM_IP_PORT network endpoint group
|
||||
// backends, the health check uses the port number specified for each
|
||||
|
@ -60984,10 +61079,10 @@ func (s *TargetInstancesScopedListWarningData) MarshalJSON() ([]byte, error) {
|
|||
}
|
||||
|
||||
// TargetPool: Represents a Target Pool resource. Target pools are used
|
||||
// for network TCP/UDP load balancing. A target pool references member
|
||||
// instances, an associated legacy HttpHealthCheck resource, and,
|
||||
// optionally, a backup target pool. For more information, read Using
|
||||
// target pools.
|
||||
// with external passthrough Network Load Balancers. A target pool
|
||||
// references member instances, an associated legacy HttpHealthCheck
|
||||
// resource, and, optionally, a backup target pool. For more
|
||||
// information, read Using target pools.
|
||||
type TargetPool struct {
|
||||
// BackupPool: The server-defined URL for the resource. This field is
|
||||
// applicable only when the containing target pool is serving a
|
||||
|
@ -62003,10 +62098,10 @@ func (s *TargetSslProxiesSetSslCertificatesRequest) MarshalJSON() ([]byte, error
|
|||
}
|
||||
|
||||
// TargetSslProxy: Represents a Target SSL Proxy resource. A target SSL
|
||||
// proxy is a component of a SSL Proxy load balancer. Global forwarding
|
||||
// rules reference a target SSL proxy, and the target proxy then
|
||||
// references an external backend service. For more information, read
|
||||
// Using Target Proxies.
|
||||
// proxy is a component of a Proxy Network Load Balancer. The forwarding
|
||||
// rule references the target SSL proxy, and the target proxy then
|
||||
// references a backend service. For more information, read Proxy
|
||||
// Network Load Balancer overview.
|
||||
type TargetSslProxy struct {
|
||||
// CertificateMap: URL of a certificate map that identifies a
|
||||
// certificate map associated with the given target proxy. This field
|
||||
|
@ -62520,10 +62615,10 @@ func (s *TargetTcpProxiesSetProxyHeaderRequest) MarshalJSON() ([]byte, error) {
|
|||
}
|
||||
|
||||
// TargetTcpProxy: Represents a Target TCP Proxy resource. A target TCP
|
||||
// proxy is a component of a TCP Proxy load balancer. Global forwarding
|
||||
// rules reference target TCP proxy, and the target proxy then
|
||||
// references an external backend service. For more information, read
|
||||
// TCP Proxy Load Balancing overview.
|
||||
// proxy is a component of a Proxy Network Load Balancer. The forwarding
|
||||
// rule references the target TCP proxy, and the target proxy then
|
||||
// references a backend service. For more information, read Proxy
|
||||
// Network Load Balancer overview.
|
||||
type TargetTcpProxy struct {
|
||||
// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
|
||||
// format.
|
||||
|
@ -106823,8 +106918,8 @@ type InstanceGroupManagersListManagedInstancesCall struct {
|
|||
// instance, the currentAction is CREATING. If a previous action failed,
|
||||
// the list displays the errors for that failed action. The orderBy
|
||||
// query parameter is not supported. The `pageToken` query parameter is
|
||||
// supported only in the alpha and beta API and only if the group's
|
||||
// `listManagedInstancesResults` field is set to `PAGINATED`.
|
||||
// supported only if the group's `listManagedInstancesResults` field is
|
||||
// set to `PAGINATED`.
|
||||
//
|
||||
// - instanceGroupManager: The name of the managed instance group.
|
||||
// - project: Project ID for this request.
|
||||
|
@ -107010,7 +107105,7 @@ func (c *InstanceGroupManagersListManagedInstancesCall) Do(opts ...googleapi.Cal
|
|||
}
|
||||
return ret, nil
|
||||
// {
|
||||
// "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
// "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
// "flatPath": "projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
// "httpMethod": "POST",
|
||||
// "id": "compute.instanceGroupManagers.listManagedInstances",
|
||||
|
@ -122451,9 +122546,11 @@ func (r *InstancesService) Stop(project string, zone string, instance string) *I
|
|||
return c
|
||||
}
|
||||
|
||||
// DiscardLocalSsd sets the optional parameter "discardLocalSsd": If
|
||||
// true, discard the contents of any attached localSSD partitions.
|
||||
// Default value is false.
|
||||
// DiscardLocalSsd sets the optional parameter "discardLocalSsd": This
|
||||
// property is required if the instance has any attached Local SSD
|
||||
// disks. If false, Local SSD data will be preserved when the instance
|
||||
// is suspended. If true, the contents of any attached Local SSD disks
|
||||
// will be discarded.
|
||||
func (c *InstancesStopCall) DiscardLocalSsd(discardLocalSsd bool) *InstancesStopCall {
|
||||
c.urlParams_.Set("discardLocalSsd", fmt.Sprint(discardLocalSsd))
|
||||
return c
|
||||
|
@ -122574,7 +122671,7 @@ func (c *InstancesStopCall) Do(opts ...googleapi.CallOption) (*Operation, error)
|
|||
// ],
|
||||
// "parameters": {
|
||||
// "discardLocalSsd": {
|
||||
// "description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
// "description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
// "location": "query",
|
||||
// "type": "boolean"
|
||||
// },
|
||||
|
@ -122649,9 +122746,11 @@ func (r *InstancesService) Suspend(project string, zone string, instance string)
|
|||
return c
|
||||
}
|
||||
|
||||
// DiscardLocalSsd sets the optional parameter "discardLocalSsd": If
|
||||
// true, discard the contents of any attached localSSD partitions.
|
||||
// Default value is false.
|
||||
// DiscardLocalSsd sets the optional parameter "discardLocalSsd": This
|
||||
// property is required if the instance has any attached Local SSD
|
||||
// disks. If false, Local SSD data will be preserved when the instance
|
||||
// is suspended. If true, the contents of any attached Local SSD disks
|
||||
// will be discarded.
|
||||
func (c *InstancesSuspendCall) DiscardLocalSsd(discardLocalSsd bool) *InstancesSuspendCall {
|
||||
c.urlParams_.Set("discardLocalSsd", fmt.Sprint(discardLocalSsd))
|
||||
return c
|
||||
|
@ -122772,7 +122871,7 @@ func (c *InstancesSuspendCall) Do(opts ...googleapi.CallOption) (*Operation, err
|
|||
// ],
|
||||
// "parameters": {
|
||||
// "discardLocalSsd": {
|
||||
// "description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
// "description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
// "location": "query",
|
||||
// "type": "boolean"
|
||||
// },
|
||||
|
@ -172611,9 +172710,8 @@ type RegionInstanceGroupManagersListManagedInstancesCall struct {
|
|||
// group and instances that are scheduled to be created. The list
|
||||
// includes any current actions that the group has scheduled for its
|
||||
// instances. The orderBy query parameter is not supported. The
|
||||
// `pageToken` query parameter is supported only in the alpha and beta
|
||||
// API and only if the group's `listManagedInstancesResults` field is
|
||||
// set to `PAGINATED`.
|
||||
// `pageToken` query parameter is supported only if the group's
|
||||
// `listManagedInstancesResults` field is set to `PAGINATED`.
|
||||
//
|
||||
// - instanceGroupManager: The name of the managed instance group.
|
||||
// - project: Project ID for this request.
|
||||
|
@ -172798,7 +172896,7 @@ func (c *RegionInstanceGroupManagersListManagedInstancesCall) Do(opts ...googlea
|
|||
}
|
||||
return ret, nil
|
||||
// {
|
||||
// "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
// "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
// "flatPath": "projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
// "httpMethod": "POST",
|
||||
// "id": "compute.regionInstanceGroupManagers.listManagedInstances",
|
||||
|
@ -226187,8 +226285,8 @@ type TargetSslProxiesSetSslPolicyCall struct {
|
|||
|
||||
// SetSslPolicy: Sets the SSL policy for TargetSslProxy. The SSL policy
|
||||
// specifies the server-side support for SSL features. This affects
|
||||
// connections between clients and the SSL proxy load balancer. They do
|
||||
// not affect the connection between the load balancer and the backends.
|
||||
// connections between clients and the load balancer. They do not affect
|
||||
// the connection between the load balancer and the backends.
|
||||
//
|
||||
// - project: Project ID for this request.
|
||||
// - targetSslProxy: Name of the TargetSslProxy resource whose SSL
|
||||
|
@ -226310,7 +226408,7 @@ func (c *TargetSslProxiesSetSslPolicyCall) Do(opts ...googleapi.CallOption) (*Op
|
|||
}
|
||||
return ret, nil
|
||||
// {
|
||||
// "description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
// "description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
// "flatPath": "projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
|
||||
// "httpMethod": "POST",
|
||||
// "id": "compute.targetSslProxies.setSslPolicy",
|
||||
|
|
|
@ -8066,7 +8066,7 @@
|
|||
]
|
||||
},
|
||||
"listManagedInstances": {
|
||||
"description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"flatPath": "projects/{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.instanceGroupManagers.listManagedInstances",
|
||||
|
@ -11374,7 +11374,7 @@
|
|||
],
|
||||
"parameters": {
|
||||
"discardLocalSsd": {
|
||||
"description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
"description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -11426,7 +11426,7 @@
|
|||
],
|
||||
"parameters": {
|
||||
"discardLocalSsd": {
|
||||
"description": "If true, discard the contents of any attached localSSD partitions. Default value is false.",
|
||||
"description": "This property is required if the instance has any attached Local SSD disks. If false, Local SSD data will be preserved when the instance is suspended. If true, the contents of any attached Local SSD disks will be discarded.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
},
|
||||
|
@ -21869,7 +21869,7 @@
|
|||
]
|
||||
},
|
||||
"listManagedInstances": {
|
||||
"description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only in the alpha and beta API and only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances. The orderBy query parameter is not supported. The `pageToken` query parameter is supported only if the group's `listManagedInstancesResults` field is set to `PAGINATED`.",
|
||||
"flatPath": "projects/{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.regionInstanceGroupManagers.listManagedInstances",
|
||||
|
@ -26547,6 +26547,73 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"regionZones": {
|
||||
"methods": {
|
||||
"list": {
|
||||
"description": "Retrieves the list of Zone resources under the specific region available to the specified project.",
|
||||
"flatPath": "projects/{project}/regions/{region}/zones",
|
||||
"httpMethod": "GET",
|
||||
"id": "compute.regionZones.list",
|
||||
"parameterOrder": [
|
||||
"project",
|
||||
"region"
|
||||
],
|
||||
"parameters": {
|
||||
"filter": {
|
||||
"description": "A filter expression that filters resources listed in the response. Most Compute resources support two types of filter expressions: expressions that support regular expressions and expressions that follow API improvement proposal AIP-160. These two types of filter expressions cannot be mixed in one request. If you want to use AIP-160, your expression must specify the field name, an operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The operator must be either `=`, `!=`, `\u003e`, `\u003c`, `\u003c=`, `\u003e=` or `:`. For example, if you are filtering Compute Engine instances, you can exclude instances named `example-instance` by specifying `name != example-instance`. The `:*` comparison can be used to test whether a key has been defined. For example, to find all objects with `owner` label use: ``` labels.owner:* ``` You can also filter nested fields. For example, you could specify `scheduling.automaticRestart = false` to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels. To filter on multiple expressions, provide each separate expression within parentheses. For example: ``` (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\") ``` By default, each expression is an `AND` expression. However, you can include `AND` and `OR` expressions explicitly. For example: ``` (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true) ``` If you want to use a regular expression, use the `eq` (equal) or `ne` (not equal) operator against a single un-parenthesized expression with or without quotes or against multiple parenthesized expressions. Examples: `fieldname eq unquoted literal` `fieldname eq 'single quoted literal'` `fieldname eq \"double quoted literal\"` `(fieldname1 eq literal) (fieldname2 ne \"literal\")` The literal value is interpreted as a regular expression using Google RE2 library syntax. The literal value must match the entire field. For example, to filter for instances that do not end with name \"instance\", you would use `name ne .*instance`. You cannot combine constraints on multiple fields using regular expressions.",
|
||||
"location": "query",
|
||||
"type": "string"
|
||||
},
|
||||
"maxResults": {
|
||||
"default": "500",
|
||||
"description": "The maximum number of results per page that should be returned. If the number of available results is larger than `maxResults`, Compute Engine returns a `nextPageToken` that can be used to get the next page of results in subsequent list requests. Acceptable values are `0` to `500`, inclusive. (Default: `500`)",
|
||||
"format": "uint32",
|
||||
"location": "query",
|
||||
"minimum": "0",
|
||||
"type": "integer"
|
||||
},
|
||||
"orderBy": {
|
||||
"description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name. You can also sort results in descending order based on the creation timestamp using `orderBy=\"creationTimestamp desc\"`. This sorts results based on the `creationTimestamp` field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first. Currently, only sorting by `name` or `creationTimestamp desc` is supported.",
|
||||
"location": "query",
|
||||
"type": "string"
|
||||
},
|
||||
"pageToken": {
|
||||
"description": "Specifies a page token to use. Set `pageToken` to the `nextPageToken` returned by a previous list request to get the next page of results.",
|
||||
"location": "query",
|
||||
"type": "string"
|
||||
},
|
||||
"project": {
|
||||
"description": "Project ID for this request.",
|
||||
"location": "path",
|
||||
"pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
"region": {
|
||||
"description": "Region for this request.",
|
||||
"location": "path",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"required": true,
|
||||
"type": "string"
|
||||
},
|
||||
"returnPartialSuccess": {
|
||||
"description": "Opt-in for partial success behavior which provides partial results in case of failure. The default value is false.",
|
||||
"location": "query",
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"path": "projects/{project}/regions/{region}/zones",
|
||||
"response": {
|
||||
"$ref": "ZoneList"
|
||||
},
|
||||
"scopes": [
|
||||
"https://www.googleapis.com/auth/cloud-platform",
|
||||
"https://www.googleapis.com/auth/compute",
|
||||
"https://www.googleapis.com/auth/compute.readonly"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"regions": {
|
||||
"methods": {
|
||||
"get": {
|
||||
|
@ -33196,7 +33263,7 @@
|
|||
]
|
||||
},
|
||||
"setSslPolicy": {
|
||||
"description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
"description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the load balancer. They do not affect the connection between the load balancer and the backends.",
|
||||
"flatPath": "projects/{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
|
||||
"httpMethod": "POST",
|
||||
"id": "compute.targetSslProxies.setSslPolicy",
|
||||
|
@ -35267,7 +35334,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"revision": "20231031",
|
||||
"revision": "20231128",
|
||||
"rootUrl": "https://compute.googleapis.com/",
|
||||
"schemas": {
|
||||
"AWSV4Signature": {
|
||||
|
@ -36528,6 +36595,80 @@
|
|||
},
|
||||
"type": "object"
|
||||
},
|
||||
"AllocationAggregateReservation": {
|
||||
"description": "This reservation type is specified by total resource amounts (e.g. total count of CPUs) and can account for multiple instance SKUs. In other words, one can create instances of varying shapes against this reservation.",
|
||||
"id": "AllocationAggregateReservation",
|
||||
"properties": {
|
||||
"inUseResources": {
|
||||
"description": "[Output only] List of resources currently in use.",
|
||||
"items": {
|
||||
"$ref": "AllocationAggregateReservationReservedResourceInfo"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"reservedResources": {
|
||||
"description": "List of reserved resources (CPUs, memory, accelerators).",
|
||||
"items": {
|
||||
"$ref": "AllocationAggregateReservationReservedResourceInfo"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"vmFamily": {
|
||||
"description": "The VM family that all instances scheduled against this reservation must belong to.",
|
||||
"enum": [
|
||||
"VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L",
|
||||
"VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP",
|
||||
"VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"workloadType": {
|
||||
"description": "The workload type of the instances that will target this reservation.",
|
||||
"enum": [
|
||||
"BATCH",
|
||||
"SERVING",
|
||||
"UNSPECIFIED"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Reserved resources will be optimized for BATCH workloads, such as ML training.",
|
||||
"Reserved resources will be optimized for SERVING workloads, such as ML inference.",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"AllocationAggregateReservationReservedResourceInfo": {
|
||||
"id": "AllocationAggregateReservationReservedResourceInfo",
|
||||
"properties": {
|
||||
"accelerator": {
|
||||
"$ref": "AllocationAggregateReservationReservedResourceInfoAccelerator",
|
||||
"description": "Properties of accelerator resources in this reservation."
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"AllocationAggregateReservationReservedResourceInfoAccelerator": {
|
||||
"id": "AllocationAggregateReservationReservedResourceInfoAccelerator",
|
||||
"properties": {
|
||||
"acceleratorCount": {
|
||||
"description": "Number of accelerators of specified type.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"acceleratorType": {
|
||||
"description": "Full or partial URL to accelerator type. e.g. \"projects/{PROJECT}/zones/{ZONE}/acceleratorTypes/ct4l\"",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"AllocationResourceStatus": {
|
||||
"description": "[Output Only] Contains output only fields.",
|
||||
"id": "AllocationResourceStatus",
|
||||
|
@ -36801,6 +36942,10 @@
|
|||
"description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example: https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/pd-standard For a full list of acceptable values, see Persistent disk types. If you specify this field when creating a VM, you can provide either the full or partial URL. For example, the following values are valid: - https://www.googleapis.com/compute/v1/projects/project/zones/zone /diskTypes/diskType - projects/project/zones/zone/diskTypes/diskType - zones/zone/diskTypes/diskType If you specify this field when creating or updating an instance template or all-instances configuration, specify the type of the disk, not the URL. For example: pd-standard.",
|
||||
"type": "string"
|
||||
},
|
||||
"enableConfidentialCompute": {
|
||||
"description": "Whether this disk is using confidential compute mode.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"labels": {
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
|
@ -38172,7 +38317,7 @@
|
|||
"id": "BackendService",
|
||||
"properties": {
|
||||
"affinityCookieTtlSec": {
|
||||
"description": "Lifetime of cookies in seconds. This setting is applicable to external and internal HTTP(S) load balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
|
||||
"description": "Lifetime of cookies in seconds. This setting is applicable to Application Load Balancers and Traffic Director and requires GENERATED_COOKIE or HTTP_COOKIE session affinity. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value is two weeks (1,209,600). Not supported when the backend service is referenced by a URL map that is bound to target gRPC proxy that has validateForProxyless field set to true.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
|
@ -38207,7 +38352,7 @@
|
|||
},
|
||||
"connectionTrackingPolicy": {
|
||||
"$ref": "BackendServiceConnectionTrackingPolicy",
|
||||
"description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for Network Load Balancing and Internal TCP/UDP Load Balancing."
|
||||
"description": "Connection Tracking configuration for this BackendService. Connection tracking policy settings are only available for external passthrough Network Load Balancers and internal passthrough Network Load Balancers."
|
||||
},
|
||||
"consistentHash": {
|
||||
"$ref": "ConsistentHashLoadBalancerSettings",
|
||||
|
@ -38240,12 +38385,12 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enableCDN": {
|
||||
"description": "If true, enables Cloud CDN for the backend service of an external HTTP(S) load balancer.",
|
||||
"description": "If true, enables Cloud CDN for the backend service of a global external Application Load Balancer.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"failoverPolicy": {
|
||||
"$ref": "BackendServiceFailoverPolicy",
|
||||
"description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
|
||||
"description": "Requires at least one backend instance group to be defined as a backup (failover) backend. For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview)."
|
||||
},
|
||||
"fingerprint": {
|
||||
"description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService, otherwise the request will fail with error 412 conditionNotMet. To see the latest fingerprint, make a get() request to retrieve a BackendService.",
|
||||
|
@ -38261,7 +38406,7 @@
|
|||
},
|
||||
"iap": {
|
||||
"$ref": "BackendServiceIAP",
|
||||
"description": "The configurations for Identity-Aware Proxy on this resource. Not available for Internal TCP/UDP Load Balancing and Network Load Balancing."
|
||||
"description": "The configurations for Identity-Aware Proxy on this resource. Not available for internal passthrough Network Load Balancers and external passthrough Network Load Balancers."
|
||||
},
|
||||
"id": {
|
||||
"description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
|
||||
|
@ -38284,10 +38429,10 @@
|
|||
"INVALID_LOAD_BALANCING_SCHEME"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Signifies that this will be used for external HTTP(S), SSL Proxy, TCP Proxy, or Network Load Balancing",
|
||||
"Signifies that this will be used for External Managed HTTP(S) Load Balancing.",
|
||||
"Signifies that this will be used for Internal TCP/UDP Load Balancing.",
|
||||
"Signifies that this will be used for Internal HTTP(S) Load Balancing.",
|
||||
"Signifies that this will be used for classic Application Load Balancers, global external proxy Network Load Balancers, or external passthrough Network Load Balancers.",
|
||||
"Signifies that this will be used for global external Application Load Balancers, regional external Application Load Balancers, or regional external proxy Network Load Balancers.",
|
||||
"Signifies that this will be used for internal passthrough Network Load Balancers.",
|
||||
"Signifies that this will be used for internal Application Load Balancers.",
|
||||
"Signifies that this will be used by Traffic Director.",
|
||||
""
|
||||
],
|
||||
|
@ -38354,12 +38499,12 @@
|
|||
},
|
||||
"port": {
|
||||
"deprecated": true,
|
||||
"description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port.",
|
||||
"description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"portName": {
|
||||
"description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For Internal TCP/UDP Load Balancing and Network Load Balancing, omit port_name.",
|
||||
"description": "A named port on a backend instance group representing the port for communication to the backend VMs in that group. The named port must be [defined on each backend instance group](https://cloud.google.com/load-balancing/docs/backend-service#named_ports). This parameter has no meaning if the backends are NEGs. For internal passthrough Network Load Balancers and external passthrough Network Load Balancers, omit port_name.",
|
||||
"type": "string"
|
||||
},
|
||||
"protocol": {
|
||||
|
@ -38738,11 +38883,11 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enableStrongAffinity": {
|
||||
"description": "Enable Strong Session Affinity for Network Load Balancing. This option is not available publicly.",
|
||||
"description": "Enable Strong Session Affinity for external passthrough Network Load Balancers. This option is not available publicly.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"idleTimeoutSec": {
|
||||
"description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For Internal TCP/UDP Load Balancing: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For Network Load Balancer the default is 60 seconds. This option is not available publicly.",
|
||||
"description": "Specifies how long to keep a Connection Tracking entry while there is no matching traffic (in seconds). For internal passthrough Network Load Balancers: - The minimum (default) is 10 minutes and the maximum is 16 hours. - It can be set only if Connection Tracking is less than 5-tuple (i.e. Session Affinity is CLIENT_IP_NO_DESTINATION, CLIENT_IP or CLIENT_IP_PROTO, and Tracking Mode is PER_SESSION). For external passthrough Network Load Balancers the default is 60 seconds. This option is not available publicly.",
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
|
@ -38764,7 +38909,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"BackendServiceFailoverPolicy": {
|
||||
"description": "For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
|
||||
"description": "For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). On failover or failback, this field indicates whether connection draining will be honored. Google Cloud has a fixed connection draining timeout of 10 minutes. A setting of true terminates existing TCP connections to the active pool during failover and failback, immediately draining traffic. A setting of false allows existing TCP connections to persist, even on VMs no longer in the active pool, for up to the duration of the connection draining timeout (10 minutes).",
|
||||
"id": "BackendServiceFailoverPolicy",
|
||||
"properties": {
|
||||
"disableConnectionDrainOnFailover": {
|
||||
|
@ -38772,7 +38917,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"dropTrafficIfUnhealthy": {
|
||||
"description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external TCP/UDP Load Balancing](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false.",
|
||||
"description": "If set to true, connections to the load balancer are dropped when all primary and all backup backend VMs are unhealthy.If set to false, connections are distributed among all primary VMs when all primary and all backup backend VMs are unhealthy. For load balancers that have configurable failover: [Internal passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/internal/failover-overview) and [external passthrough Network Load Balancers](https://cloud.google.com/load-balancing/docs/network/networklb-failover-overview). The default is false.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"failoverRatio": {
|
||||
|
@ -40783,6 +40928,10 @@
|
|||
"$ref": "CustomerEncryptionKey",
|
||||
"description": "Encrypts the disk using a customer-supplied encryption key or a customer-managed encryption key. Encryption keys do not protect access to metadata of the disk. After you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later. For example, to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine. After you encrypt a disk with a customer-managed key, the diskEncryptionKey.kmsKeyName is set to a key *version* name once the disk is created. The disk is encrypted with this version of the key. In the response, diskEncryptionKey.kmsKeyName appears in the following format: \"diskEncryptionKey.kmsKeyName\": \"projects/kms_project_id/locations/region/keyRings/ key_region/cryptoKeys/key /cryptoKeysVersions/version If you do not provide an encryption key when creating the disk, then the disk is encrypted using an automatically generated key and you don't need to provide a key to use the disk later."
|
||||
},
|
||||
"enableConfidentialCompute": {
|
||||
"description": "Whether this disk is using confidential compute mode.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"guestOsFeatures": {
|
||||
"description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
|
||||
"items": {
|
||||
|
@ -43535,7 +43684,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"ForwardingRule": {
|
||||
"description": "Represents a Forwarding Rule resource. Forwarding rule resources in Google Cloud can be either regional or global in scope: * [Global](https://cloud.google.com/compute/docs/reference/rest/v1/globalForwardingRules) * [Regional](https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules) A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud Platform load balancer. Forwarding rules can also reference target instances and Cloud VPN Classic gateways (targetVpnGateway). For more information, read Forwarding rule concepts and Using protocol forwarding.",
|
||||
"description": "Represents a Forwarding Rule resource. Forwarding rule resources in Google Cloud can be either regional or global in scope: * [Global](https://cloud.google.com/compute/docs/reference/rest/v1/globalForwardingRules) * [Regional](https://cloud.google.com/compute/docs/reference/rest/v1/forwardingRules) A forwarding rule and its corresponding IP address represent the frontend configuration of a Google Cloud load balancer. Forwarding rules can also reference target instances and Cloud VPN Classic gateways (targetVpnGateway). For more information, read Forwarding rule concepts and Using protocol forwarding.",
|
||||
"id": "ForwardingRule",
|
||||
"properties": {
|
||||
"IPAddress": {
|
||||
|
@ -43569,7 +43718,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"allowGlobalAccess": {
|
||||
"description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the Internal TCP/UDP Load Balancer, Internal HTTP(S) and TCP Proxy Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
|
||||
"description": "This field is used along with the backend_service field for internal load balancing or with the target field for internal TargetInstance. If set to true, clients can access the internal passthrough Network Load Balancers, the regional internal Application Load Balancer, and the regional internal proxy Network Load Balancer from all regions. If false, only allows access from the local region the load balancer is located at. Note that for INTERNAL_MANAGED forwarding rules, this field cannot be changed after the forwarding rule is created.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"allowPscGlobalAccess": {
|
||||
|
@ -43577,11 +43726,11 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"backendService": {
|
||||
"description": "Identifies the backend service to which the forwarding rule sends traffic. Required for Internal TCP/UDP Load Balancing and Network Load Balancing; must be omitted for all other load balancer types.",
|
||||
"description": "Identifies the backend service to which the forwarding rule sends traffic. Required for internal and external passthrough Network Load Balancers; must be omitted for all other load balancer types.",
|
||||
"type": "string"
|
||||
},
|
||||
"baseForwardingRule": {
|
||||
"description": "[Output Only] The URL for the corresponding base Forwarding Rule. By base Forwarding Rule, we mean the Forwarding Rule that has the same IP address, protocol, and port settings with the current Forwarding Rule, but without sourceIPRanges specified. Always empty if the current Forwarding Rule does not have sourceIPRanges specified.",
|
||||
"description": "[Output Only] The URL for the corresponding base forwarding rule. By base forwarding rule, we mean the forwarding rule that has the same IP address, protocol, and port settings with the current forwarding rule, but without sourceIPRanges specified. Always empty if the current forwarding rule does not have sourceIPRanges specified.",
|
||||
"type": "string"
|
||||
},
|
||||
"creationTimestamp": {
|
||||
|
@ -43622,7 +43771,7 @@
|
|||
},
|
||||
"kind": {
|
||||
"default": "compute#forwardingRule",
|
||||
"description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
|
||||
"description": "[Output Only] Type of the resource. Always compute#forwardingRule for forwarding rule resources.",
|
||||
"type": "string"
|
||||
},
|
||||
"labelFingerprint": {
|
||||
|
@ -43670,7 +43819,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"network": {
|
||||
"description": "This field is not used for global external load balancing. For Internal TCP/UDP Load Balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
|
||||
"description": "This field is not used for global external load balancing. For internal passthrough Network Load Balancers, this field identifies the network that the load balanced IP should belong to for this forwarding rule. If the subnetwork is specified, the network of the subnetwork will be used. If neither subnetwork nor this field is specified, the default network will be used. For Private Service Connect forwarding rules that forward traffic to Google APIs, a network must be provided.",
|
||||
"type": "string"
|
||||
},
|
||||
"networkTier": {
|
||||
|
@ -43705,7 +43854,7 @@
|
|||
"type": "array"
|
||||
},
|
||||
"pscConnectionId": {
|
||||
"description": "[Output Only] The PSC connection id of the PSC Forwarding Rule.",
|
||||
"description": "[Output Only] The PSC connection id of the PSC forwarding rule.",
|
||||
"format": "uint64",
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -43744,23 +43893,23 @@
|
|||
"type": "array"
|
||||
},
|
||||
"serviceLabel": {
|
||||
"description": "An optional prefix to the service name for this Forwarding Rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
|
||||
"description": "An optional prefix to the service name for this forwarding rule. If specified, the prefix is the first label of the fully qualified service name. The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. This field is only used for internal load balancing.",
|
||||
"pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
|
||||
"type": "string"
|
||||
},
|
||||
"serviceName": {
|
||||
"description": "[Output Only] The internal fully qualified service name for this Forwarding Rule. This field is only used for internal load balancing.",
|
||||
"description": "[Output Only] The internal fully qualified service name for this forwarding rule. This field is only used for internal load balancing.",
|
||||
"type": "string"
|
||||
},
|
||||
"sourceIpRanges": {
|
||||
"description": "If not empty, this Forwarding Rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a Forwarding Rule can only have up to 64 source IP ranges, and this field can only be used with a regional Forwarding Rule whose scheme is EXTERNAL. Each source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
|
||||
"description": "If not empty, this forwarding rule will only forward the traffic when the source IP address matches one of the IP addresses or CIDR ranges set here. Note that a forwarding rule can only have up to 64 source IP ranges, and this field can only be used with a regional forwarding rule whose scheme is EXTERNAL. Each source_ip_range entry should be either an IP address (for example, 1.2.3.4) or a CIDR range (for example, 1.2.3.0/24).",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"subnetwork": {
|
||||
"description": "This field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule, used in internal load balancing and network load balancing with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
|
||||
"description": "This field identifies the subnetwork that the load balanced IP should belong to for this forwarding rule, used with internal load balancers and external passthrough Network Load Balancers with IPv6. If the network specified is in auto subnet mode, this field is optional. However, a subnetwork must be specified if the network is in custom subnet mode or when creating external forwarding rule with IPv6.",
|
||||
"type": "string"
|
||||
},
|
||||
"target": {
|
||||
|
@ -44091,7 +44240,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"ForwardingRuleServiceDirectoryRegistration": {
|
||||
"description": "Describes the auto-registration of the Forwarding Rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this Forwarding Rule.",
|
||||
"description": "Describes the auto-registration of the forwarding rule to Service Directory. The region and project of the Service Directory resource generated from this registration will be the same as this forwarding rule.",
|
||||
"id": "ForwardingRuleServiceDirectoryRegistration",
|
||||
"properties": {
|
||||
"namespace": {
|
||||
|
@ -44103,7 +44252,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"serviceDirectoryRegion": {
|
||||
"description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs Forwarding Rules on the same network should use the same Service Directory region.",
|
||||
"description": "[Optional] Service Directory region to register this global forwarding rule under. Default to \"us-central1\". Only used for PSC for Google APIs. All PSC for Google APIs forwarding rules on the same network should use the same Service Directory region.",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
|
@ -44260,7 +44409,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -44496,7 +44645,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -44549,7 +44698,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Also supported in legacy HTTP health checks for target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -44602,7 +44751,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -44639,7 +44788,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"HealthCheck": {
|
||||
"description": "Represents a health check resource. Google Compute Engine has two health check resources: * [Regional](/compute/docs/reference/rest/v1/regionHealthChecks) * [Global](/compute/docs/reference/rest/v1/healthChecks) These health check resources can be used for load balancing and for autohealing VMs in a managed instance group (MIG). **Load balancing** The following load balancer can use either regional or global health check: * Internal TCP/UDP load balancer The following load balancers require regional health check: * Internal HTTP(S) load balancer * Backend service-based network load balancer Traffic Director and the following load balancers require global health check: * External HTTP(S) load balancer * TCP proxy load balancer * SSL proxy load balancer The following load balancer require [legacy HTTP health checks](/compute/docs/reference/rest/v1/httpHealthChecks): * Target pool-based network load balancer **Autohealing in MIGs** The health checks that you use for autohealing VMs in a MIG can be either regional or global. For more information, see Set up an application health check and autohealing. For more information, see Health checks overview.",
|
||||
"description": "Represents a health check resource. Google Compute Engine has two health check resources: * [Regional](/compute/docs/reference/rest/v1/regionHealthChecks) * [Global](/compute/docs/reference/rest/v1/healthChecks) These health check resources can be used for load balancing and for autohealing VMs in a managed instance group (MIG). **Load balancing** Health check requirements vary depending on the type of load balancer. For details about the type of health check supported for each load balancer and corresponding backend type, see Health checks overview: Load balancer guide. **Autohealing in MIGs** The health checks that you use for autohealing VMs in a MIG can be either regional or global. For more information, see Set up an application health check and autohealing. For more information, see Health checks overview.",
|
||||
"id": "HealthCheck",
|
||||
"properties": {
|
||||
"checkIntervalSec": {
|
||||
|
@ -46434,6 +46583,10 @@
|
|||
"format": "int64",
|
||||
"type": "string"
|
||||
},
|
||||
"enableConfidentialCompute": {
|
||||
"description": "Whether this image is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"family": {
|
||||
"description": "The name of the image family to which this image belongs. The image family name can be from a publicly managed image family provided by Compute Engine, or from a custom image family you create. For example, centos-stream-9 is a publicly available image family. For more information, see Image family best practices. When creating disks, you can specify an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
|
||||
"type": "string"
|
||||
|
@ -46976,6 +47129,10 @@
|
|||
"$ref": "ResourceStatus",
|
||||
"description": "[Output Only] Specifies values set for instance attributes as compared to the values requested by user in the corresponding input only field."
|
||||
},
|
||||
"satisfiesPzi": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"satisfiesPzs": {
|
||||
"description": "[Output Only] Reserved for future use.",
|
||||
"type": "boolean"
|
||||
|
@ -62017,6 +62174,9 @@
|
|||
"PREEMPTIBLE_NVIDIA_T4_GPUS",
|
||||
"PREEMPTIBLE_NVIDIA_T4_VWS_GPUS",
|
||||
"PREEMPTIBLE_NVIDIA_V100_GPUS",
|
||||
"PREEMPTIBLE_TPU_LITE_DEVICE_V5",
|
||||
"PREEMPTIBLE_TPU_LITE_PODSLICE_V5",
|
||||
"PREEMPTIBLE_TPU_PODSLICE_V4",
|
||||
"PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK",
|
||||
"PSC_INTERNAL_LB_FORWARDING_RULES",
|
||||
"PUBLIC_ADVERTISED_PREFIXES",
|
||||
|
@ -62054,6 +62214,9 @@
|
|||
"TARGET_SSL_PROXIES",
|
||||
"TARGET_TCP_PROXIES",
|
||||
"TARGET_VPN_GATEWAYS",
|
||||
"TPU_LITE_DEVICE_V5",
|
||||
"TPU_LITE_PODSLICE_V5",
|
||||
"TPU_PODSLICE_V4",
|
||||
"URL_MAPS",
|
||||
"VPN_GATEWAYS",
|
||||
"VPN_TUNNELS",
|
||||
|
@ -62189,6 +62352,9 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"The total number of snapshots allowed for a single project.",
|
||||
"",
|
||||
"",
|
||||
|
@ -62208,6 +62374,9 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -63881,6 +64050,10 @@
|
|||
"description": "Represents a reservation resource. A reservation ensures that capacity is held in a specific zone even if the reserved VMs are not running. For more information, read Reserving zonal resources.",
|
||||
"id": "Reservation",
|
||||
"properties": {
|
||||
"aggregateReservation": {
|
||||
"$ref": "AllocationAggregateReservation",
|
||||
"description": "Reservation for aggregated resources, providing shape flexibility."
|
||||
},
|
||||
"commitment": {
|
||||
"description": "[Output Only] Full or partial URL to a parent commitment. This field displays for reservations that are tied to a commitment.",
|
||||
"type": "string"
|
||||
|
@ -67246,7 +67419,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -68399,6 +68572,10 @@
|
|||
"$ref": "Expr",
|
||||
"description": "User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header. Expressions containing `evaluateThreatIntelligence` require Cloud Armor Managed Protection Plus tier and are not supported in Edge Policies nor in Regional Policies. Expressions containing `evaluatePreconfiguredExpr('sourceiplist-*')` require Cloud Armor Managed Protection Plus tier and are only supported in Global Security Policies."
|
||||
},
|
||||
"exprOptions": {
|
||||
"$ref": "SecurityPolicyRuleMatcherExprOptions",
|
||||
"description": "The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr')."
|
||||
},
|
||||
"versionedExpr": {
|
||||
"description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
|
||||
"enum": [
|
||||
|
@ -68425,6 +68602,36 @@
|
|||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SecurityPolicyRuleMatcherExprOptions": {
|
||||
"id": "SecurityPolicyRuleMatcherExprOptions",
|
||||
"properties": {
|
||||
"recaptchaOptions": {
|
||||
"$ref": "SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions",
|
||||
"description": "reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field will have no effect."
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions": {
|
||||
"id": "SecurityPolicyRuleMatcherExprOptionsRecaptchaOptions",
|
||||
"properties": {
|
||||
"actionTokenSiteKeys": {
|
||||
"description": "A list of site keys to be used during the validation of reCAPTCHA action-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"sessionTokenSiteKeys": {
|
||||
"description": "A list of site keys to be used during the validation of reCAPTCHA session-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"SecurityPolicyRuleNetworkMatcher": {
|
||||
"description": "Represents a match condition that incoming network traffic is evaluated against.",
|
||||
"id": "SecurityPolicyRuleNetworkMatcher",
|
||||
|
@ -68609,7 +68816,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enforceOnKey": {
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. ",
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKey\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL. - USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP. ",
|
||||
"enum": [
|
||||
"ALL",
|
||||
"HTTP_COOKIE",
|
||||
|
@ -68618,6 +68825,8 @@
|
|||
"IP",
|
||||
"REGION_CODE",
|
||||
"SNI",
|
||||
"TLS_JA3_FINGERPRINT",
|
||||
"USER_IP",
|
||||
"XFF_IP"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
|
@ -68628,6 +68837,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -68666,7 +68877,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"enforceOnKeyType": {
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. ",
|
||||
"description": "Determines the key to enforce the rate_limit_threshold on. Possible values are: - ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if \"enforceOnKeyConfigs\" is not configured. - IP: The source IP address of the request is the key. Each IP has this limit enforced separately. - HTTP_HEADER: The value of the HTTP header whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL. - XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP. - HTTP_COOKIE: The value of the HTTP cookie whose name is configured under \"enforceOnKeyName\". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL. - HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes. - SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session. - REGION_CODE: The country/region from which the request originates. - TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL. - USER_IP: The IP address of the originating client, which is resolved based on \"userIpRequestHeaders\" configured with the security policy. If there is no \"userIpRequestHeaders\" configuration or an IP address cannot be resolved from it, the key type defaults to IP. ",
|
||||
"enum": [
|
||||
"ALL",
|
||||
"HTTP_COOKIE",
|
||||
|
@ -68675,6 +68886,8 @@
|
|||
"IP",
|
||||
"REGION_CODE",
|
||||
"SNI",
|
||||
"TLS_JA3_FINGERPRINT",
|
||||
"USER_IP",
|
||||
"XFF_IP"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
|
@ -68685,6 +68898,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"type": "string"
|
||||
|
@ -69699,6 +69914,10 @@
|
|||
"format": "int64",
|
||||
"type": "string"
|
||||
},
|
||||
"enableConfidentialCompute": {
|
||||
"description": "Whether this snapshot is created from a confidential compute mode disk. [Output Only]: This field is not set by user, but from source disk.",
|
||||
"type": "boolean"
|
||||
},
|
||||
"guestOsFeatures": {
|
||||
"description": "[Output Only] A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
|
||||
"items": {
|
||||
|
@ -71227,7 +71446,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"SslPolicy": {
|
||||
"description": "Represents an SSL Policy resource. Use SSL policies to control the SSL features, such as versions and cipher suites, offered by an HTTPS or SSL Proxy load balancer. For more information, read SSL Policy Concepts.",
|
||||
"description": "Represents an SSL Policy resource. Use SSL policies to control SSL features, such as versions and cipher suites, that are offered by Application Load Balancers and proxy Network Load Balancers. For more information, read SSL policies overview.",
|
||||
"id": "SslPolicy",
|
||||
"properties": {
|
||||
"creationTimestamp": {
|
||||
|
@ -72288,7 +72507,7 @@
|
|||
"type": "string"
|
||||
},
|
||||
"portSpecification": {
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for pass-through load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for pass-through load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"description": "Specifies how a port is selected for health checking. Can be one of the following values: USE_FIXED_PORT: Specifies a port number explicitly using the port field in the health check. Supported by backend services for passthrough load balancers and backend services for proxy load balancers. Not supported by target pools. The health check supports all backends supported by the backend service provided the backend can be health checked. For example, GCE_VM_IP network endpoint groups, GCE_VM_IP_PORT network endpoint groups, and instance group backends. USE_NAMED_PORT: Not supported. USE_SERVING_PORT: Provides an indirect method of specifying the health check port by referring to the backend service. Only supported by backend services for proxy load balancers. Not supported by target pools. Not supported by backend services for passthrough load balancers. Supports all backends that can be health checked; for example, GCE_VM_IP_PORT network endpoint groups and instance group backends. For GCE_VM_IP_PORT network endpoint group backends, the health check uses the port number specified for each endpoint in the network endpoint group. For instance group backends, the health check uses the port number determined by looking up the backend service's named port in the instance group's list of named ports.",
|
||||
"enum": [
|
||||
"USE_FIXED_PORT",
|
||||
"USE_NAMED_PORT",
|
||||
|
@ -74018,7 +74237,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetPool": {
|
||||
"description": "Represents a Target Pool resource. Target pools are used for network TCP/UDP load balancing. A target pool references member instances, an associated legacy HttpHealthCheck resource, and, optionally, a backup target pool. For more information, read Using target pools.",
|
||||
"description": "Represents a Target Pool resource. Target pools are used with external passthrough Network Load Balancers. A target pool references member instances, an associated legacy HttpHealthCheck resource, and, optionally, a backup target pool. For more information, read Using target pools.",
|
||||
"id": "TargetPool",
|
||||
"properties": {
|
||||
"backupPool": {
|
||||
|
@ -74681,7 +74900,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetSslProxy": {
|
||||
"description": "Represents a Target SSL Proxy resource. A target SSL proxy is a component of a SSL Proxy load balancer. Global forwarding rules reference a target SSL proxy, and the target proxy then references an external backend service. For more information, read Using Target Proxies.",
|
||||
"description": "Represents a Target SSL Proxy resource. A target SSL proxy is a component of a Proxy Network Load Balancer. The forwarding rule references the target SSL proxy, and the target proxy then references a backend service. For more information, read Proxy Network Load Balancer overview.",
|
||||
"id": "TargetSslProxy",
|
||||
"properties": {
|
||||
"certificateMap": {
|
||||
|
@ -75060,7 +75279,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"TargetTcpProxy": {
|
||||
"description": "Represents a Target TCP Proxy resource. A target TCP proxy is a component of a TCP Proxy load balancer. Global forwarding rules reference target TCP proxy, and the target proxy then references an external backend service. For more information, read TCP Proxy Load Balancing overview.",
|
||||
"description": "Represents a Target TCP Proxy resource. A target TCP proxy is a component of a Proxy Network Load Balancer. The forwarding rule references the target TCP proxy, and the target proxy then references a backend service. For more information, read Proxy Network Load Balancer overview.",
|
||||
"id": "TargetTcpProxy",
|
||||
"properties": {
|
||||
"creationTimestamp": {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2540,7 +2540,7 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"revision": "20231030",
|
||||
"revision": "20231122",
|
||||
"rootUrl": "https://container.googleapis.com/",
|
||||
"schemas": {
|
||||
"AcceleratorConfig": {
|
||||
|
@ -2687,6 +2687,10 @@
|
|||
"description": "Expose flow metrics on nodes",
|
||||
"type": "boolean"
|
||||
},
|
||||
"enableRelay": {
|
||||
"description": "Enable Relay component",
|
||||
"type": "boolean"
|
||||
},
|
||||
"relayMode": {
|
||||
"description": "Method used to make Relay available",
|
||||
"enum": [
|
||||
|
@ -6318,12 +6322,14 @@
|
|||
"enum": [
|
||||
"VULNERABILITY_MODE_UNSPECIFIED",
|
||||
"VULNERABILITY_DISABLED",
|
||||
"VULNERABILITY_BASIC"
|
||||
"VULNERABILITY_BASIC",
|
||||
"VULNERABILITY_ENTERPRISE"
|
||||
],
|
||||
"enumDescriptions": [
|
||||
"Default value not specified.",
|
||||
"Disables vulnerability scanning on the cluster.",
|
||||
"Applies basic vulnerability scanning on the cluster."
|
||||
"Applies basic vulnerability scanning on the cluster.",
|
||||
"Applies the Security Posture's vulnerability on cluster Enterprise level features."
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
|
|
|
@ -535,6 +535,9 @@ type AdvancedDatapathObservabilityConfig struct {
|
|||
// EnableMetrics: Expose flow metrics on nodes
|
||||
EnableMetrics bool `json:"enableMetrics,omitempty"`
|
||||
|
||||
// EnableRelay: Enable Relay component
|
||||
EnableRelay bool `json:"enableRelay,omitempty"`
|
||||
|
||||
// RelayMode: Method used to make Relay available
|
||||
//
|
||||
// Possible values:
|
||||
|
@ -6561,6 +6564,8 @@ type SecurityPostureConfig struct {
|
|||
// cluster.
|
||||
// "VULNERABILITY_BASIC" - Applies basic vulnerability scanning on the
|
||||
// cluster.
|
||||
// "VULNERABILITY_ENTERPRISE" - Applies the Security Posture's
|
||||
// vulnerability on cluster Enterprise level features.
|
||||
VulnerabilityMode string `json:"vulnerabilityMode,omitempty"`
|
||||
|
||||
// ForceSendFields is a list of field names (e.g. "Mode") to
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue