diff --git a/vendor.mod b/vendor.mod index 9b1542a98f..65be92e185 100644 --- a/vendor.mod +++ b/vendor.mod @@ -8,7 +8,7 @@ go 1.20 require ( cloud.google.com/go/compute/metadata v0.2.3 - cloud.google.com/go/logging v1.7.0 + cloud.google.com/go/logging v1.8.1 code.cloudfoundry.org/clock v1.1.0 dario.cat/mergo v1.0.0 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 @@ -157,8 +157,8 @@ require ( github.com/google/certificate-transparency-go v1.1.4 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -207,7 +207,7 @@ require ( golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect golang.org/x/oauth2 v0.11.0 // indirect golang.org/x/tools v0.14.0 // indirect - google.golang.org/api v0.126.0 // indirect + google.golang.org/api v0.128.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect diff --git a/vendor.sum b/vendor.sum index 68c49e168e..f610997488 100644 --- a/vendor.sum +++ b/vendor.sum @@ -34,8 +34,8 @@ cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7 cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= -cloud.google.com/go/logging v1.7.0 h1:CJYxlNNNNAMkHp9em/YEXcfJg+rPDg7YfwoRpMU+t5I= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -663,14 +663,14 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= @@ -1754,8 +1754,8 @@ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.126.0 h1:q4GJq+cAdMAC7XP7njvQ4tvohGLiSlytuL4BQxbIZ+o= -google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/vendor/cloud.google.com/go/logging/CHANGES.md b/vendor/cloud.google.com/go/logging/CHANGES.md index a5c037c1c9..f5e3155e6d 100644 --- a/vendor/cloud.google.com/go/logging/CHANGES.md +++ b/vendor/cloud.google.com/go/logging/CHANGES.md @@ -1,5 +1,28 @@ # Changes +## [1.8.1](https://github.com/googleapis/google-cloud-go/compare/logging/v1.8.0...logging/v1.8.1) (2023-08-14) + + +### Bug Fixes + +* **logging:** Init default retryer ([#8415](https://github.com/googleapis/google-cloud-go/issues/8415)) ([c980708](https://github.com/googleapis/google-cloud-go/commit/c980708c5f69f69c21632250a96f4f2c2e87f697)) + +## [1.8.0](https://github.com/googleapis/google-cloud-go/compare/logging/v1.7.0...logging/v1.8.0) (2023-08-09) + + +### Features + +* **logging:** Log Analytics features of the Cloud Logging API feat: Add ConfigServiceV2.CreateBucketAsync method for creating Log Buckets asynchronously feat: Add ConfigServiceV2.UpdateBucketAsync method for creating Log Buckets asynchronously feat: Add ConfigServiceV2.CreateLink method for creating linked datasets for Log Analytics Buckets feat: Add ConfigServiceV2.DeleteLink method for deleting linked datasets feat: Add ConfigServiceV2.ListLinks method for listing linked datasets feat: Add ConfigServiceV2.GetLink methods for describing linked datasets feat: Add LogBucket.analytics_enabled field that specifies whether Log Bucket's Analytics features are enabled feat: Add LogBucket.index_configs field that contains a list of Log Bucket's indexed fields and related configuration data docs: Documentation for the Log Analytics features of the Cloud Logging API ([31c3766](https://github.com/googleapis/google-cloud-go/commit/31c3766c9c4cab411669c14fc1a30bd6d2e3f2dd)) +* **logging:** Update all direct dependencies ([b340d03](https://github.com/googleapis/google-cloud-go/commit/b340d030f2b52a4ce48846ce63984b28583abde6)) + + +### Bug Fixes + +* **logging/logadmin:** Fix paging example filter ([#8224](https://github.com/googleapis/google-cloud-go/issues/8224)) ([710c627](https://github.com/googleapis/google-cloud-go/commit/710c627b2cf46b8b2e83ff02e020700b3281e498)) +* **logging:** REST query UpdateMask bug ([df52820](https://github.com/googleapis/google-cloud-go/commit/df52820b0e7721954809a8aa8700b93c5662dc9b)) +* **logging:** Update grpc to v1.55.0 ([1147ce0](https://github.com/googleapis/google-cloud-go/commit/1147ce02a990276ca4f8ab7a1ab65c14da4450ef)) +* **logging:** Use fieldmask directly instead of field_mask genproto alias ([#8031](https://github.com/googleapis/google-cloud-go/issues/8031)) ([13d9483](https://github.com/googleapis/google-cloud-go/commit/13d9483ddcfef20ea6dcdb3db5f4560c11c15c09)) + ## [1.7.0](https://github.com/googleapis/google-cloud-go/compare/logging/v1.6.1...logging/v1.7.0) (2023-02-27) diff --git a/vendor/cloud.google.com/go/logging/apiv2/README.md b/vendor/cloud.google.com/go/logging/apiv2/README.md deleted file mode 100644 index 64efb249bb..0000000000 --- a/vendor/cloud.google.com/go/logging/apiv2/README.md +++ /dev/null @@ -1,9 +0,0 @@ -Auto-generated logging v2 clients -================================= - -This package includes auto-generated clients for the logging v2 API. - -Use the handwritten logging client (in the parent directory, -cloud.google.com/go/logging) in preference to this. - - diff --git a/vendor/cloud.google.com/go/logging/apiv2/config_client.go b/vendor/cloud.google.com/go/logging/apiv2/config_client.go index 64072dabf8..b395d14570 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/config_client.go +++ b/vendor/cloud.google.com/go/logging/apiv2/config_client.go @@ -26,15 +26,14 @@ import ( loggingpb "cloud.google.com/go/logging/apiv2/loggingpb" "cloud.google.com/go/longrunning" lroauto "cloud.google.com/go/longrunning/autogen" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/iterator" "google.golang.org/api/option" "google.golang.org/api/option/internaloption" gtransport "google.golang.org/api/transport/grpc" - longrunningpb "google.golang.org/genproto/googleapis/longrunning" "google.golang.org/grpc" "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" "google.golang.org/protobuf/proto" ) @@ -44,6 +43,8 @@ var newConfigClientHook clientHook type ConfigCallOptions struct { ListBuckets []gax.CallOption GetBucket []gax.CallOption + CreateBucketAsync []gax.CallOption + UpdateBucketAsync []gax.CallOption CreateBucket []gax.CallOption UpdateBucket []gax.CallOption DeleteBucket []gax.CallOption @@ -58,6 +59,10 @@ type ConfigCallOptions struct { CreateSink []gax.CallOption UpdateSink []gax.CallOption DeleteSink []gax.CallOption + CreateLink []gax.CallOption + DeleteLink []gax.CallOption + ListLinks []gax.CallOption + GetLink []gax.CallOption ListExclusions []gax.CallOption GetExclusion []gax.CallOption CreateExclusion []gax.CallOption @@ -68,6 +73,9 @@ type ConfigCallOptions struct { GetSettings []gax.CallOption UpdateSettings []gax.CallOption CopyLogEntries []gax.CallOption + CancelOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultConfigGRPCClientOptions() []option.ClientOption { @@ -84,18 +92,21 @@ func defaultConfigGRPCClientOptions() []option.ClientOption { func defaultConfigCallOptions() *ConfigCallOptions { return &ConfigCallOptions{ - ListBuckets: []gax.CallOption{}, - GetBucket: []gax.CallOption{}, - CreateBucket: []gax.CallOption{}, - UpdateBucket: []gax.CallOption{}, - DeleteBucket: []gax.CallOption{}, - UndeleteBucket: []gax.CallOption{}, - ListViews: []gax.CallOption{}, - GetView: []gax.CallOption{}, - CreateView: []gax.CallOption{}, - UpdateView: []gax.CallOption{}, - DeleteView: []gax.CallOption{}, + ListBuckets: []gax.CallOption{}, + GetBucket: []gax.CallOption{}, + CreateBucketAsync: []gax.CallOption{}, + UpdateBucketAsync: []gax.CallOption{}, + CreateBucket: []gax.CallOption{}, + UpdateBucket: []gax.CallOption{}, + DeleteBucket: []gax.CallOption{}, + UndeleteBucket: []gax.CallOption{}, + ListViews: []gax.CallOption{}, + GetView: []gax.CallOption{}, + CreateView: []gax.CallOption{}, + UpdateView: []gax.CallOption{}, + DeleteView: []gax.CallOption{}, ListSinks: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -109,6 +120,7 @@ func defaultConfigCallOptions() *ConfigCallOptions { }), }, GetSink: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -121,8 +133,11 @@ func defaultConfigCallOptions() *ConfigCallOptions { }) }), }, - CreateSink: []gax.CallOption{}, + CreateSink: []gax.CallOption{ + gax.WithTimeout(120000 * time.Millisecond), + }, UpdateSink: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -136,6 +151,7 @@ func defaultConfigCallOptions() *ConfigCallOptions { }), }, DeleteSink: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -148,7 +164,12 @@ func defaultConfigCallOptions() *ConfigCallOptions { }) }), }, + CreateLink: []gax.CallOption{}, + DeleteLink: []gax.CallOption{}, + ListLinks: []gax.CallOption{}, + GetLink: []gax.CallOption{}, ListExclusions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -162,6 +183,7 @@ func defaultConfigCallOptions() *ConfigCallOptions { }), }, GetExclusion: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -174,9 +196,14 @@ func defaultConfigCallOptions() *ConfigCallOptions { }) }), }, - CreateExclusion: []gax.CallOption{}, - UpdateExclusion: []gax.CallOption{}, + CreateExclusion: []gax.CallOption{ + gax.WithTimeout(120000 * time.Millisecond), + }, + UpdateExclusion: []gax.CallOption{ + gax.WithTimeout(120000 * time.Millisecond), + }, DeleteExclusion: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -194,6 +221,9 @@ func defaultConfigCallOptions() *ConfigCallOptions { GetSettings: []gax.CallOption{}, UpdateSettings: []gax.CallOption{}, CopyLogEntries: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, } } @@ -204,6 +234,10 @@ type internalConfigClient interface { Connection() *grpc.ClientConn ListBuckets(context.Context, *loggingpb.ListBucketsRequest, ...gax.CallOption) *LogBucketIterator GetBucket(context.Context, *loggingpb.GetBucketRequest, ...gax.CallOption) (*loggingpb.LogBucket, error) + CreateBucketAsync(context.Context, *loggingpb.CreateBucketRequest, ...gax.CallOption) (*CreateBucketAsyncOperation, error) + CreateBucketAsyncOperation(name string) *CreateBucketAsyncOperation + UpdateBucketAsync(context.Context, *loggingpb.UpdateBucketRequest, ...gax.CallOption) (*UpdateBucketAsyncOperation, error) + UpdateBucketAsyncOperation(name string) *UpdateBucketAsyncOperation CreateBucket(context.Context, *loggingpb.CreateBucketRequest, ...gax.CallOption) (*loggingpb.LogBucket, error) UpdateBucket(context.Context, *loggingpb.UpdateBucketRequest, ...gax.CallOption) (*loggingpb.LogBucket, error) DeleteBucket(context.Context, *loggingpb.DeleteBucketRequest, ...gax.CallOption) error @@ -218,6 +252,12 @@ type internalConfigClient interface { CreateSink(context.Context, *loggingpb.CreateSinkRequest, ...gax.CallOption) (*loggingpb.LogSink, error) UpdateSink(context.Context, *loggingpb.UpdateSinkRequest, ...gax.CallOption) (*loggingpb.LogSink, error) DeleteSink(context.Context, *loggingpb.DeleteSinkRequest, ...gax.CallOption) error + CreateLink(context.Context, *loggingpb.CreateLinkRequest, ...gax.CallOption) (*CreateLinkOperation, error) + CreateLinkOperation(name string) *CreateLinkOperation + DeleteLink(context.Context, *loggingpb.DeleteLinkRequest, ...gax.CallOption) (*DeleteLinkOperation, error) + DeleteLinkOperation(name string) *DeleteLinkOperation + ListLinks(context.Context, *loggingpb.ListLinksRequest, ...gax.CallOption) *LinkIterator + GetLink(context.Context, *loggingpb.GetLinkRequest, ...gax.CallOption) (*loggingpb.Link, error) ListExclusions(context.Context, *loggingpb.ListExclusionsRequest, ...gax.CallOption) *LogExclusionIterator GetExclusion(context.Context, *loggingpb.GetExclusionRequest, ...gax.CallOption) (*loggingpb.LogExclusion, error) CreateExclusion(context.Context, *loggingpb.CreateExclusionRequest, ...gax.CallOption) (*loggingpb.LogExclusion, error) @@ -229,6 +269,9 @@ type internalConfigClient interface { UpdateSettings(context.Context, *loggingpb.UpdateSettingsRequest, ...gax.CallOption) (*loggingpb.Settings, error) CopyLogEntries(context.Context, *loggingpb.CopyLogEntriesRequest, ...gax.CallOption) (*CopyLogEntriesOperation, error) CopyLogEntriesOperation(name string) *CopyLogEntriesOperation + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator } // ConfigClient is a client for interacting with Cloud Logging API. @@ -281,17 +324,42 @@ func (c *ConfigClient) GetBucket(ctx context.Context, req *loggingpb.GetBucketRe return c.internalClient.GetBucket(ctx, req, opts...) } +// CreateBucketAsync creates a log bucket asynchronously that can be used to store log entries. +// +// After a bucket has been created, the bucket’s location cannot be changed. +func (c *ConfigClient) CreateBucketAsync(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*CreateBucketAsyncOperation, error) { + return c.internalClient.CreateBucketAsync(ctx, req, opts...) +} + +// CreateBucketAsyncOperation returns a new CreateBucketAsyncOperation from a given name. +// The name must be that of a previously created CreateBucketAsyncOperation, possibly from a different process. +func (c *ConfigClient) CreateBucketAsyncOperation(name string) *CreateBucketAsyncOperation { + return c.internalClient.CreateBucketAsyncOperation(name) +} + +// UpdateBucketAsync updates a log bucket asynchronously. +// +// If the bucket has a lifecycle_state of DELETE_REQUESTED, then +// FAILED_PRECONDITION will be returned. +// +// After a bucket has been created, the bucket’s location cannot be changed. +func (c *ConfigClient) UpdateBucketAsync(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*UpdateBucketAsyncOperation, error) { + return c.internalClient.UpdateBucketAsync(ctx, req, opts...) +} + +// UpdateBucketAsyncOperation returns a new UpdateBucketAsyncOperation from a given name. +// The name must be that of a previously created UpdateBucketAsyncOperation, possibly from a different process. +func (c *ConfigClient) UpdateBucketAsyncOperation(name string) *UpdateBucketAsyncOperation { + return c.internalClient.UpdateBucketAsyncOperation(name) +} + // CreateBucket creates a log bucket that can be used to store log entries. After a bucket // has been created, the bucket’s location cannot be changed. func (c *ConfigClient) CreateBucket(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { return c.internalClient.CreateBucket(ctx, req, opts...) } -// UpdateBucket updates a log bucket. This method replaces the following fields in the -// existing bucket with values from the new bucket: retention_period -// -// If the retention period is decreased and the bucket is locked, -// FAILED_PRECONDITION will be returned. +// UpdateBucket updates a log bucket. // // If the bucket has a lifecycle_state of DELETE_REQUESTED, then // FAILED_PRECONDITION will be returned. @@ -382,6 +450,41 @@ func (c *ConfigClient) DeleteSink(ctx context.Context, req *loggingpb.DeleteSink return c.internalClient.DeleteSink(ctx, req, opts...) } +// CreateLink asynchronously creates a linked dataset in BigQuery which makes it possible +// to use BigQuery to read the logs stored in the log bucket. A log bucket may +// currently only contain one link. +func (c *ConfigClient) CreateLink(ctx context.Context, req *loggingpb.CreateLinkRequest, opts ...gax.CallOption) (*CreateLinkOperation, error) { + return c.internalClient.CreateLink(ctx, req, opts...) +} + +// CreateLinkOperation returns a new CreateLinkOperation from a given name. +// The name must be that of a previously created CreateLinkOperation, possibly from a different process. +func (c *ConfigClient) CreateLinkOperation(name string) *CreateLinkOperation { + return c.internalClient.CreateLinkOperation(name) +} + +// DeleteLink deletes a link. This will also delete the corresponding BigQuery linked +// dataset. +func (c *ConfigClient) DeleteLink(ctx context.Context, req *loggingpb.DeleteLinkRequest, opts ...gax.CallOption) (*DeleteLinkOperation, error) { + return c.internalClient.DeleteLink(ctx, req, opts...) +} + +// DeleteLinkOperation returns a new DeleteLinkOperation from a given name. +// The name must be that of a previously created DeleteLinkOperation, possibly from a different process. +func (c *ConfigClient) DeleteLinkOperation(name string) *DeleteLinkOperation { + return c.internalClient.DeleteLinkOperation(name) +} + +// ListLinks lists links. +func (c *ConfigClient) ListLinks(ctx context.Context, req *loggingpb.ListLinksRequest, opts ...gax.CallOption) *LinkIterator { + return c.internalClient.ListLinks(ctx, req, opts...) +} + +// GetLink gets a link. +func (c *ConfigClient) GetLink(ctx context.Context, req *loggingpb.GetLinkRequest, opts ...gax.CallOption) (*loggingpb.Link, error) { + return c.internalClient.GetLink(ctx, req, opts...) +} + // ListExclusions lists all the exclusions on the _Default sink in a parent resource. func (c *ConfigClient) ListExclusions(ctx context.Context, req *loggingpb.ListExclusionsRequest, opts ...gax.CallOption) *LogExclusionIterator { return c.internalClient.ListExclusions(ctx, req, opts...) @@ -488,6 +591,21 @@ func (c *ConfigClient) CopyLogEntriesOperation(name string) *CopyLogEntriesOpera return c.internalClient.CopyLogEntriesOperation(name) } +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *ConfigClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *ConfigClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *ConfigClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + // configGRPCClient is a client for interacting with Cloud Logging API over gRPC transport. // // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. @@ -495,9 +613,6 @@ type configGRPCClient struct { // Connection pool of gRPC connections to the service. connPool gtransport.ConnPool - // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE - disableDeadlines bool - // Points back to the CallOptions field of the containing ConfigClient CallOptions **ConfigCallOptions @@ -509,8 +624,10 @@ type configGRPCClient struct { // Users should not Close this client. LROClient **lroauto.OperationsClient + operationsClient longrunningpb.OperationsClient + // The x-goog-* metadata to be sent with each request. - xGoogMetadata metadata.MD + xGoogHeaders []string } // NewConfigClient creates a new config service v2 client based on gRPC. @@ -527,11 +644,6 @@ func NewConfigClient(ctx context.Context, opts ...option.ClientOption) (*ConfigC clientOpts = append(clientOpts, hookOpts...) } - disableDeadlines, err := checkDisableDeadlines() - if err != nil { - return nil, err - } - connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) if err != nil { return nil, err @@ -540,9 +652,9 @@ func NewConfigClient(ctx context.Context, opts ...option.ClientOption) (*ConfigC c := &configGRPCClient{ connPool: connPool, - disableDeadlines: disableDeadlines, configClient: loggingpb.NewConfigServiceV2Client(connPool), CallOptions: &client.CallOptions, + operationsClient: longrunningpb.NewOperationsClient(connPool), } c.setGoogleClientInfo() @@ -574,9 +686,9 @@ func (c *configGRPCClient) Connection() *grpc.ClientConn { // the `x-goog-api-client` header passed on each request. Intended for // use by Google-written clients. func (c *configGRPCClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", versionGo()}, keyval...) + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) - c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} } // Close closes the connection to the API service. The user should invoke this when @@ -586,9 +698,10 @@ func (c *configGRPCClient) Close() error { } func (c *configGRPCClient) ListBuckets(ctx context.Context, req *loggingpb.ListBucketsRequest, opts ...gax.CallOption) *LogBucketIterator { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).ListBuckets[0:len((*c.CallOptions).ListBuckets):len((*c.CallOptions).ListBuckets)], opts...) it := &LogBucketIterator{} req = proto.Clone(req).(*loggingpb.ListBucketsRequest) @@ -631,9 +744,10 @@ func (c *configGRPCClient) ListBuckets(ctx context.Context, req *loggingpb.ListB } func (c *configGRPCClient) GetBucket(ctx context.Context, req *loggingpb.GetBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetBucket[0:len((*c.CallOptions).GetBucket):len((*c.CallOptions).GetBucket)], opts...) var resp *loggingpb.LogBucket err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -647,10 +761,51 @@ func (c *configGRPCClient) GetBucket(ctx context.Context, req *loggingpb.GetBuck return resp, nil } -func (c *configGRPCClient) CreateBucket(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) +func (c *configGRPCClient) CreateBucketAsync(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*CreateBucketAsyncOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateBucketAsync[0:len((*c.CallOptions).CreateBucketAsync):len((*c.CallOptions).CreateBucketAsync)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.configClient.CreateBucketAsync(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateBucketAsyncOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *configGRPCClient) UpdateBucketAsync(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*UpdateBucketAsyncOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateBucketAsync[0:len((*c.CallOptions).UpdateBucketAsync):len((*c.CallOptions).UpdateBucketAsync)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.configClient.UpdateBucketAsync(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UpdateBucketAsyncOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *configGRPCClient) CreateBucket(ctx context.Context, req *loggingpb.CreateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).CreateBucket[0:len((*c.CallOptions).CreateBucket):len((*c.CallOptions).CreateBucket)], opts...) var resp *loggingpb.LogBucket err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -665,9 +820,10 @@ func (c *configGRPCClient) CreateBucket(ctx context.Context, req *loggingpb.Crea } func (c *configGRPCClient) UpdateBucket(ctx context.Context, req *loggingpb.UpdateBucketRequest, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateBucket[0:len((*c.CallOptions).UpdateBucket):len((*c.CallOptions).UpdateBucket)], opts...) var resp *loggingpb.LogBucket err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -682,9 +838,10 @@ func (c *configGRPCClient) UpdateBucket(ctx context.Context, req *loggingpb.Upda } func (c *configGRPCClient) DeleteBucket(ctx context.Context, req *loggingpb.DeleteBucketRequest, opts ...gax.CallOption) error { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).DeleteBucket[0:len((*c.CallOptions).DeleteBucket):len((*c.CallOptions).DeleteBucket)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -695,9 +852,10 @@ func (c *configGRPCClient) DeleteBucket(ctx context.Context, req *loggingpb.Dele } func (c *configGRPCClient) UndeleteBucket(ctx context.Context, req *loggingpb.UndeleteBucketRequest, opts ...gax.CallOption) error { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UndeleteBucket[0:len((*c.CallOptions).UndeleteBucket):len((*c.CallOptions).UndeleteBucket)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -708,9 +866,10 @@ func (c *configGRPCClient) UndeleteBucket(ctx context.Context, req *loggingpb.Un } func (c *configGRPCClient) ListViews(ctx context.Context, req *loggingpb.ListViewsRequest, opts ...gax.CallOption) *LogViewIterator { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).ListViews[0:len((*c.CallOptions).ListViews):len((*c.CallOptions).ListViews)], opts...) it := &LogViewIterator{} req = proto.Clone(req).(*loggingpb.ListViewsRequest) @@ -753,9 +912,10 @@ func (c *configGRPCClient) ListViews(ctx context.Context, req *loggingpb.ListVie } func (c *configGRPCClient) GetView(ctx context.Context, req *loggingpb.GetViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetView[0:len((*c.CallOptions).GetView):len((*c.CallOptions).GetView)], opts...) var resp *loggingpb.LogView err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -770,9 +930,10 @@ func (c *configGRPCClient) GetView(ctx context.Context, req *loggingpb.GetViewRe } func (c *configGRPCClient) CreateView(ctx context.Context, req *loggingpb.CreateViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).CreateView[0:len((*c.CallOptions).CreateView):len((*c.CallOptions).CreateView)], opts...) var resp *loggingpb.LogView err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -787,9 +948,10 @@ func (c *configGRPCClient) CreateView(ctx context.Context, req *loggingpb.Create } func (c *configGRPCClient) UpdateView(ctx context.Context, req *loggingpb.UpdateViewRequest, opts ...gax.CallOption) (*loggingpb.LogView, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateView[0:len((*c.CallOptions).UpdateView):len((*c.CallOptions).UpdateView)], opts...) var resp *loggingpb.LogView err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -804,9 +966,10 @@ func (c *configGRPCClient) UpdateView(ctx context.Context, req *loggingpb.Update } func (c *configGRPCClient) DeleteView(ctx context.Context, req *loggingpb.DeleteViewRequest, opts ...gax.CallOption) error { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).DeleteView[0:len((*c.CallOptions).DeleteView):len((*c.CallOptions).DeleteView)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -817,9 +980,10 @@ func (c *configGRPCClient) DeleteView(ctx context.Context, req *loggingpb.Delete } func (c *configGRPCClient) ListSinks(ctx context.Context, req *loggingpb.ListSinksRequest, opts ...gax.CallOption) *LogSinkIterator { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).ListSinks[0:len((*c.CallOptions).ListSinks):len((*c.CallOptions).ListSinks)], opts...) it := &LogSinkIterator{} req = proto.Clone(req).(*loggingpb.ListSinksRequest) @@ -862,14 +1026,10 @@ func (c *configGRPCClient) ListSinks(ctx context.Context, req *loggingpb.ListSin } func (c *configGRPCClient) GetSink(ctx context.Context, req *loggingpb.GetSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetSink[0:len((*c.CallOptions).GetSink):len((*c.CallOptions).GetSink)], opts...) var resp *loggingpb.LogSink err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -884,14 +1044,10 @@ func (c *configGRPCClient) GetSink(ctx context.Context, req *loggingpb.GetSinkRe } func (c *configGRPCClient) CreateSink(ctx context.Context, req *loggingpb.CreateSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 120000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).CreateSink[0:len((*c.CallOptions).CreateSink):len((*c.CallOptions).CreateSink)], opts...) var resp *loggingpb.LogSink err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -906,14 +1062,10 @@ func (c *configGRPCClient) CreateSink(ctx context.Context, req *loggingpb.Create } func (c *configGRPCClient) UpdateSink(ctx context.Context, req *loggingpb.UpdateSinkRequest, opts ...gax.CallOption) (*loggingpb.LogSink, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateSink[0:len((*c.CallOptions).UpdateSink):len((*c.CallOptions).UpdateSink)], opts...) var resp *loggingpb.LogSink err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -928,14 +1080,10 @@ func (c *configGRPCClient) UpdateSink(ctx context.Context, req *loggingpb.Update } func (c *configGRPCClient) DeleteSink(ctx context.Context, req *loggingpb.DeleteSinkRequest, opts ...gax.CallOption) error { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "sink_name", url.QueryEscape(req.GetSinkName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).DeleteSink[0:len((*c.CallOptions).DeleteSink):len((*c.CallOptions).DeleteSink)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -945,10 +1093,115 @@ func (c *configGRPCClient) DeleteSink(ctx context.Context, req *loggingpb.Delete return err } -func (c *configGRPCClient) ListExclusions(ctx context.Context, req *loggingpb.ListExclusionsRequest, opts ...gax.CallOption) *LogExclusionIterator { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) +func (c *configGRPCClient) CreateLink(ctx context.Context, req *loggingpb.CreateLinkRequest, opts ...gax.CallOption) (*CreateLinkOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateLink[0:len((*c.CallOptions).CreateLink):len((*c.CallOptions).CreateLink)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.configClient.CreateLink(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateLinkOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *configGRPCClient) DeleteLink(ctx context.Context, req *loggingpb.DeleteLinkRequest, opts ...gax.CallOption) (*DeleteLinkOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteLink[0:len((*c.CallOptions).DeleteLink):len((*c.CallOptions).DeleteLink)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.configClient.DeleteLink(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteLinkOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *configGRPCClient) ListLinks(ctx context.Context, req *loggingpb.ListLinksRequest, opts ...gax.CallOption) *LinkIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListLinks[0:len((*c.CallOptions).ListLinks):len((*c.CallOptions).ListLinks)], opts...) + it := &LinkIterator{} + req = proto.Clone(req).(*loggingpb.ListLinksRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*loggingpb.Link, string, error) { + resp := &loggingpb.ListLinksResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.configClient.ListLinks(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetLinks(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *configGRPCClient) GetLink(ctx context.Context, req *loggingpb.GetLinkRequest, opts ...gax.CallOption) (*loggingpb.Link, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetLink[0:len((*c.CallOptions).GetLink):len((*c.CallOptions).GetLink)], opts...) + var resp *loggingpb.Link + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.configClient.GetLink(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) ListExclusions(ctx context.Context, req *loggingpb.ListExclusionsRequest, opts ...gax.CallOption) *LogExclusionIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).ListExclusions[0:len((*c.CallOptions).ListExclusions):len((*c.CallOptions).ListExclusions)], opts...) it := &LogExclusionIterator{} req = proto.Clone(req).(*loggingpb.ListExclusionsRequest) @@ -991,14 +1244,10 @@ func (c *configGRPCClient) ListExclusions(ctx context.Context, req *loggingpb.Li } func (c *configGRPCClient) GetExclusion(ctx context.Context, req *loggingpb.GetExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetExclusion[0:len((*c.CallOptions).GetExclusion):len((*c.CallOptions).GetExclusion)], opts...) var resp *loggingpb.LogExclusion err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1013,14 +1262,10 @@ func (c *configGRPCClient) GetExclusion(ctx context.Context, req *loggingpb.GetE } func (c *configGRPCClient) CreateExclusion(ctx context.Context, req *loggingpb.CreateExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 120000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).CreateExclusion[0:len((*c.CallOptions).CreateExclusion):len((*c.CallOptions).CreateExclusion)], opts...) var resp *loggingpb.LogExclusion err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1035,14 +1280,10 @@ func (c *configGRPCClient) CreateExclusion(ctx context.Context, req *loggingpb.C } func (c *configGRPCClient) UpdateExclusion(ctx context.Context, req *loggingpb.UpdateExclusionRequest, opts ...gax.CallOption) (*loggingpb.LogExclusion, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 120000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateExclusion[0:len((*c.CallOptions).UpdateExclusion):len((*c.CallOptions).UpdateExclusion)], opts...) var resp *loggingpb.LogExclusion err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1057,14 +1298,10 @@ func (c *configGRPCClient) UpdateExclusion(ctx context.Context, req *loggingpb.U } func (c *configGRPCClient) DeleteExclusion(ctx context.Context, req *loggingpb.DeleteExclusionRequest, opts ...gax.CallOption) error { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).DeleteExclusion[0:len((*c.CallOptions).DeleteExclusion):len((*c.CallOptions).DeleteExclusion)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -1075,9 +1312,10 @@ func (c *configGRPCClient) DeleteExclusion(ctx context.Context, req *loggingpb.D } func (c *configGRPCClient) GetCmekSettings(ctx context.Context, req *loggingpb.GetCmekSettingsRequest, opts ...gax.CallOption) (*loggingpb.CmekSettings, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetCmekSettings[0:len((*c.CallOptions).GetCmekSettings):len((*c.CallOptions).GetCmekSettings)], opts...) var resp *loggingpb.CmekSettings err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1092,9 +1330,10 @@ func (c *configGRPCClient) GetCmekSettings(ctx context.Context, req *loggingpb.G } func (c *configGRPCClient) UpdateCmekSettings(ctx context.Context, req *loggingpb.UpdateCmekSettingsRequest, opts ...gax.CallOption) (*loggingpb.CmekSettings, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateCmekSettings[0:len((*c.CallOptions).UpdateCmekSettings):len((*c.CallOptions).UpdateCmekSettings)], opts...) var resp *loggingpb.CmekSettings err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1109,9 +1348,10 @@ func (c *configGRPCClient) UpdateCmekSettings(ctx context.Context, req *loggingp } func (c *configGRPCClient) GetSettings(ctx context.Context, req *loggingpb.GetSettingsRequest, opts ...gax.CallOption) (*loggingpb.Settings, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetSettings[0:len((*c.CallOptions).GetSettings):len((*c.CallOptions).GetSettings)], opts...) var resp *loggingpb.Settings err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1126,9 +1366,10 @@ func (c *configGRPCClient) GetSettings(ctx context.Context, req *loggingpb.GetSe } func (c *configGRPCClient) UpdateSettings(ctx context.Context, req *loggingpb.UpdateSettingsRequest, opts ...gax.CallOption) (*loggingpb.Settings, error) { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateSettings[0:len((*c.CallOptions).UpdateSettings):len((*c.CallOptions).UpdateSettings)], opts...) var resp *loggingpb.Settings err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1143,7 +1384,7 @@ func (c *configGRPCClient) UpdateSettings(ctx context.Context, req *loggingpb.Up } func (c *configGRPCClient) CopyLogEntries(ctx context.Context, req *loggingpb.CopyLogEntriesRequest, opts ...gax.CallOption) (*CopyLogEntriesOperation, error) { - ctx = insertMetadata(ctx, c.xGoogMetadata) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) opts = append((*c.CallOptions).CopyLogEntries[0:len((*c.CallOptions).CopyLogEntries):len((*c.CallOptions).CopyLogEntries)], opts...) var resp *longrunningpb.Operation err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -1159,6 +1400,84 @@ func (c *configGRPCClient) CopyLogEntries(ctx context.Context, req *loggingpb.Co }, nil } +func (c *configGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *configGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *configGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + // CopyLogEntriesOperation manages a long-running operation from CopyLogEntries. type CopyLogEntriesOperation struct { lro *longrunning.Operation @@ -1228,6 +1547,318 @@ func (op *CopyLogEntriesOperation) Name() string { return op.lro.Name() } +// CreateBucketAsyncOperation manages a long-running operation from CreateBucketAsync. +type CreateBucketAsyncOperation struct { + lro *longrunning.Operation +} + +// CreateBucketAsyncOperation returns a new CreateBucketAsyncOperation from a given name. +// The name must be that of a previously created CreateBucketAsyncOperation, possibly from a different process. +func (c *configGRPCClient) CreateBucketAsyncOperation(name string) *CreateBucketAsyncOperation { + return &CreateBucketAsyncOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateBucketAsyncOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { + var resp loggingpb.LogBucket + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateBucketAsyncOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { + var resp loggingpb.LogBucket + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateBucketAsyncOperation) Metadata() (*loggingpb.BucketMetadata, error) { + var meta loggingpb.BucketMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateBucketAsyncOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateBucketAsyncOperation) Name() string { + return op.lro.Name() +} + +// CreateLinkOperation manages a long-running operation from CreateLink. +type CreateLinkOperation struct { + lro *longrunning.Operation +} + +// CreateLinkOperation returns a new CreateLinkOperation from a given name. +// The name must be that of a previously created CreateLinkOperation, possibly from a different process. +func (c *configGRPCClient) CreateLinkOperation(name string) *CreateLinkOperation { + return &CreateLinkOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateLinkOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*loggingpb.Link, error) { + var resp loggingpb.Link + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateLinkOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*loggingpb.Link, error) { + var resp loggingpb.Link + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateLinkOperation) Metadata() (*loggingpb.LinkMetadata, error) { + var meta loggingpb.LinkMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateLinkOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateLinkOperation) Name() string { + return op.lro.Name() +} + +// DeleteLinkOperation manages a long-running operation from DeleteLink. +type DeleteLinkOperation struct { + lro *longrunning.Operation +} + +// DeleteLinkOperation returns a new DeleteLinkOperation from a given name. +// The name must be that of a previously created DeleteLinkOperation, possibly from a different process. +func (c *configGRPCClient) DeleteLinkOperation(name string) *DeleteLinkOperation { + return &DeleteLinkOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *DeleteLinkOperation) Wait(ctx context.Context, opts ...gax.CallOption) error { + return op.lro.WaitWithInterval(ctx, nil, time.Minute, opts...) +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *DeleteLinkOperation) Poll(ctx context.Context, opts ...gax.CallOption) error { + return op.lro.Poll(ctx, nil, opts...) +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *DeleteLinkOperation) Metadata() (*loggingpb.LinkMetadata, error) { + var meta loggingpb.LinkMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *DeleteLinkOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *DeleteLinkOperation) Name() string { + return op.lro.Name() +} + +// UpdateBucketAsyncOperation manages a long-running operation from UpdateBucketAsync. +type UpdateBucketAsyncOperation struct { + lro *longrunning.Operation +} + +// UpdateBucketAsyncOperation returns a new UpdateBucketAsyncOperation from a given name. +// The name must be that of a previously created UpdateBucketAsyncOperation, possibly from a different process. +func (c *configGRPCClient) UpdateBucketAsyncOperation(name string) *UpdateBucketAsyncOperation { + return &UpdateBucketAsyncOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UpdateBucketAsyncOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { + var resp loggingpb.LogBucket + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UpdateBucketAsyncOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*loggingpb.LogBucket, error) { + var resp loggingpb.LogBucket + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UpdateBucketAsyncOperation) Metadata() (*loggingpb.BucketMetadata, error) { + var meta loggingpb.BucketMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UpdateBucketAsyncOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UpdateBucketAsyncOperation) Name() string { + return op.lro.Name() +} + +// LinkIterator manages a stream of *loggingpb.Link. +type LinkIterator struct { + items []*loggingpb.Link + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*loggingpb.Link, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *LinkIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *LinkIterator) Next() (*loggingpb.Link, error) { + var item *loggingpb.Link + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *LinkIterator) bufLen() int { + return len(it.items) +} + +func (it *LinkIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // LogBucketIterator manages a stream of *loggingpb.LogBucket. type LogBucketIterator struct { items []*loggingpb.LogBucket diff --git a/vendor/cloud.google.com/go/logging/apiv2/doc.go b/vendor/cloud.google.com/go/logging/apiv2/doc.go index 033fe01b00..5cb4ad6bfe 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/doc.go +++ b/vendor/cloud.google.com/go/logging/apiv2/doc.go @@ -21,8 +21,15 @@ // // # General documentation // -// For information about setting deadlines, reusing contexts, and more -// please visit https://pkg.go.dev/cloud.google.com/go. +// For information that is relevant for all client libraries please reference +// https://pkg.go.dev/cloud.google.com/go#pkg-overview. Some information on this +// page includes: +// +// - [Authentication and Authorization] +// - [Timeouts and Cancellation] +// - [Testing against Client Libraries] +// - [Debugging Client Libraries] +// - [Inspecting errors] // // # Example usage // @@ -76,18 +83,18 @@ // Individual methods on the client use the ctx given to them. // // To close the open connection, use the Close() method. +// +// [Authentication and Authorization]: https://pkg.go.dev/cloud.google.com/go#hdr-Authentication_and_Authorization +// [Timeouts and Cancellation]: https://pkg.go.dev/cloud.google.com/go#hdr-Timeouts_and_Cancellation +// [Testing against Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Testing +// [Debugging Client Libraries]: https://pkg.go.dev/cloud.google.com/go#hdr-Debugging +// [Inspecting errors]: https://pkg.go.dev/cloud.google.com/go#hdr-Inspecting_errors package logging // import "cloud.google.com/go/logging/apiv2" import ( "context" - "os" - "runtime" - "strconv" - "strings" - "unicode" "google.golang.org/api/option" - "google.golang.org/grpc/metadata" ) // For more information on implementing a client constructor hook, see @@ -104,27 +111,6 @@ func getVersionClient() string { return versionClient } -func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context { - out, _ := metadata.FromOutgoingContext(ctx) - out = out.Copy() - for _, md := range mds { - for k, v := range md { - out[k] = append(out[k], v...) - } - } - return metadata.NewOutgoingContext(ctx, out) -} - -func checkDisableDeadlines() (bool, error) { - raw, ok := os.LookupEnv("GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE") - if !ok { - return false, nil - } - - b, err := strconv.ParseBool(raw) - return b, err -} - // DefaultAuthScopes reports the default set of authentication scopes to use with this package. func DefaultAuthScopes() []string { return []string{ @@ -135,40 +121,3 @@ func DefaultAuthScopes() []string { "https://www.googleapis.com/auth/logging.write", } } - -// versionGo returns the Go runtime version. The returned string -// has no whitespace, suitable for reporting in header. -func versionGo() string { - const develPrefix = "devel +" - - s := runtime.Version() - if strings.HasPrefix(s, develPrefix) { - s = s[len(develPrefix):] - if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 { - s = s[:p] - } - return s - } - - notSemverRune := func(r rune) bool { - return !strings.ContainsRune("0123456789.", r) - } - - if strings.HasPrefix(s, "go1") { - s = s[2:] - var prerelease string - if p := strings.IndexFunc(s, notSemverRune); p >= 0 { - s, prerelease = s[:p], s[p:] - } - if strings.HasSuffix(s, ".") { - s += "0" - } else if strings.Count(s, ".") < 2 { - s += ".0" - } - if prerelease != "" { - s += "-" + prerelease - } - return s - } - return "UNKNOWN" -} diff --git a/vendor/cloud.google.com/go/logging/apiv2/gapic_metadata.json b/vendor/cloud.google.com/go/logging/apiv2/gapic_metadata.json index b125a4fa1d..f9f6a440d2 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/gapic_metadata.json +++ b/vendor/cloud.google.com/go/logging/apiv2/gapic_metadata.json @@ -10,6 +10,11 @@ "grpc": { "libraryClient": "ConfigClient", "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, "CopyLogEntries": { "methods": [ "CopyLogEntries" @@ -20,11 +25,21 @@ "CreateBucket" ] }, + "CreateBucketAsync": { + "methods": [ + "CreateBucketAsync" + ] + }, "CreateExclusion": { "methods": [ "CreateExclusion" ] }, + "CreateLink": { + "methods": [ + "CreateLink" + ] + }, "CreateSink": { "methods": [ "CreateSink" @@ -45,6 +60,11 @@ "DeleteExclusion" ] }, + "DeleteLink": { + "methods": [ + "DeleteLink" + ] + }, "DeleteSink": { "methods": [ "DeleteSink" @@ -70,6 +90,16 @@ "GetExclusion" ] }, + "GetLink": { + "methods": [ + "GetLink" + ] + }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, "GetSettings": { "methods": [ "GetSettings" @@ -95,6 +125,16 @@ "ListExclusions" ] }, + "ListLinks": { + "methods": [ + "ListLinks" + ] + }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, "ListSinks": { "methods": [ "ListSinks" @@ -115,6 +155,11 @@ "UpdateBucket" ] }, + "UpdateBucketAsync": { + "methods": [ + "UpdateBucketAsync" + ] + }, "UpdateCmekSettings": { "methods": [ "UpdateCmekSettings" @@ -149,11 +194,21 @@ "grpc": { "libraryClient": "Client", "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, "DeleteLog": { "methods": [ "DeleteLog" ] }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, "ListLogEntries": { "methods": [ "ListLogEntries" @@ -169,6 +224,11 @@ "ListMonitoredResourceDescriptors" ] }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, "TailLogEntries": { "methods": [ "TailLogEntries" @@ -188,6 +248,11 @@ "grpc": { "libraryClient": "MetricsClient", "rpcs": { + "CancelOperation": { + "methods": [ + "CancelOperation" + ] + }, "CreateLogMetric": { "methods": [ "CreateLogMetric" @@ -203,11 +268,21 @@ "GetLogMetric" ] }, + "GetOperation": { + "methods": [ + "GetOperation" + ] + }, "ListLogMetrics": { "methods": [ "ListLogMetrics" ] }, + "ListOperations": { + "methods": [ + "ListOperations" + ] + }, "UpdateLogMetric": { "methods": [ "UpdateLogMetric" diff --git a/vendor/cloud.google.com/go/logging/apiv2/logging_client.go b/vendor/cloud.google.com/go/logging/apiv2/logging_client.go index d05aa0b952..8df5ba91ed 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/logging_client.go +++ b/vendor/cloud.google.com/go/logging/apiv2/logging_client.go @@ -24,6 +24,7 @@ import ( "time" loggingpb "cloud.google.com/go/logging/apiv2/loggingpb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/iterator" "google.golang.org/api/option" @@ -32,7 +33,6 @@ import ( monitoredrespb "google.golang.org/genproto/googleapis/api/monitoredres" "google.golang.org/grpc" "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" "google.golang.org/protobuf/proto" ) @@ -46,6 +46,9 @@ type CallOptions struct { ListMonitoredResourceDescriptors []gax.CallOption ListLogs []gax.CallOption TailLogEntries []gax.CallOption + CancelOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultGRPCClientOptions() []option.ClientOption { @@ -63,6 +66,7 @@ func defaultGRPCClientOptions() []option.ClientOption { func defaultCallOptions() *CallOptions { return &CallOptions{ DeleteLog: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -76,6 +80,7 @@ func defaultCallOptions() *CallOptions { }), }, WriteLogEntries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -89,6 +94,7 @@ func defaultCallOptions() *CallOptions { }), }, ListLogEntries: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -102,6 +108,7 @@ func defaultCallOptions() *CallOptions { }), }, ListMonitoredResourceDescriptors: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -115,6 +122,7 @@ func defaultCallOptions() *CallOptions { }), }, ListLogs: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -140,6 +148,9 @@ func defaultCallOptions() *CallOptions { }) }), }, + CancelOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, } } @@ -154,6 +165,9 @@ type internalClient interface { ListMonitoredResourceDescriptors(context.Context, *loggingpb.ListMonitoredResourceDescriptorsRequest, ...gax.CallOption) *MonitoredResourceDescriptorIterator ListLogs(context.Context, *loggingpb.ListLogsRequest, ...gax.CallOption) *StringIterator TailLogEntries(context.Context, ...gax.CallOption) (loggingpb.LoggingServiceV2_TailLogEntriesClient, error) + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator } // Client is a client for interacting with Cloud Logging API. @@ -235,6 +249,21 @@ func (c *Client) TailLogEntries(ctx context.Context, opts ...gax.CallOption) (lo return c.internalClient.TailLogEntries(ctx, opts...) } +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *Client) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *Client) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *Client) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + // gRPCClient is a client for interacting with Cloud Logging API over gRPC transport. // // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. @@ -242,17 +271,16 @@ type gRPCClient struct { // Connection pool of gRPC connections to the service. connPool gtransport.ConnPool - // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE - disableDeadlines bool - // Points back to the CallOptions field of the containing Client CallOptions **CallOptions // The gRPC API client. client loggingpb.LoggingServiceV2Client + operationsClient longrunningpb.OperationsClient + // The x-goog-* metadata to be sent with each request. - xGoogMetadata metadata.MD + xGoogHeaders []string } // NewClient creates a new logging service v2 client based on gRPC. @@ -269,11 +297,6 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error clientOpts = append(clientOpts, hookOpts...) } - disableDeadlines, err := checkDisableDeadlines() - if err != nil { - return nil, err - } - connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) if err != nil { return nil, err @@ -282,9 +305,9 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error c := &gRPCClient{ connPool: connPool, - disableDeadlines: disableDeadlines, client: loggingpb.NewLoggingServiceV2Client(connPool), CallOptions: &client.CallOptions, + operationsClient: longrunningpb.NewOperationsClient(connPool), } c.setGoogleClientInfo() @@ -305,9 +328,9 @@ func (c *gRPCClient) Connection() *grpc.ClientConn { // the `x-goog-api-client` header passed on each request. Intended for // use by Google-written clients. func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", versionGo()}, keyval...) + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) - c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} } // Close closes the connection to the API service. The user should invoke this when @@ -317,14 +340,10 @@ func (c *gRPCClient) Close() error { } func (c *gRPCClient) DeleteLog(ctx context.Context, req *loggingpb.DeleteLogRequest, opts ...gax.CallOption) error { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "log_name", url.QueryEscape(req.GetLogName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "log_name", url.QueryEscape(req.GetLogName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).DeleteLog[0:len((*c.CallOptions).DeleteLog):len((*c.CallOptions).DeleteLog)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -335,12 +354,7 @@ func (c *gRPCClient) DeleteLog(ctx context.Context, req *loggingpb.DeleteLogRequ } func (c *gRPCClient) WriteLogEntries(ctx context.Context, req *loggingpb.WriteLogEntriesRequest, opts ...gax.CallOption) (*loggingpb.WriteLogEntriesResponse, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - ctx = insertMetadata(ctx, c.xGoogMetadata) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) opts = append((*c.CallOptions).WriteLogEntries[0:len((*c.CallOptions).WriteLogEntries):len((*c.CallOptions).WriteLogEntries)], opts...) var resp *loggingpb.WriteLogEntriesResponse err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -355,7 +369,7 @@ func (c *gRPCClient) WriteLogEntries(ctx context.Context, req *loggingpb.WriteLo } func (c *gRPCClient) ListLogEntries(ctx context.Context, req *loggingpb.ListLogEntriesRequest, opts ...gax.CallOption) *LogEntryIterator { - ctx = insertMetadata(ctx, c.xGoogMetadata) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) opts = append((*c.CallOptions).ListLogEntries[0:len((*c.CallOptions).ListLogEntries):len((*c.CallOptions).ListLogEntries)], opts...) it := &LogEntryIterator{} req = proto.Clone(req).(*loggingpb.ListLogEntriesRequest) @@ -398,7 +412,7 @@ func (c *gRPCClient) ListLogEntries(ctx context.Context, req *loggingpb.ListLogE } func (c *gRPCClient) ListMonitoredResourceDescriptors(ctx context.Context, req *loggingpb.ListMonitoredResourceDescriptorsRequest, opts ...gax.CallOption) *MonitoredResourceDescriptorIterator { - ctx = insertMetadata(ctx, c.xGoogMetadata) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) opts = append((*c.CallOptions).ListMonitoredResourceDescriptors[0:len((*c.CallOptions).ListMonitoredResourceDescriptors):len((*c.CallOptions).ListMonitoredResourceDescriptors)], opts...) it := &MonitoredResourceDescriptorIterator{} req = proto.Clone(req).(*loggingpb.ListMonitoredResourceDescriptorsRequest) @@ -441,9 +455,10 @@ func (c *gRPCClient) ListMonitoredResourceDescriptors(ctx context.Context, req * } func (c *gRPCClient) ListLogs(ctx context.Context, req *loggingpb.ListLogsRequest, opts ...gax.CallOption) *StringIterator { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).ListLogs[0:len((*c.CallOptions).ListLogs):len((*c.CallOptions).ListLogs)], opts...) it := &StringIterator{} req = proto.Clone(req).(*loggingpb.ListLogsRequest) @@ -486,7 +501,7 @@ func (c *gRPCClient) ListLogs(ctx context.Context, req *loggingpb.ListLogsReques } func (c *gRPCClient) TailLogEntries(ctx context.Context, opts ...gax.CallOption) (loggingpb.LoggingServiceV2_TailLogEntriesClient, error) { - ctx = insertMetadata(ctx, c.xGoogMetadata) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, c.xGoogHeaders...) var resp loggingpb.LoggingServiceV2_TailLogEntriesClient opts = append((*c.CallOptions).TailLogEntries[0:len((*c.CallOptions).TailLogEntries):len((*c.CallOptions).TailLogEntries)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -500,6 +515,84 @@ func (c *gRPCClient) TailLogEntries(ctx context.Context, opts ...gax.CallOption) return resp, nil } +func (c *gRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + // LogEntryIterator manages a stream of *loggingpb.LogEntry. type LogEntryIterator struct { items []*loggingpb.LogEntry @@ -594,6 +687,53 @@ func (it *MonitoredResourceDescriptorIterator) takeBuf() interface{} { return b } +// OperationIterator manages a stream of *longrunningpb.Operation. +type OperationIterator struct { + items []*longrunningpb.Operation + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*longrunningpb.Operation, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. +func (it *OperationIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *OperationIterator) Next() (*longrunningpb.Operation, error) { + var item *longrunningpb.Operation + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *OperationIterator) bufLen() int { + return len(it.items) +} + +func (it *OperationIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // StringIterator manages a stream of string. type StringIterator struct { items []string diff --git a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/log_entry.pb.go b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/log_entry.pb.go index 5ee4fb37bd..0eb75f54d3 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/log_entry.pb.go +++ b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/log_entry.pb.go @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc-gen-go v1.31.0 +// protoc v4.23.2 // source: google/logging/v2/log_entry.proto package loggingpb @@ -49,10 +49,10 @@ type LogEntry struct { // Required. The resource name of the log to which this log entry belongs: // - // "projects/[PROJECT_ID]/logs/[LOG_ID]" - // "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]" - // "folders/[FOLDER_ID]/logs/[LOG_ID]" + // "projects/[PROJECT_ID]/logs/[LOG_ID]" + // "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]" + // "folders/[FOLDER_ID]/logs/[LOG_ID]" // // A project number may be used in place of PROJECT_ID. The project number is // translated to its corresponding PROJECT_ID internally and the `log_name` @@ -80,16 +80,16 @@ type LogEntry struct { // The log entry payload, which can be one of multiple types. // // Types that are assignable to Payload: - // // *LogEntry_ProtoPayload // *LogEntry_TextPayload // *LogEntry_JsonPayload Payload isLogEntry_Payload `protobuf_oneof:"payload"` - // Optional. The time the event described by the log entry occurred. This time is used - // to compute the log entry's age and to enforce the logs retention period. - // If this field is omitted in a new log entry, then Logging assigns it the - // current time. Timestamps have nanosecond accuracy, but trailing zeros in - // the fractional seconds might be omitted when the timestamp is displayed. + // Optional. The time the event described by the log entry occurred. This time + // is used to compute the log entry's age and to enforce the logs retention + // period. If this field is omitted in a new log entry, then Logging assigns + // it the current time. Timestamps have nanosecond accuracy, but trailing + // zeros in the fractional seconds might be omitted when the timestamp is + // displayed. // // Incoming log entries must have timestamps that don't exceed the // [logs retention @@ -99,10 +99,11 @@ type LogEntry struct { Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Output only. The time the log entry was received by Logging. ReceiveTimestamp *timestamppb.Timestamp `protobuf:"bytes,24,opt,name=receive_timestamp,json=receiveTimestamp,proto3" json:"receive_timestamp,omitempty"` - // Optional. The severity of the log entry. The default value is `LogSeverity.DEFAULT`. + // Optional. The severity of the log entry. The default value is + // `LogSeverity.DEFAULT`. Severity _type.LogSeverity `protobuf:"varint,10,opt,name=severity,proto3,enum=google.logging.type.LogSeverity" json:"severity,omitempty"` - // Optional. A unique identifier for the log entry. If you provide a value, then - // Logging considers other log entries in the same project, with the same + // Optional. A unique identifier for the log entry. If you provide a value, + // then Logging considers other log entries in the same project, with the same // `timestamp`, and with the same `insert_id` to be duplicates which are // removed in a single query result. However, there are no guarantees of // de-duplication in the export of logs. @@ -113,11 +114,11 @@ type LogEntry struct { // In queries, the `insert_id` is also used to order log entries that have // the same `log_name` and `timestamp` values. InsertId string `protobuf:"bytes,4,opt,name=insert_id,json=insertId,proto3" json:"insert_id,omitempty"` - // Optional. Information about the HTTP request associated with this log entry, if - // applicable. + // Optional. Information about the HTTP request associated with this log + // entry, if applicable. HttpRequest *_type.HttpRequest `protobuf:"bytes,7,opt,name=http_request,json=httpRequest,proto3" json:"http_request,omitempty"` - // Optional. A map of key, value pairs that provides additional information about the - // log entry. The labels can be user-defined or system-defined. + // Optional. A map of key, value pairs that provides additional information + // about the log entry. The labels can be user-defined or system-defined. // // User-defined labels are arbitrary key, value pairs that you can use to // classify logs. @@ -134,16 +135,46 @@ type LogEntry struct { // Optional. Information about an operation associated with the log entry, if // applicable. Operation *LogEntryOperation `protobuf:"bytes,15,opt,name=operation,proto3" json:"operation,omitempty"` - // Optional. Resource name of the trace associated with the log entry, if any. If it - // contains a relative resource name, the name is assumed to be relative to - // `//tracing.googleapis.com`. Example: - // `projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824` - Trace string `protobuf:"bytes,22,opt,name=trace,proto3" json:"trace,omitempty"` - // Optional. The span ID within the trace associated with the log entry. + // Optional. The REST resource name of the trace being written to + // [Cloud Trace](https://cloud.google.com/trace) in + // association with this log entry. For example, if your trace data is stored + // in the Cloud project "my-trace-project" and if the service that is creating + // the log entry receives a trace header that includes the trace ID "12345", + // then the service should use "projects/my-tracing-project/traces/12345". // - // For Trace spans, this is the same format that the Trace API v2 uses: a - // 16-character hexadecimal encoding of an 8-byte array, such as - // `000000000000004a`. + // The `trace` field provides the link between logs and traces. By using + // this field, you can navigate from a log entry to a trace. + Trace string `protobuf:"bytes,22,opt,name=trace,proto3" json:"trace,omitempty"` + // Optional. The ID of the [Cloud Trace](https://cloud.google.com/trace) span + // associated with the current operation in which the log is being written. + // For example, if a span has the REST resource name of + // "projects/some-project/traces/some-trace/spans/some-span-id", then the + // `span_id` field is "some-span-id". + // + // A + // [Span](https://cloud.google.com/trace/docs/reference/v2/rest/v2/projects.traces/batchWrite#Span) + // represents a single operation within a trace. Whereas a trace may involve + // multiple different microservices running on multiple different machines, + // a span generally corresponds to a single logical operation being performed + // in a single instance of a microservice on one specific machine. Spans + // are the nodes within the tree that is a trace. + // + // Applications that are [instrumented for + // tracing](https://cloud.google.com/trace/docs/setup) will generally assign a + // new, unique span ID on each incoming request. It is also common to create + // and record additional spans corresponding to internal processing elements + // as well as issuing requests to dependencies. + // + // The span ID is expected to be a 16-character, hexadecimal encoding of an + // 8-byte array and should not be zero. It should be unique within the trace + // and should, ideally, be generated in a manner that is uniformly random. + // + // Example values: + // + // - `000000000000004a` + // - `7a2190356c3fc94b` + // - `0000f00300090021` + // - `d39223e101960076` SpanId string `protobuf:"bytes,27,opt,name=span_id,json=spanId,proto3" json:"span_id,omitempty"` // Optional. The sampling decision of the trace associated with the log entry. // @@ -153,10 +184,11 @@ type LogEntry struct { // unknown at the time. A non-sampled `trace` value is still useful as a // request correlation identifier. The default is False. TraceSampled bool `protobuf:"varint,30,opt,name=trace_sampled,json=traceSampled,proto3" json:"trace_sampled,omitempty"` - // Optional. Source code location information associated with the log entry, if any. + // Optional. Source code location information associated with the log entry, + // if any. SourceLocation *LogEntrySourceLocation `protobuf:"bytes,23,opt,name=source_location,json=sourceLocation,proto3" json:"source_location,omitempty"` - // Optional. Information indicating this LogEntry is part of a sequence of multiple log - // entries split from a single LogEntry. + // Optional. Information indicating this LogEntry is part of a sequence of + // multiple log entries split from a single LogEntry. Split *LogSplit `protobuf:"bytes,35,opt,name=split,proto3" json:"split,omitempty"` } @@ -252,7 +284,7 @@ func (x *LogEntry) GetSeverity() _type.LogSeverity { if x != nil { return x.Severity } - return _type.LogSeverity_DEFAULT + return _type.LogSeverity(0) } func (x *LogEntry) GetInsertId() string { @@ -329,8 +361,8 @@ type LogEntry_ProtoPayload struct { // The following protocol buffer types are supported; user-defined types // are not supported: // - // "type.googleapis.com/google.cloud.audit.AuditLog" - // "type.googleapis.com/google.appengine.logging.v1.RequestLog" + // "type.googleapis.com/google.cloud.audit.AuditLog" + // "type.googleapis.com/google.appengine.logging.v1.RequestLog" ProtoPayload *anypb.Any `protobuf:"bytes,2,opt,name=proto_payload,json=protoPayload,proto3,oneof"` } @@ -699,19 +731,19 @@ var file_google_logging_v2_log_entry_proto_rawDesc = []byte{ 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x42, 0xb6, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, + 0x53, 0x70, 0x6c, 0x69, 0x74, 0x73, 0x42, 0xb3, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x42, 0x0d, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, - 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x2f, 0x76, 0x32, 0x3b, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0xf8, 0x01, 0x01, 0xaa, 0x02, - 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5c, - 0x56, 0x32, 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x3a, 0x3a, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x32, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x5a, 0x35, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2f, 0x61, + 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x70, 0x62, 0x3b, 0x6c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x17, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x32, 0xea, + 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, + 0x3a, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging.pb.go b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging.pb.go index cbc6ce968b..5104c57b87 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging.pb.go +++ b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging.pb.go @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc-gen-go v1.31.0 +// protoc v4.23.2 // source: google/logging/v2/logging.proto package loggingpb @@ -178,8 +178,8 @@ type WriteLogEntriesRequest struct { // // `[LOG_ID]` must be URL-encoded. For example: // - // "projects/my-project-id/logs/syslog" - // "organizations/123/logs/cloudaudit.googleapis.com%2Factivity" + // "projects/my-project-id/logs/syslog" + // "organizations/123/logs/cloudaudit.googleapis.com%2Factivity" // // The permission `logging.logEntries.create` is needed on each project, // organization, billing account, or folder that is receiving new log @@ -189,9 +189,9 @@ type WriteLogEntriesRequest struct { // Optional. A default monitored resource object that is assigned to all log // entries in `entries` that do not specify a value for `resource`. Example: // - // { "type": "gce_instance", - // "labels": { - // "zone": "us-central1-a", "instance_id": "00000000000000000000" }} + // { "type": "gce_instance", + // "labels": { + // "zone": "us-central1-a", "instance_id": "00000000000000000000" }} // // See [LogEntry][google.logging.v2.LogEntry]. Resource *monitoredres.MonitoredResource `protobuf:"bytes,2,opt,name=resource,proto3" json:"resource,omitempty"` @@ -225,11 +225,13 @@ type WriteLogEntriesRequest struct { // `entries.write`, you should try to include several log entries in this // list, rather than calling this method for each individual log entry. Entries []*LogEntry `protobuf:"bytes,4,rep,name=entries,proto3" json:"entries,omitempty"` - // Optional. Whether valid entries should be written even if some other - // entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any - // entry is not written, then the response status is the error associated - // with one of the failed entries and the response includes error details - // keyed by the entries' zero-based index in the `entries.write` method. + // Optional. Whether a batch's valid entries should be written even if some + // other entry failed due to a permanent error such as INVALID_ARGUMENT or + // PERMISSION_DENIED. If any entry failed, then the response status is the + // response status of one of the failed entries. The response will include + // error details in `WriteLogEntriesPartialErrors.log_entry_errors` keyed by + // the entries' zero-based index in the `entries`. Failed requests for which + // no entries are written will not include per-entry errors. PartialSuccess bool `protobuf:"varint,5,opt,name=partial_success,json=partialSuccess,proto3" json:"partial_success,omitempty"` // Optional. If true, the request should expect normal response, but the // entries won't be persisted nor exported. Useful for checking whether the @@ -420,20 +422,19 @@ type ListLogEntriesRequest struct { // // May alternatively be one or more views: // - // - `projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` // // Projects listed in the `project_ids` field are added to this list. + // A maximum of 100 resources may be specified in a single request. ResourceNames []string `protobuf:"bytes,8,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"` - // Optional. A filter that chooses which log entries to return. See [Advanced - // Logs Queries](https://cloud.google.com/logging/docs/view/advanced-queries). - // Only log entries that match the filter are returned. An empty filter - // matches all log entries in the resources listed in `resource_names`. + // Optional. Only log entries that match the filter are returned. An empty + // filter matches all log entries in the resources listed in `resource_names`. // Referencing a parent resource that is not listed in `resource_names` will - // cause the filter to return no results. The maximum length of the filter is - // 20000 characters. + // cause the filter to return no results. The maximum length of a filter is + // 20,000 characters. Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Optional. How the results should be sorted. Presently, the only permitted // values are `"timestamp asc"` (default) and `"timestamp desc"`. The first @@ -442,10 +443,10 @@ type ListLogEntriesRequest struct { // in order of decreasing timestamps (newest first). Entries with equal // timestamps are returned in order of their `insert_id` values. OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Optional. The maximum number of results to return from this request. Default is 50. - // If the value is negative or exceeds 1000, the request is rejected. The - // presence of `next_page_token` in the response indicates that more results - // might be available. + // Optional. The maximum number of results to return from this request. + // Default is 50. If the value is negative or exceeds 1000, the request is + // rejected. The presence of `next_page_token` in the response indicates that + // more results might be available. PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. If present, then retrieve the next batch of results from the // preceding call to this method. `page_token` must be the value of @@ -719,13 +720,29 @@ type ListLogsRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The resource name that owns the logs: + // Required. The resource name to list logs for: // // * `projects/[PROJECT_ID]` // * `organizations/[ORGANIZATION_ID]` // * `billingAccounts/[BILLING_ACCOUNT_ID]` // * `folders/[FOLDER_ID]` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. List of resource names to list logs for: + // + // * `projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // + // To support legacy queries, it could also be: + // + // * `projects/[PROJECT_ID]` + // * `organizations/[ORGANIZATION_ID]` + // * `billingAccounts/[BILLING_ACCOUNT_ID]` + // * `folders/[FOLDER_ID]` + // + // The resource name in the `parent` field is added to this list. + ResourceNames []string `protobuf:"bytes,8,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"` // Optional. The maximum number of results to return from this request. // Non-positive values are ignored. The presence of `nextPageToken` in the // response indicates that more results might be available. @@ -735,20 +752,6 @@ type ListLogsRequest struct { // `nextPageToken` from the previous response. The values of other method // parameters should be identical to those in the previous call. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Optional. The resource name that owns the logs: - // - // - `projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - // To support legacy queries, it could also be: - // - // * `projects/[PROJECT_ID]` - // * `organizations/[ORGANIZATION_ID]` - // * `billingAccounts/[BILLING_ACCOUNT_ID]` - // * `folders/[FOLDER_ID]` - ResourceNames []string `protobuf:"bytes,8,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"` } func (x *ListLogsRequest) Reset() { @@ -790,6 +793,13 @@ func (x *ListLogsRequest) GetParent() string { return "" } +func (x *ListLogsRequest) GetResourceNames() []string { + if x != nil { + return x.ResourceNames + } + return nil +} + func (x *ListLogsRequest) GetPageSize() int32 { if x != nil { return x.PageSize @@ -804,13 +814,6 @@ func (x *ListLogsRequest) GetPageToken() string { return "" } -func (x *ListLogsRequest) GetResourceNames() []string { - if x != nil { - return x.ResourceNames - } - return nil -} - // Result returned from ListLogs. type ListLogsResponse struct { state protoimpl.MessageState @@ -888,18 +891,16 @@ type TailLogEntriesRequest struct { // // May alternatively be one or more views: // - // - `projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` - // - `folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` + // * `folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]` ResourceNames []string `protobuf:"bytes,1,rep,name=resource_names,json=resourceNames,proto3" json:"resource_names,omitempty"` - // Optional. A filter that chooses which log entries to return. See [Advanced - // Logs Filters](https://cloud.google.com/logging/docs/view/advanced_filters). - // Only log entries that match the filter are returned. An empty filter - // matches all log entries in the resources listed in `resource_names`. - // Referencing a parent resource that is not in `resource_names` will cause - // the filter to return no results. The maximum length of the filter is 20000 - // characters. + // Optional. Only log entries that match the filter are returned. An empty + // filter matches all log entries in the resources listed in `resource_names`. + // Referencing a parent resource that is not listed in `resource_names` will + // cause the filter to return no results. The maximum length of a filter is + // 20,000 characters. Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Optional. The amount of time to buffer log entries at the server before // being returned to prevent out of order results due to late arriving log @@ -1199,16 +1200,16 @@ var file_google_logging_v2_logging_proto_rawDesc = []byte{ 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1c, 0x12, 0x1a, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x49, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 0x22, 0xe0, 0x41, - 0x01, 0xfa, 0x41, 0x1c, 0x12, 0x1a, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, - 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, + 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x49, + 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 0x22, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x1c, 0x12, 0x1a, + 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x57, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, @@ -1250,47 +1251,47 @@ var file_google_logging_v2_logging_proto_rawDesc = []byte{ 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x55, - 0x4d, 0x45, 0x44, 0x10, 0x02, 0x32, 0xe6, 0x0b, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, + 0x4d, 0x45, 0x44, 0x10, 0x02, 0x32, 0xe9, 0x0d, 0x0a, 0x10, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x32, 0x12, 0x93, 0x02, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc8, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb6, 0x01, 0x2a, - 0x20, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, - 0x7d, 0x5a, 0x1b, 0x2a, 0x19, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x2a, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x27, - 0x2a, 0x25, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x21, 0x2a, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, - 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x29, 0x2a, 0x27, 0x2f, 0x76, - 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x62, 0x69, 0x6c, 0x6c, - 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xc8, 0x01, 0xda, 0x41, 0x08, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb6, 0x01, 0x5a, 0x1b, 0x2a, 0x19, 0x2f, 0x76, + 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x2a, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x5a, 0x27, 0x2a, 0x25, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, + 0x5a, 0x21, 0x2a, 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, + 0x2f, 0x2a, 0x7d, 0x5a, 0x29, 0x2a, 0x27, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x2a, 0x20, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x3a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x20, 0x6c, 0x6f, 0x67, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0xa3, 0x01, 0x0a, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0xda, 0x41, 0x20, + 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x2c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x3a, 0x01, 0x2a, 0x22, 0x11, 0x2f, 0x76, 0x32, 0x2f, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0xa3, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, - 0x32, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x3a, 0x01, - 0x2a, 0xda, 0x41, 0x1e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x62, 0x79, 0x12, 0xc5, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0xda, 0x41, 0x1e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2c, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, + 0x22, 0x10, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x6c, 0x69, + 0x73, 0x74, 0x12, 0xc5, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, @@ -1302,56 +1303,72 @@ var file_google_logging_v2_logging_proto_rawDesc = []byte{ 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x32, 0x2f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x88, 0x02, 0x0a, 0x08, 0x4c, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x8b, 0x04, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xb2, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa2, 0x01, 0x12, 0x15, 0x2f, 0x76, 0x32, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, - 0x73, 0x5a, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, - 0x73, 0x5a, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x86, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, - 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x69, - 0x6c, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x45, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x3a, 0x74, 0x61, 0x69, 0x6c, 0x3a, 0x01, 0x2a, 0x28, 0x01, 0x30, 0x01, 0x1a, 0x8d, - 0x02, 0xca, 0x41, 0x16, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0xf0, 0x01, 0x68, 0x74, - 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, - 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, - 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, - 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, - 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x61, 0x64, - 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, + 0x22, 0xb5, 0x03, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0xa5, 0x03, 0x5a, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, + 0x6f, 0x67, 0x73, 0x5a, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x25, 0x12, 0x23, 0x2f, 0x76, 0x32, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x62, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x3c, + 0x12, 0x3a, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x76, + 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x41, 0x12, 0x3f, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, + 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x66, + 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x76, + 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x5a, 0x43, 0x12, 0x41, + 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x62, 0x69, 0x6c, 0x6c, + 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, + 0x73, 0x12, 0x15, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x2a, + 0x2f, 0x2a, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x86, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x69, + 0x6c, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x4c, 0x6f, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, 0x2a, 0x22, 0x10, 0x2f, 0x76, 0x32, + 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x74, 0x61, 0x69, 0x6c, 0x28, 0x01, 0x30, + 0x01, 0x1a, 0x8d, 0x02, 0xca, 0x41, 0x16, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0xf0, + 0x01, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, - 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xb5, - 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x3b, 0x6c, 0x6f, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, + 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x72, + 0x65, 0x61, 0x64, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, + 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x42, 0xb2, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x4c, 0x6f, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, + 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6c, + 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x70, 0x62, 0x3b, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, diff --git a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_config.pb.go b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_config.pb.go index 95ba5c66bb..e765759f1e 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_config.pb.go +++ b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_config.pb.go @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc-gen-go v1.31.0 +// protoc v4.23.2 // source: google/logging/v2/logging_config.proto package loggingpb @@ -25,8 +25,8 @@ import ( reflect "reflect" sync "sync" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" _ "google.golang.org/genproto/googleapis/api/annotations" - longrunning "google.golang.org/genproto/googleapis/longrunning" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -44,61 +44,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// LogBucket lifecycle states. -type LifecycleState int32 - -const ( - // Unspecified state. This is only used/useful for distinguishing unset - // values. - LifecycleState_LIFECYCLE_STATE_UNSPECIFIED LifecycleState = 0 - // The normal and active state. - LifecycleState_ACTIVE LifecycleState = 1 - // The resource has been marked for deletion by the user. For some resources - // (e.g. buckets), this can be reversed by an un-delete operation. - LifecycleState_DELETE_REQUESTED LifecycleState = 2 -) - -// Enum value maps for LifecycleState. -var ( - LifecycleState_name = map[int32]string{ - 0: "LIFECYCLE_STATE_UNSPECIFIED", - 1: "ACTIVE", - 2: "DELETE_REQUESTED", - } - LifecycleState_value = map[string]int32{ - "LIFECYCLE_STATE_UNSPECIFIED": 0, - "ACTIVE": 1, - "DELETE_REQUESTED": 2, - } -) - -func (x LifecycleState) Enum() *LifecycleState { - p := new(LifecycleState) - *p = x - return p -} - -func (x LifecycleState) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (LifecycleState) Descriptor() protoreflect.EnumDescriptor { - return file_google_logging_v2_logging_config_proto_enumTypes[0].Descriptor() -} - -func (LifecycleState) Type() protoreflect.EnumType { - return &file_google_logging_v2_logging_config_proto_enumTypes[0] -} - -func (x LifecycleState) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use LifecycleState.Descriptor instead. -func (LifecycleState) EnumDescriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{0} -} - // List of different operation states. // High level state of the operation. This is used to report the job's // current state to the user. Once a long running operation is created, @@ -156,11 +101,11 @@ func (x OperationState) String() string { } func (OperationState) Descriptor() protoreflect.EnumDescriptor { - return file_google_logging_v2_logging_config_proto_enumTypes[1].Descriptor() + return file_google_logging_v2_logging_config_proto_enumTypes[0].Descriptor() } func (OperationState) Type() protoreflect.EnumType { - return &file_google_logging_v2_logging_config_proto_enumTypes[1] + return &file_google_logging_v2_logging_config_proto_enumTypes[0] } func (x OperationState) Number() protoreflect.EnumNumber { @@ -169,9 +114,132 @@ func (x OperationState) Number() protoreflect.EnumNumber { // Deprecated: Use OperationState.Descriptor instead. func (OperationState) EnumDescriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{0} +} + +// LogBucket lifecycle states. +type LifecycleState int32 + +const ( + // Unspecified state. This is only used/useful for distinguishing unset + // values. + LifecycleState_LIFECYCLE_STATE_UNSPECIFIED LifecycleState = 0 + // The normal and active state. + LifecycleState_ACTIVE LifecycleState = 1 + // The resource has been marked for deletion by the user. For some resources + // (e.g. buckets), this can be reversed by an un-delete operation. + LifecycleState_DELETE_REQUESTED LifecycleState = 2 + // The resource has been marked for an update by the user. It will remain in + // this state until the update is complete. + LifecycleState_UPDATING LifecycleState = 3 + // The resource has been marked for creation by the user. It will remain in + // this state until the creation is complete. + LifecycleState_CREATING LifecycleState = 4 + // The resource is in an INTERNAL error state. + LifecycleState_FAILED LifecycleState = 5 +) + +// Enum value maps for LifecycleState. +var ( + LifecycleState_name = map[int32]string{ + 0: "LIFECYCLE_STATE_UNSPECIFIED", + 1: "ACTIVE", + 2: "DELETE_REQUESTED", + 3: "UPDATING", + 4: "CREATING", + 5: "FAILED", + } + LifecycleState_value = map[string]int32{ + "LIFECYCLE_STATE_UNSPECIFIED": 0, + "ACTIVE": 1, + "DELETE_REQUESTED": 2, + "UPDATING": 3, + "CREATING": 4, + "FAILED": 5, + } +) + +func (x LifecycleState) Enum() *LifecycleState { + p := new(LifecycleState) + *p = x + return p +} + +func (x LifecycleState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LifecycleState) Descriptor() protoreflect.EnumDescriptor { + return file_google_logging_v2_logging_config_proto_enumTypes[1].Descriptor() +} + +func (LifecycleState) Type() protoreflect.EnumType { + return &file_google_logging_v2_logging_config_proto_enumTypes[1] +} + +func (x LifecycleState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LifecycleState.Descriptor instead. +func (LifecycleState) EnumDescriptor() ([]byte, []int) { return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{1} } +// IndexType is used for custom indexing. It describes the type of an indexed +// field. +type IndexType int32 + +const ( + // The index's type is unspecified. + IndexType_INDEX_TYPE_UNSPECIFIED IndexType = 0 + // The index is a string-type index. + IndexType_INDEX_TYPE_STRING IndexType = 1 + // The index is a integer-type index. + IndexType_INDEX_TYPE_INTEGER IndexType = 2 +) + +// Enum value maps for IndexType. +var ( + IndexType_name = map[int32]string{ + 0: "INDEX_TYPE_UNSPECIFIED", + 1: "INDEX_TYPE_STRING", + 2: "INDEX_TYPE_INTEGER", + } + IndexType_value = map[string]int32{ + "INDEX_TYPE_UNSPECIFIED": 0, + "INDEX_TYPE_STRING": 1, + "INDEX_TYPE_INTEGER": 2, + } +) + +func (x IndexType) Enum() *IndexType { + p := new(IndexType) + *p = x + return p +} + +func (x IndexType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (IndexType) Descriptor() protoreflect.EnumDescriptor { + return file_google_logging_v2_logging_config_proto_enumTypes[2].Descriptor() +} + +func (IndexType) Type() protoreflect.EnumType { + return &file_google_logging_v2_logging_config_proto_enumTypes[2] +} + +func (x IndexType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IndexType.Descriptor instead. +func (IndexType) EnumDescriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{2} +} + // Deprecated. This is unused. type LogSink_VersionFormat int32 @@ -209,11 +277,11 @@ func (x LogSink_VersionFormat) String() string { } func (LogSink_VersionFormat) Descriptor() protoreflect.EnumDescriptor { - return file_google_logging_v2_logging_config_proto_enumTypes[2].Descriptor() + return file_google_logging_v2_logging_config_proto_enumTypes[3].Descriptor() } func (LogSink_VersionFormat) Type() protoreflect.EnumType { - return &file_google_logging_v2_logging_config_proto_enumTypes[2] + return &file_google_logging_v2_logging_config_proto_enumTypes[3] } func (x LogSink_VersionFormat) Number() protoreflect.EnumNumber { @@ -222,7 +290,84 @@ func (x LogSink_VersionFormat) Number() protoreflect.EnumNumber { // Deprecated: Use LogSink_VersionFormat.Descriptor instead. func (LogSink_VersionFormat) EnumDescriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{2, 0} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{3, 0} +} + +// Configuration for an indexed field. +type IndexConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The LogEntry field path to index. + // + // Note that some paths are automatically indexed, and other paths are not + // eligible for indexing. See [indexing documentation]( + // https://cloud.google.com/logging/docs/view/advanced-queries#indexed-fields) + // for details. + // + // For example: `jsonPayload.request.status` + FieldPath string `protobuf:"bytes,1,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + // Required. The type of data in this index. + Type IndexType `protobuf:"varint,2,opt,name=type,proto3,enum=google.logging.v2.IndexType" json:"type,omitempty"` + // Output only. The timestamp when the index was last modified. + // + // This is used to return the timestamp, and will be ignored if supplied + // during update. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` +} + +func (x *IndexConfig) Reset() { + *x = IndexConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IndexConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndexConfig) ProtoMessage() {} + +func (x *IndexConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IndexConfig.ProtoReflect.Descriptor instead. +func (*IndexConfig) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{0} +} + +func (x *IndexConfig) GetFieldPath() string { + if x != nil { + return x.FieldPath + } + return "" +} + +func (x *IndexConfig) GetType() IndexType { + if x != nil { + return x.Type + } + return IndexType_INDEX_TYPE_UNSPECIFIED +} + +func (x *IndexConfig) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil } // Describes a repository in which log entries are stored. @@ -235,7 +380,7 @@ type LogBucket struct { // // For example: // - // `projects/my-project/locations/global/buckets/my-bucket` + // `projects/my-project/locations/global/buckets/my-bucket` // // For a list of supported locations, see [Supported // Regions](https://cloud.google.com/logging/docs/region-support) @@ -247,8 +392,8 @@ type LogBucket struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Describes this bucket. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Output only. The creation timestamp of the bucket. This is not set for any of the - // default buckets. + // Output only. The creation timestamp of the bucket. This is not set for any + // of the default buckets. CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The last update timestamp of the bucket. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` @@ -264,6 +409,10 @@ type LogBucket struct { Locked bool `protobuf:"varint,9,opt,name=locked,proto3" json:"locked,omitempty"` // Output only. The bucket lifecycle state. LifecycleState LifecycleState `protobuf:"varint,12,opt,name=lifecycle_state,json=lifecycleState,proto3,enum=google.logging.v2.LifecycleState" json:"lifecycle_state,omitempty"` + // Whether log analytics is enabled for this bucket. + // + // Once enabled, log analytics features cannot be disabled. + AnalyticsEnabled bool `protobuf:"varint,14,opt,name=analytics_enabled,json=analyticsEnabled,proto3" json:"analytics_enabled,omitempty"` // Log entry field paths that are denied access in this bucket. // // The following fields and their children are eligible: `textPayload`, @@ -272,6 +421,8 @@ type LogBucket struct { // Restricting a repeated field will restrict all values. Adding a parent will // block all child fields. (e.g. `foo.bar` will block `foo.bar.baz`) RestrictedFields []string `protobuf:"bytes,15,rep,name=restricted_fields,json=restrictedFields,proto3" json:"restricted_fields,omitempty"` + // A list of indexed fields and related configuration data. + IndexConfigs []*IndexConfig `protobuf:"bytes,17,rep,name=index_configs,json=indexConfigs,proto3" json:"index_configs,omitempty"` // The CMEK settings of the log bucket. If present, new log entries written to // this log bucket are encrypted using the CMEK key provided in this // configuration. If a log bucket has CMEK settings, the CMEK settings cannot @@ -283,7 +434,7 @@ type LogBucket struct { func (x *LogBucket) Reset() { *x = LogBucket{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[0] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -296,7 +447,7 @@ func (x *LogBucket) String() string { func (*LogBucket) ProtoMessage() {} func (x *LogBucket) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[0] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -309,7 +460,7 @@ func (x *LogBucket) ProtoReflect() protoreflect.Message { // Deprecated: Use LogBucket.ProtoReflect.Descriptor instead. func (*LogBucket) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{0} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{1} } func (x *LogBucket) GetName() string { @@ -361,6 +512,13 @@ func (x *LogBucket) GetLifecycleState() LifecycleState { return LifecycleState_LIFECYCLE_STATE_UNSPECIFIED } +func (x *LogBucket) GetAnalyticsEnabled() bool { + if x != nil { + return x.AnalyticsEnabled + } + return false +} + func (x *LogBucket) GetRestrictedFields() []string { if x != nil { return x.RestrictedFields @@ -368,6 +526,13 @@ func (x *LogBucket) GetRestrictedFields() []string { return nil } +func (x *LogBucket) GetIndexConfigs() []*IndexConfig { + if x != nil { + return x.IndexConfigs + } + return nil +} + func (x *LogBucket) GetCmekSettings() *CmekSettings { if x != nil { return x.CmekSettings @@ -385,7 +550,7 @@ type LogView struct { // // For example: // - // `projects/my-project/locations/global/buckets/my-bucket/views/my-view` + // `projects/my-project/locations/global/buckets/my-bucket/views/my-view` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Describes this view. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` @@ -405,15 +570,15 @@ type LogView struct { // // For example: // - // SOURCE("projects/myproject") AND resource.type = "gce_instance" - // AND LOG_ID("stdout") + // SOURCE("projects/myproject") AND resource.type = "gce_instance" + // AND LOG_ID("stdout") Filter string `protobuf:"bytes,7,opt,name=filter,proto3" json:"filter,omitempty"` } func (x *LogView) Reset() { *x = LogView{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[1] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -426,7 +591,7 @@ func (x *LogView) String() string { func (*LogView) ProtoMessage() {} func (x *LogView) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[1] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -439,7 +604,7 @@ func (x *LogView) ProtoReflect() protoreflect.Message { // Deprecated: Use LogView.ProtoReflect.Descriptor instead. func (*LogView) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{1} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{2} } func (x *LogView) GetName() string { @@ -496,9 +661,9 @@ type LogSink struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The export destination: // - // "storage.googleapis.com/[GCS_BUCKET]" - // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]" - // "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]" + // "storage.googleapis.com/[GCS_BUCKET]" + // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]" + // "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]" // // The sink's `writer_identity`, set when the sink is created, must have // permission to write to the destination or else the log entries are not @@ -513,27 +678,29 @@ type LogSink struct { // // For example: // - // `logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR` + // `logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR` Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` // Optional. A description of this sink. // // The maximum length of the description is 8000 characters. Description string `protobuf:"bytes,18,opt,name=description,proto3" json:"description,omitempty"` - // Optional. If set to true, then this sink is disabled and it does not export any log - // entries. + // Optional. If set to true, then this sink is disabled and it does not export + // any log entries. Disabled bool `protobuf:"varint,19,opt,name=disabled,proto3" json:"disabled,omitempty"` - // Optional. Log entries that match any of these exclusion filters will not be exported. + // Optional. Log entries that match any of these exclusion filters will not be + // exported. // // If a log entry is matched by both `filter` and one of `exclusion_filters` // it will not be exported. Exclusions []*LogExclusion `protobuf:"bytes,16,rep,name=exclusions,proto3" json:"exclusions,omitempty"` // Deprecated. This field is unused. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in google/logging/v2/logging_config.proto. OutputVersionFormat LogSink_VersionFormat `protobuf:"varint,6,opt,name=output_version_format,json=outputVersionFormat,proto3,enum=google.logging.v2.LogSink_VersionFormat" json:"output_version_format,omitempty"` - // Output only. An IAM identity—a service account or group—under which Cloud - // Logging writes the exported log entries to the sink's destination. This - // field is set by + // Output only. An IAM identity—a service account or group—under + // which Cloud Logging writes the exported log entries to the sink's + // destination. This field is either set by specifying + // `custom_writer_identity` or set automatically by // [sinks.create][google.logging.v2.ConfigServiceV2.CreateSink] and // [sinks.update][google.logging.v2.ConfigServiceV2.UpdateSink] based on the // value of `unique_writer_identity` in those methods. @@ -546,16 +713,16 @@ type LogSink struct { // appropriate IAM roles to assign to the identity. // // Sinks that have a destination that is a log bucket in the same project as - // the sink do not have a writer_identity and no additional permissions are + // the sink cannot have a writer_identity and no additional permissions are // required. WriterIdentity string `protobuf:"bytes,8,opt,name=writer_identity,json=writerIdentity,proto3" json:"writer_identity,omitempty"` - // Optional. This field applies only to sinks owned by organizations and folders. If the - // field is false, the default, only the logs owned by the sink's parent - // resource are available for export. If the field is true, then log entries - // from all the projects, folders, and billing accounts contained in the - // sink's parent resource are also available for export. Whether a particular - // log entry from the children is exported depends on the sink's filter - // expression. + // Optional. This field applies only to sinks owned by organizations and + // folders. If the field is false, the default, only the logs owned by the + // sink's parent resource are available for export. If the field is true, then + // log entries from all the projects, folders, and billing accounts contained + // in the sink's parent resource are also available for export. Whether a + // particular log entry from the children is exported depends on the sink's + // filter expression. // // For example, if this field is true, then the filter // `resource.type=gce_instance` would export all Compute Engine VM instance @@ -564,13 +731,12 @@ type LogSink struct { // To only export entries from certain child projects, filter on the project // part of the log name: // - // logName:("projects/test-project1/" OR "projects/test-project2/") AND - // resource.type=gce_instance + // logName:("projects/test-project1/" OR "projects/test-project2/") AND + // resource.type=gce_instance IncludeChildren bool `protobuf:"varint,9,opt,name=include_children,json=includeChildren,proto3" json:"include_children,omitempty"` // Destination dependent options. // // Types that are assignable to Options: - // // *LogSink_BigqueryOptions Options isLogSink_Options `protobuf_oneof:"options"` // Output only. The creation timestamp of the sink. @@ -586,7 +752,7 @@ type LogSink struct { func (x *LogSink) Reset() { *x = LogSink{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[2] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -599,7 +765,7 @@ func (x *LogSink) String() string { func (*LogSink) ProtoMessage() {} func (x *LogSink) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[2] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -612,7 +778,7 @@ func (x *LogSink) ProtoReflect() protoreflect.Message { // Deprecated: Use LogSink.ProtoReflect.Descriptor instead. func (*LogSink) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{2} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{3} } func (x *LogSink) GetName() string { @@ -657,7 +823,7 @@ func (x *LogSink) GetExclusions() []*LogExclusion { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in google/logging/v2/logging_config.proto. func (x *LogSink) GetOutputVersionFormat() LogSink_VersionFormat { if x != nil { return x.OutputVersionFormat @@ -718,6 +884,162 @@ type LogSink_BigqueryOptions struct { func (*LogSink_BigqueryOptions) isLogSink_Options() {} +// Describes a BigQuery dataset that was created by a link. +type BigQueryDataset struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The full resource name of the BigQuery dataset. The DATASET_ID + // will match the ID of the link, so the link must match the naming + // restrictions of BigQuery datasets (alphanumeric characters and underscores + // only). + // + // The dataset will have a resource path of + // "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET_ID]" + DatasetId string `protobuf:"bytes,1,opt,name=dataset_id,json=datasetId,proto3" json:"dataset_id,omitempty"` +} + +func (x *BigQueryDataset) Reset() { + *x = BigQueryDataset{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BigQueryDataset) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BigQueryDataset) ProtoMessage() {} + +func (x *BigQueryDataset) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BigQueryDataset.ProtoReflect.Descriptor instead. +func (*BigQueryDataset) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{4} +} + +func (x *BigQueryDataset) GetDatasetId() string { + if x != nil { + return x.DatasetId + } + return "" +} + +// Describes a link connected to an analytics enabled bucket. +type Link struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The resource name of the link. The name can have up to 100 characters. + // A valid link id (at the end of the link name) must only have alphanumeric + // characters and underscores within it. + // + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // + // For example: + // + // `projects/my-project/locations/global/buckets/my-bucket/links/my_link + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Describes this link. + // + // The maximum length of the description is 8000 characters. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The creation timestamp of the link. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The resource lifecycle state. + LifecycleState LifecycleState `protobuf:"varint,4,opt,name=lifecycle_state,json=lifecycleState,proto3,enum=google.logging.v2.LifecycleState" json:"lifecycle_state,omitempty"` + // The information of a BigQuery Dataset. When a link is created, a BigQuery + // dataset is created along with it, in the same project as the LogBucket it's + // linked to. This dataset will also have BigQuery Views corresponding to the + // LogViews in the bucket. + BigqueryDataset *BigQueryDataset `protobuf:"bytes,5,opt,name=bigquery_dataset,json=bigqueryDataset,proto3" json:"bigquery_dataset,omitempty"` +} + +func (x *Link) Reset() { + *x = Link{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Link) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Link) ProtoMessage() {} + +func (x *Link) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Link.ProtoReflect.Descriptor instead. +func (*Link) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{5} +} + +func (x *Link) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Link) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Link) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *Link) GetLifecycleState() LifecycleState { + if x != nil { + return x.LifecycleState + } + return LifecycleState_LIFECYCLE_STATE_UNSPECIFIED +} + +func (x *Link) GetBigqueryDataset() *BigQueryDataset { + if x != nil { + return x.BigqueryDataset + } + return nil +} + // Options that change functionality of a sink exporting data to BigQuery. type BigQueryOptions struct { state protoimpl.MessageState @@ -733,8 +1055,8 @@ type BigQueryOptions struct { // has to be used instead. In both cases, tables are sharded based on UTC // timezone. UsePartitionedTables bool `protobuf:"varint,1,opt,name=use_partitioned_tables,json=usePartitionedTables,proto3" json:"use_partitioned_tables,omitempty"` - // Output only. True if new timestamp column based partitioning is in use, false if legacy - // ingestion-time partitioning is in use. + // Output only. True if new timestamp column based partitioning is in use, + // false if legacy ingestion-time partitioning is in use. // // All new sinks will have this field set true and will use timestamp column // based partitioning. If use_partitioned_tables is false, this value has no @@ -746,7 +1068,7 @@ type BigQueryOptions struct { func (x *BigQueryOptions) Reset() { *x = BigQueryOptions{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[3] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -759,7 +1081,7 @@ func (x *BigQueryOptions) String() string { func (*BigQueryOptions) ProtoMessage() {} func (x *BigQueryOptions) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[3] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -772,7 +1094,7 @@ func (x *BigQueryOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use BigQueryOptions.ProtoReflect.Descriptor instead. func (*BigQueryOptions) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{3} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{6} } func (x *BigQueryOptions) GetUsePartitionedTables() bool { @@ -797,30 +1119,30 @@ type ListBucketsRequest struct { // Required. The parent resource whose buckets are to be listed: // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]" - // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]" - // "folders/[FOLDER_ID]/locations/[LOCATION_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]" // // Note: The locations portion of the resource must be specified, but // supplying the character `-` in place of [LOCATION_ID] will return all // buckets. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Optional. If present, then retrieve the next batch of results from the preceding call - // to this method. `pageToken` must be the value of `nextPageToken` from the - // previous response. The values of other method parameters should be - // identical to those in the previous call. + // Optional. If present, then retrieve the next batch of results from the + // preceding call to this method. `pageToken` must be the value of + // `nextPageToken` from the previous response. The values of other method + // parameters should be identical to those in the previous call. PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Optional. The maximum number of results to return from this request. Non-positive - // values are ignored. The presence of `nextPageToken` in the response - // indicates that more results might be available. + // Optional. The maximum number of results to return from this request. + // Non-positive values are ignored. The presence of `nextPageToken` in the + // response indicates that more results might be available. PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` } func (x *ListBucketsRequest) Reset() { *x = ListBucketsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[4] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -833,7 +1155,7 @@ func (x *ListBucketsRequest) String() string { func (*ListBucketsRequest) ProtoMessage() {} func (x *ListBucketsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[4] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -846,7 +1168,7 @@ func (x *ListBucketsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBucketsRequest.ProtoReflect.Descriptor instead. func (*ListBucketsRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{4} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{7} } func (x *ListBucketsRequest) GetParent() string { @@ -887,7 +1209,7 @@ type ListBucketsResponse struct { func (x *ListBucketsResponse) Reset() { *x = ListBucketsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[5] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -900,7 +1222,7 @@ func (x *ListBucketsResponse) String() string { func (*ListBucketsResponse) ProtoMessage() {} func (x *ListBucketsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[5] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -913,7 +1235,7 @@ func (x *ListBucketsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBucketsResponse.ProtoReflect.Descriptor instead. func (*ListBucketsResponse) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{5} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{8} } func (x *ListBucketsResponse) GetBuckets() []*LogBucket { @@ -938,26 +1260,26 @@ type CreateBucketRequest struct { // Required. The resource in which to create the log bucket: // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]" // // For example: // - // `"projects/my-project/locations/global"` + // `"projects/my-project/locations/global"` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. A client-assigned identifier such as `"my-bucket"`. Identifiers are limited - // to 100 characters and can include only letters, digits, underscores, - // hyphens, and periods. + // Required. A client-assigned identifier such as `"my-bucket"`. Identifiers + // are limited to 100 characters and can include only letters, digits, + // underscores, hyphens, and periods. BucketId string `protobuf:"bytes,2,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"` - // Required. The new bucket. The region specified in the new bucket must be compliant - // with any Location Restriction Org Policy. The name field in the bucket is - // ignored. + // Required. The new bucket. The region specified in the new bucket must be + // compliant with any Location Restriction Org Policy. The name field in the + // bucket is ignored. Bucket *LogBucket `protobuf:"bytes,3,opt,name=bucket,proto3" json:"bucket,omitempty"` } func (x *CreateBucketRequest) Reset() { *x = CreateBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[6] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -970,7 +1292,7 @@ func (x *CreateBucketRequest) String() string { func (*CreateBucketRequest) ProtoMessage() {} func (x *CreateBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[6] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -983,7 +1305,7 @@ func (x *CreateBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateBucketRequest.ProtoReflect.Descriptor instead. func (*CreateBucketRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{6} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{9} } func (x *CreateBucketRequest) GetParent() string { @@ -1015,20 +1337,20 @@ type UpdateBucketRequest struct { // Required. The full resource name of the bucket to update. // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket"` + // `"projects/my-project/locations/global/buckets/my-bucket"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The updated bucket. Bucket *LogBucket `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"` - // Required. Field mask that specifies the fields in `bucket` that need an update. A - // bucket field will be overwritten if, and only if, it is in the update mask. - // `name` and output only fields cannot be updated. + // Required. Field mask that specifies the fields in `bucket` that need an + // update. A bucket field will be overwritten if, and only if, it is in the + // update mask. `name` and output only fields cannot be updated. // // For a detailed `FieldMask` definition, see: // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask @@ -1040,7 +1362,7 @@ type UpdateBucketRequest struct { func (x *UpdateBucketRequest) Reset() { *x = UpdateBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[7] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1053,7 +1375,7 @@ func (x *UpdateBucketRequest) String() string { func (*UpdateBucketRequest) ProtoMessage() {} func (x *UpdateBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[7] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1066,7 +1388,7 @@ func (x *UpdateBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateBucketRequest.ProtoReflect.Descriptor instead. func (*UpdateBucketRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{7} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{10} } func (x *UpdateBucketRequest) GetName() string { @@ -1098,21 +1420,21 @@ type GetBucketRequest struct { // Required. The resource name of the bucket: // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket"` + // `"projects/my-project/locations/global/buckets/my-bucket"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetBucketRequest) Reset() { *x = GetBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[8] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1125,7 +1447,7 @@ func (x *GetBucketRequest) String() string { func (*GetBucketRequest) ProtoMessage() {} func (x *GetBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[8] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1138,7 +1460,7 @@ func (x *GetBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBucketRequest.ProtoReflect.Descriptor instead. func (*GetBucketRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{8} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{11} } func (x *GetBucketRequest) GetName() string { @@ -1156,21 +1478,21 @@ type DeleteBucketRequest struct { // Required. The full resource name of the bucket to delete. // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket"` + // `"projects/my-project/locations/global/buckets/my-bucket"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteBucketRequest) Reset() { *x = DeleteBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[9] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1183,7 +1505,7 @@ func (x *DeleteBucketRequest) String() string { func (*DeleteBucketRequest) ProtoMessage() {} func (x *DeleteBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[9] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1196,7 +1518,7 @@ func (x *DeleteBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteBucketRequest.ProtoReflect.Descriptor instead. func (*DeleteBucketRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{9} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{12} } func (x *DeleteBucketRequest) GetName() string { @@ -1214,21 +1536,21 @@ type UndeleteBucketRequest struct { // Required. The full resource name of the bucket to undelete. // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" - // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket"` + // `"projects/my-project/locations/global/buckets/my-bucket"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *UndeleteBucketRequest) Reset() { *x = UndeleteBucketRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[10] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1241,7 +1563,7 @@ func (x *UndeleteBucketRequest) String() string { func (*UndeleteBucketRequest) ProtoMessage() {} func (x *UndeleteBucketRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[10] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1254,7 +1576,7 @@ func (x *UndeleteBucketRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UndeleteBucketRequest.ProtoReflect.Descriptor instead. func (*UndeleteBucketRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{10} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{13} } func (x *UndeleteBucketRequest) GetName() string { @@ -1272,12 +1594,12 @@ type ListViewsRequest struct { // Required. The bucket whose views are to be listed: // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Optional. If present, then retrieve the next batch of results from the preceding call - // to this method. `pageToken` must be the value of `nextPageToken` from the - // previous response. The values of other method parameters should be - // identical to those in the previous call. + // Optional. If present, then retrieve the next batch of results from the + // preceding call to this method. `pageToken` must be the value of + // `nextPageToken` from the previous response. The values of other method + // parameters should be identical to those in the previous call. PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional. The maximum number of results to return from this request. // @@ -1289,7 +1611,7 @@ type ListViewsRequest struct { func (x *ListViewsRequest) Reset() { *x = ListViewsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[11] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1302,7 +1624,7 @@ func (x *ListViewsRequest) String() string { func (*ListViewsRequest) ProtoMessage() {} func (x *ListViewsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[11] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1315,7 +1637,7 @@ func (x *ListViewsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListViewsRequest.ProtoReflect.Descriptor instead. func (*ListViewsRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{11} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{14} } func (x *ListViewsRequest) GetParent() string { @@ -1356,7 +1678,7 @@ type ListViewsResponse struct { func (x *ListViewsResponse) Reset() { *x = ListViewsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[12] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1369,7 +1691,7 @@ func (x *ListViewsResponse) String() string { func (*ListViewsResponse) ProtoMessage() {} func (x *ListViewsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[12] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1382,7 +1704,7 @@ func (x *ListViewsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListViewsResponse.ProtoReflect.Descriptor instead. func (*ListViewsResponse) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{12} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{15} } func (x *ListViewsResponse) GetViews() []*LogView { @@ -1407,13 +1729,15 @@ type CreateViewRequest struct { // Required. The bucket in which to create the view // - // `"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"` + // `"projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"` // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket"` + // `"projects/my-project/locations/global/buckets/my-bucket"` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. The id to use for this view. + // Required. A client-assigned identifier such as `"my-view"`. Identifiers are + // limited to 100 characters and can include only letters, digits, + // underscores, hyphens, and periods. ViewId string `protobuf:"bytes,2,opt,name=view_id,json=viewId,proto3" json:"view_id,omitempty"` // Required. The new view. View *LogView `protobuf:"bytes,3,opt,name=view,proto3" json:"view,omitempty"` @@ -1422,7 +1746,7 @@ type CreateViewRequest struct { func (x *CreateViewRequest) Reset() { *x = CreateViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[13] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1435,7 +1759,7 @@ func (x *CreateViewRequest) String() string { func (*CreateViewRequest) ProtoMessage() {} func (x *CreateViewRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[13] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1448,7 +1772,7 @@ func (x *CreateViewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateViewRequest.ProtoReflect.Descriptor instead. func (*CreateViewRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{13} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{16} } func (x *CreateViewRequest) GetParent() string { @@ -1480,11 +1804,11 @@ type UpdateViewRequest struct { // Required. The full resource name of the view to update // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"` + // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The updated view. View *LogView `protobuf:"bytes,2,opt,name=view,proto3" json:"view,omitempty"` @@ -1502,7 +1826,7 @@ type UpdateViewRequest struct { func (x *UpdateViewRequest) Reset() { *x = UpdateViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[14] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1515,7 +1839,7 @@ func (x *UpdateViewRequest) String() string { func (*UpdateViewRequest) ProtoMessage() {} func (x *UpdateViewRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[14] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1528,7 +1852,7 @@ func (x *UpdateViewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateViewRequest.ProtoReflect.Descriptor instead. func (*UpdateViewRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{14} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{17} } func (x *UpdateViewRequest) GetName() string { @@ -1560,18 +1884,18 @@ type GetViewRequest struct { // Required. The resource name of the policy: // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"` + // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetViewRequest) Reset() { *x = GetViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[15] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1584,7 +1908,7 @@ func (x *GetViewRequest) String() string { func (*GetViewRequest) ProtoMessage() {} func (x *GetViewRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[15] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1597,7 +1921,7 @@ func (x *GetViewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetViewRequest.ProtoReflect.Descriptor instead. func (*GetViewRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{15} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{18} } func (x *GetViewRequest) GetName() string { @@ -1615,18 +1939,18 @@ type DeleteViewRequest struct { // Required. The full resource name of the view to delete: // - // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/views/[VIEW_ID]" // // For example: // - // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"` + // `"projects/my-project/locations/global/buckets/my-bucket/views/my-view"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteViewRequest) Reset() { *x = DeleteViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[16] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1639,7 +1963,7 @@ func (x *DeleteViewRequest) String() string { func (*DeleteViewRequest) ProtoMessage() {} func (x *DeleteViewRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[16] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1652,7 +1976,7 @@ func (x *DeleteViewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteViewRequest.ProtoReflect.Descriptor instead. func (*DeleteViewRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{16} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{19} } func (x *DeleteViewRequest) GetName() string { @@ -1670,10 +1994,10 @@ type ListSinksRequest struct { // Required. The parent resource whose sinks are to be listed: // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" + // "projects/[PROJECT_ID]" + // "organizations/[ORGANIZATION_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]" + // "folders/[FOLDER_ID]" Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. If present, then retrieve the next batch of results from the // preceding call to this method. `pageToken` must be the value of @@ -1689,7 +2013,7 @@ type ListSinksRequest struct { func (x *ListSinksRequest) Reset() { *x = ListSinksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[17] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1702,7 +2026,7 @@ func (x *ListSinksRequest) String() string { func (*ListSinksRequest) ProtoMessage() {} func (x *ListSinksRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[17] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1715,7 +2039,7 @@ func (x *ListSinksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSinksRequest.ProtoReflect.Descriptor instead. func (*ListSinksRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{17} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{20} } func (x *ListSinksRequest) GetParent() string { @@ -1756,7 +2080,7 @@ type ListSinksResponse struct { func (x *ListSinksResponse) Reset() { *x = ListSinksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[18] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1769,7 +2093,7 @@ func (x *ListSinksResponse) String() string { func (*ListSinksResponse) ProtoMessage() {} func (x *ListSinksResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[18] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1782,7 +2106,7 @@ func (x *ListSinksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListSinksResponse.ProtoReflect.Descriptor instead. func (*ListSinksResponse) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{18} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{21} } func (x *ListSinksResponse) GetSinks() []*LogSink { @@ -1807,21 +2131,21 @@ type GetSinkRequest struct { // Required. The resource name of the sink: // - // "projects/[PROJECT_ID]/sinks/[SINK_ID]" - // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" - // "folders/[FOLDER_ID]/sinks/[SINK_ID]" + // "projects/[PROJECT_ID]/sinks/[SINK_ID]" + // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" + // "folders/[FOLDER_ID]/sinks/[SINK_ID]" // // For example: // - // `"projects/my-project/sinks/my-sink"` + // `"projects/my-project/sinks/my-sink"` SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName,proto3" json:"sink_name,omitempty"` } func (x *GetSinkRequest) Reset() { *x = GetSinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[19] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1834,7 +2158,7 @@ func (x *GetSinkRequest) String() string { func (*GetSinkRequest) ProtoMessage() {} func (x *GetSinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[19] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1847,7 +2171,7 @@ func (x *GetSinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSinkRequest.ProtoReflect.Descriptor instead. func (*GetSinkRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{19} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{22} } func (x *GetSinkRequest) GetSinkName() string { @@ -1865,15 +2189,15 @@ type CreateSinkRequest struct { // Required. The resource in which to create the sink: // - // "projects/[PROJECT_ID]" - // "organizations/[ORGANIZATION_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]" - // "folders/[FOLDER_ID]" + // "projects/[PROJECT_ID]" + // "organizations/[ORGANIZATION_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]" + // "folders/[FOLDER_ID]" // // For examples: // - // `"projects/my-project"` - // `"organizations/123456789"` + // `"projects/my-project"` + // `"organizations/123456789"` Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. The new sink, whose `name` parameter is a sink identifier that // is not already in use. @@ -1888,14 +2212,15 @@ type CreateSinkRequest struct { // If this field is set to true, or if the sink is owned by a non-project // resource such as an organization, then the value of `writer_identity` will // be a unique service account used only for exports from the new sink. For - // more information, see `writer_identity` in [LogSink][google.logging.v2.LogSink]. + // more information, see `writer_identity` in + // [LogSink][google.logging.v2.LogSink]. UniqueWriterIdentity bool `protobuf:"varint,3,opt,name=unique_writer_identity,json=uniqueWriterIdentity,proto3" json:"unique_writer_identity,omitempty"` } func (x *CreateSinkRequest) Reset() { *x = CreateSinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[20] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1908,7 +2233,7 @@ func (x *CreateSinkRequest) String() string { func (*CreateSinkRequest) ProtoMessage() {} func (x *CreateSinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[20] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1921,7 +2246,7 @@ func (x *CreateSinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateSinkRequest.ProtoReflect.Descriptor instead. func (*CreateSinkRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{20} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{23} } func (x *CreateSinkRequest) GetParent() string { @@ -1951,31 +2276,31 @@ type UpdateSinkRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The full resource name of the sink to update, including the parent - // resource and the sink identifier: + // Required. The full resource name of the sink to update, including the + // parent resource and the sink identifier: // - // "projects/[PROJECT_ID]/sinks/[SINK_ID]" - // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" - // "folders/[FOLDER_ID]/sinks/[SINK_ID]" + // "projects/[PROJECT_ID]/sinks/[SINK_ID]" + // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" + // "folders/[FOLDER_ID]/sinks/[SINK_ID]" // // For example: // - // `"projects/my-project/sinks/my-sink"` + // `"projects/my-project/sinks/my-sink"` SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName,proto3" json:"sink_name,omitempty"` - // Required. The updated sink, whose name is the same identifier that appears as part - // of `sink_name`. + // Required. The updated sink, whose name is the same identifier that appears + // as part of `sink_name`. Sink *LogSink `protobuf:"bytes,2,opt,name=sink,proto3" json:"sink,omitempty"` // Optional. See [sinks.create][google.logging.v2.ConfigServiceV2.CreateSink] // for a description of this field. When updating a sink, the effect of this // field on the value of `writer_identity` in the updated sink depends on both // the old and new values of this field: // - // - If the old and new values of this field are both false or both true, + // + If the old and new values of this field are both false or both true, // then there is no change to the sink's `writer_identity`. - // - If the old value is false and the new value is true, then + // + If the old value is false and the new value is true, then // `writer_identity` is changed to a unique service account. - // - It is an error if the old value is true and the new value is + // + It is an error if the old value is true and the new value is // set to false or defaulted to false. UniqueWriterIdentity bool `protobuf:"varint,3,opt,name=unique_writer_identity,json=uniqueWriterIdentity,proto3" json:"unique_writer_identity,omitempty"` // Optional. Field mask that specifies the fields in `sink` that need @@ -1985,7 +2310,7 @@ type UpdateSinkRequest struct { // An empty `updateMask` is temporarily treated as using the following mask // for backwards compatibility purposes: // - // `destination,filter,includeChildren` + // `destination,filter,includeChildren` // // At some point in the future, behavior will be removed and specifying an // empty `updateMask` will be an error. @@ -2000,7 +2325,7 @@ type UpdateSinkRequest struct { func (x *UpdateSinkRequest) Reset() { *x = UpdateSinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[21] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2013,7 +2338,7 @@ func (x *UpdateSinkRequest) String() string { func (*UpdateSinkRequest) ProtoMessage() {} func (x *UpdateSinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[21] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2026,7 +2351,7 @@ func (x *UpdateSinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSinkRequest.ProtoReflect.Descriptor instead. func (*UpdateSinkRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{21} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{24} } func (x *UpdateSinkRequest) GetSinkName() string { @@ -2063,24 +2388,24 @@ type DeleteSinkRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The full resource name of the sink to delete, including the parent - // resource and the sink identifier: + // Required. The full resource name of the sink to delete, including the + // parent resource and the sink identifier: // - // "projects/[PROJECT_ID]/sinks/[SINK_ID]" - // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" - // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" - // "folders/[FOLDER_ID]/sinks/[SINK_ID]" + // "projects/[PROJECT_ID]/sinks/[SINK_ID]" + // "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]" + // "folders/[FOLDER_ID]/sinks/[SINK_ID]" // // For example: // - // `"projects/my-project/sinks/my-sink"` + // `"projects/my-project/sinks/my-sink"` SinkName string `protobuf:"bytes,1,opt,name=sink_name,json=sinkName,proto3" json:"sink_name,omitempty"` } func (x *DeleteSinkRequest) Reset() { *x = DeleteSinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[22] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2093,7 +2418,7 @@ func (x *DeleteSinkRequest) String() string { func (*DeleteSinkRequest) ProtoMessage() {} func (x *DeleteSinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_logging_v2_logging_config_proto_msgTypes[22] + mi := &file_google_logging_v2_logging_config_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2106,7 +2431,7 @@ func (x *DeleteSinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteSinkRequest.ProtoReflect.Descriptor instead. func (*DeleteSinkRequest) Descriptor() ([]byte, []int) { - return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{22} + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{25} } func (x *DeleteSinkRequest) GetSinkName() string { @@ -2116,6 +2441,322 @@ func (x *DeleteSinkRequest) GetSinkName() string { return "" } +// The parameters to CreateLink. +type CreateLinkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The full resource name of the bucket to create a link for. + // + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]" + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The new link. + Link *Link `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"` + // Required. The ID to use for the link. The link_id can have up to 100 + // characters. A valid link_id must only have alphanumeric characters and + // underscores within it. + LinkId string `protobuf:"bytes,3,opt,name=link_id,json=linkId,proto3" json:"link_id,omitempty"` +} + +func (x *CreateLinkRequest) Reset() { + *x = CreateLinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateLinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateLinkRequest) ProtoMessage() {} + +func (x *CreateLinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateLinkRequest.ProtoReflect.Descriptor instead. +func (*CreateLinkRequest) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{26} +} + +func (x *CreateLinkRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateLinkRequest) GetLink() *Link { + if x != nil { + return x.Link + } + return nil +} + +func (x *CreateLinkRequest) GetLinkId() string { + if x != nil { + return x.LinkId + } + return "" +} + +// The parameters to DeleteLink. +type DeleteLinkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The full resource name of the link to delete. + // + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteLinkRequest) Reset() { + *x = DeleteLinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteLinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteLinkRequest) ProtoMessage() {} + +func (x *DeleteLinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteLinkRequest.ProtoReflect.Descriptor instead. +func (*DeleteLinkRequest) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{27} +} + +func (x *DeleteLinkRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The parameters to ListLinks. +type ListLinksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource whose links are to be listed: + // + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/ + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. If present, then retrieve the next batch of results from the + // preceding call to this method. `pageToken` must be the value of + // `nextPageToken` from the previous response. + PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. The maximum number of results to return from this request. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` +} + +func (x *ListLinksRequest) Reset() { + *x = ListLinksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListLinksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListLinksRequest) ProtoMessage() {} + +func (x *ListLinksRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListLinksRequest.ProtoReflect.Descriptor instead. +func (*ListLinksRequest) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{28} +} + +func (x *ListLinksRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListLinksRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListLinksRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +// The response from ListLinks. +type ListLinksResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A list of links. + Links []*Link `protobuf:"bytes,1,rep,name=links,proto3" json:"links,omitempty"` + // If there might be more results than those appearing in this response, then + // `nextPageToken` is included. To get the next set of results, call the same + // method again using the value of `nextPageToken` as `pageToken`. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListLinksResponse) Reset() { + *x = ListLinksResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListLinksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListLinksResponse) ProtoMessage() {} + +func (x *ListLinksResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListLinksResponse.ProtoReflect.Descriptor instead. +func (*ListLinksResponse) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{29} +} + +func (x *ListLinksResponse) GetLinks() []*Link { + if x != nil { + return x.Links + } + return nil +} + +func (x *ListLinksResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The parameters to GetLink. +type GetLinkRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The resource name of the link: + // + // "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]" + // "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID] + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetLinkRequest) Reset() { + *x = GetLinkRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLinkRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLinkRequest) ProtoMessage() {} + +func (x *GetLinkRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_logging_v2_logging_config_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLinkRequest.ProtoReflect.Descriptor instead. +func (*GetLinkRequest) Descriptor() ([]byte, []int) { + return file_google_logging_v2_logging_config_proto_rawDescGZIP(), []int{30} +} + +func (x *GetLinkRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + // Specifies a set of log entries that are filtered out by a sink. If // your Google Cloud resource receives a large volume of log entries, you can // use exclusions to reduce your chargeable logs. Note that exclusions on @@ -2126,10 +2767,10 @@ type LogExclusion struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. A client-assigned identifier, such as `"load-balancer-exclusion"`. - // Identifiers are limited to 100 characters and can include only letters, - // digits, underscores, hyphens, and periods. First character has to be - // alphanumeric. + // Required. A client-assigned identifier, such as + // `"load-balancer-exclusion"`. Identifiers are limited to 100 characters and + // can include only letters, digits, underscores, hyphens, and periods. First + // character has to be alphanumeric. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. A description of this exclusion. Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` @@ -2142,7 +2783,7 @@ type LogExclusion struct { // For example, the following query matches 99% of low-severity log entries // from Google Cloud Storage buckets: // - // `resource.type=gcs_bucket severity google.protobuf.Timestamp - 42, // 1: google.logging.v2.LogBucket.update_time:type_name -> google.protobuf.Timestamp - 0, // 2: google.logging.v2.LogBucket.lifecycle_state:type_name -> google.logging.v2.LifecycleState - 35, // 3: google.logging.v2.LogBucket.cmek_settings:type_name -> google.logging.v2.CmekSettings - 42, // 4: google.logging.v2.LogView.create_time:type_name -> google.protobuf.Timestamp - 42, // 5: google.logging.v2.LogView.update_time:type_name -> google.protobuf.Timestamp - 26, // 6: google.logging.v2.LogSink.exclusions:type_name -> google.logging.v2.LogExclusion - 2, // 7: google.logging.v2.LogSink.output_version_format:type_name -> google.logging.v2.LogSink.VersionFormat - 6, // 8: google.logging.v2.LogSink.bigquery_options:type_name -> google.logging.v2.BigQueryOptions - 42, // 9: google.logging.v2.LogSink.create_time:type_name -> google.protobuf.Timestamp - 42, // 10: google.logging.v2.LogSink.update_time:type_name -> google.protobuf.Timestamp - 3, // 11: google.logging.v2.ListBucketsResponse.buckets:type_name -> google.logging.v2.LogBucket - 3, // 12: google.logging.v2.CreateBucketRequest.bucket:type_name -> google.logging.v2.LogBucket - 3, // 13: google.logging.v2.UpdateBucketRequest.bucket:type_name -> google.logging.v2.LogBucket - 43, // 14: google.logging.v2.UpdateBucketRequest.update_mask:type_name -> google.protobuf.FieldMask - 4, // 15: google.logging.v2.ListViewsResponse.views:type_name -> google.logging.v2.LogView - 4, // 16: google.logging.v2.CreateViewRequest.view:type_name -> google.logging.v2.LogView - 4, // 17: google.logging.v2.UpdateViewRequest.view:type_name -> google.logging.v2.LogView - 43, // 18: google.logging.v2.UpdateViewRequest.update_mask:type_name -> google.protobuf.FieldMask - 5, // 19: google.logging.v2.ListSinksResponse.sinks:type_name -> google.logging.v2.LogSink - 5, // 20: google.logging.v2.CreateSinkRequest.sink:type_name -> google.logging.v2.LogSink - 5, // 21: google.logging.v2.UpdateSinkRequest.sink:type_name -> google.logging.v2.LogSink - 43, // 22: google.logging.v2.UpdateSinkRequest.update_mask:type_name -> google.protobuf.FieldMask - 42, // 23: google.logging.v2.LogExclusion.create_time:type_name -> google.protobuf.Timestamp - 42, // 24: google.logging.v2.LogExclusion.update_time:type_name -> google.protobuf.Timestamp - 26, // 25: google.logging.v2.ListExclusionsResponse.exclusions:type_name -> google.logging.v2.LogExclusion - 26, // 26: google.logging.v2.CreateExclusionRequest.exclusion:type_name -> google.logging.v2.LogExclusion - 26, // 27: google.logging.v2.UpdateExclusionRequest.exclusion:type_name -> google.logging.v2.LogExclusion - 43, // 28: google.logging.v2.UpdateExclusionRequest.update_mask:type_name -> google.protobuf.FieldMask - 35, // 29: google.logging.v2.UpdateCmekSettingsRequest.cmek_settings:type_name -> google.logging.v2.CmekSettings - 43, // 30: google.logging.v2.UpdateCmekSettingsRequest.update_mask:type_name -> google.protobuf.FieldMask - 38, // 31: google.logging.v2.UpdateSettingsRequest.settings:type_name -> google.logging.v2.Settings - 43, // 32: google.logging.v2.UpdateSettingsRequest.update_mask:type_name -> google.protobuf.FieldMask - 42, // 33: google.logging.v2.CopyLogEntriesMetadata.start_time:type_name -> google.protobuf.Timestamp - 42, // 34: google.logging.v2.CopyLogEntriesMetadata.end_time:type_name -> google.protobuf.Timestamp - 1, // 35: google.logging.v2.CopyLogEntriesMetadata.state:type_name -> google.logging.v2.OperationState - 39, // 36: google.logging.v2.CopyLogEntriesMetadata.request:type_name -> google.logging.v2.CopyLogEntriesRequest - 7, // 37: google.logging.v2.ConfigServiceV2.ListBuckets:input_type -> google.logging.v2.ListBucketsRequest - 11, // 38: google.logging.v2.ConfigServiceV2.GetBucket:input_type -> google.logging.v2.GetBucketRequest - 9, // 39: google.logging.v2.ConfigServiceV2.CreateBucket:input_type -> google.logging.v2.CreateBucketRequest - 10, // 40: google.logging.v2.ConfigServiceV2.UpdateBucket:input_type -> google.logging.v2.UpdateBucketRequest - 12, // 41: google.logging.v2.ConfigServiceV2.DeleteBucket:input_type -> google.logging.v2.DeleteBucketRequest - 13, // 42: google.logging.v2.ConfigServiceV2.UndeleteBucket:input_type -> google.logging.v2.UndeleteBucketRequest - 14, // 43: google.logging.v2.ConfigServiceV2.ListViews:input_type -> google.logging.v2.ListViewsRequest - 18, // 44: google.logging.v2.ConfigServiceV2.GetView:input_type -> google.logging.v2.GetViewRequest - 16, // 45: google.logging.v2.ConfigServiceV2.CreateView:input_type -> google.logging.v2.CreateViewRequest - 17, // 46: google.logging.v2.ConfigServiceV2.UpdateView:input_type -> google.logging.v2.UpdateViewRequest - 19, // 47: google.logging.v2.ConfigServiceV2.DeleteView:input_type -> google.logging.v2.DeleteViewRequest - 20, // 48: google.logging.v2.ConfigServiceV2.ListSinks:input_type -> google.logging.v2.ListSinksRequest - 22, // 49: google.logging.v2.ConfigServiceV2.GetSink:input_type -> google.logging.v2.GetSinkRequest - 23, // 50: google.logging.v2.ConfigServiceV2.CreateSink:input_type -> google.logging.v2.CreateSinkRequest - 24, // 51: google.logging.v2.ConfigServiceV2.UpdateSink:input_type -> google.logging.v2.UpdateSinkRequest - 25, // 52: google.logging.v2.ConfigServiceV2.DeleteSink:input_type -> google.logging.v2.DeleteSinkRequest - 27, // 53: google.logging.v2.ConfigServiceV2.ListExclusions:input_type -> google.logging.v2.ListExclusionsRequest - 29, // 54: google.logging.v2.ConfigServiceV2.GetExclusion:input_type -> google.logging.v2.GetExclusionRequest - 30, // 55: google.logging.v2.ConfigServiceV2.CreateExclusion:input_type -> google.logging.v2.CreateExclusionRequest - 31, // 56: google.logging.v2.ConfigServiceV2.UpdateExclusion:input_type -> google.logging.v2.UpdateExclusionRequest - 32, // 57: google.logging.v2.ConfigServiceV2.DeleteExclusion:input_type -> google.logging.v2.DeleteExclusionRequest - 33, // 58: google.logging.v2.ConfigServiceV2.GetCmekSettings:input_type -> google.logging.v2.GetCmekSettingsRequest - 34, // 59: google.logging.v2.ConfigServiceV2.UpdateCmekSettings:input_type -> google.logging.v2.UpdateCmekSettingsRequest - 36, // 60: google.logging.v2.ConfigServiceV2.GetSettings:input_type -> google.logging.v2.GetSettingsRequest - 37, // 61: google.logging.v2.ConfigServiceV2.UpdateSettings:input_type -> google.logging.v2.UpdateSettingsRequest - 39, // 62: google.logging.v2.ConfigServiceV2.CopyLogEntries:input_type -> google.logging.v2.CopyLogEntriesRequest - 8, // 63: google.logging.v2.ConfigServiceV2.ListBuckets:output_type -> google.logging.v2.ListBucketsResponse - 3, // 64: google.logging.v2.ConfigServiceV2.GetBucket:output_type -> google.logging.v2.LogBucket - 3, // 65: google.logging.v2.ConfigServiceV2.CreateBucket:output_type -> google.logging.v2.LogBucket - 3, // 66: google.logging.v2.ConfigServiceV2.UpdateBucket:output_type -> google.logging.v2.LogBucket - 44, // 67: google.logging.v2.ConfigServiceV2.DeleteBucket:output_type -> google.protobuf.Empty - 44, // 68: google.logging.v2.ConfigServiceV2.UndeleteBucket:output_type -> google.protobuf.Empty - 15, // 69: google.logging.v2.ConfigServiceV2.ListViews:output_type -> google.logging.v2.ListViewsResponse - 4, // 70: google.logging.v2.ConfigServiceV2.GetView:output_type -> google.logging.v2.LogView - 4, // 71: google.logging.v2.ConfigServiceV2.CreateView:output_type -> google.logging.v2.LogView - 4, // 72: google.logging.v2.ConfigServiceV2.UpdateView:output_type -> google.logging.v2.LogView - 44, // 73: google.logging.v2.ConfigServiceV2.DeleteView:output_type -> google.protobuf.Empty - 21, // 74: google.logging.v2.ConfigServiceV2.ListSinks:output_type -> google.logging.v2.ListSinksResponse - 5, // 75: google.logging.v2.ConfigServiceV2.GetSink:output_type -> google.logging.v2.LogSink - 5, // 76: google.logging.v2.ConfigServiceV2.CreateSink:output_type -> google.logging.v2.LogSink - 5, // 77: google.logging.v2.ConfigServiceV2.UpdateSink:output_type -> google.logging.v2.LogSink - 44, // 78: google.logging.v2.ConfigServiceV2.DeleteSink:output_type -> google.protobuf.Empty - 28, // 79: google.logging.v2.ConfigServiceV2.ListExclusions:output_type -> google.logging.v2.ListExclusionsResponse - 26, // 80: google.logging.v2.ConfigServiceV2.GetExclusion:output_type -> google.logging.v2.LogExclusion - 26, // 81: google.logging.v2.ConfigServiceV2.CreateExclusion:output_type -> google.logging.v2.LogExclusion - 26, // 82: google.logging.v2.ConfigServiceV2.UpdateExclusion:output_type -> google.logging.v2.LogExclusion - 44, // 83: google.logging.v2.ConfigServiceV2.DeleteExclusion:output_type -> google.protobuf.Empty - 35, // 84: google.logging.v2.ConfigServiceV2.GetCmekSettings:output_type -> google.logging.v2.CmekSettings - 35, // 85: google.logging.v2.ConfigServiceV2.UpdateCmekSettings:output_type -> google.logging.v2.CmekSettings - 38, // 86: google.logging.v2.ConfigServiceV2.GetSettings:output_type -> google.logging.v2.Settings - 38, // 87: google.logging.v2.ConfigServiceV2.UpdateSettings:output_type -> google.logging.v2.Settings - 45, // 88: google.logging.v2.ConfigServiceV2.CopyLogEntries:output_type -> google.longrunning.Operation - 63, // [63:89] is the sub-list for method output_type - 37, // [37:63] is the sub-list for method input_type - 37, // [37:37] is the sub-list for extension type_name - 37, // [37:37] is the sub-list for extension extendee - 0, // [0:37] is the sub-list for field type_name + 2, // 0: google.logging.v2.IndexConfig.type:type_name -> google.logging.v2.IndexType + 54, // 1: google.logging.v2.IndexConfig.create_time:type_name -> google.protobuf.Timestamp + 54, // 2: google.logging.v2.LogBucket.create_time:type_name -> google.protobuf.Timestamp + 54, // 3: google.logging.v2.LogBucket.update_time:type_name -> google.protobuf.Timestamp + 1, // 4: google.logging.v2.LogBucket.lifecycle_state:type_name -> google.logging.v2.LifecycleState + 4, // 5: google.logging.v2.LogBucket.index_configs:type_name -> google.logging.v2.IndexConfig + 44, // 6: google.logging.v2.LogBucket.cmek_settings:type_name -> google.logging.v2.CmekSettings + 54, // 7: google.logging.v2.LogView.create_time:type_name -> google.protobuf.Timestamp + 54, // 8: google.logging.v2.LogView.update_time:type_name -> google.protobuf.Timestamp + 35, // 9: google.logging.v2.LogSink.exclusions:type_name -> google.logging.v2.LogExclusion + 3, // 10: google.logging.v2.LogSink.output_version_format:type_name -> google.logging.v2.LogSink.VersionFormat + 10, // 11: google.logging.v2.LogSink.bigquery_options:type_name -> google.logging.v2.BigQueryOptions + 54, // 12: google.logging.v2.LogSink.create_time:type_name -> google.protobuf.Timestamp + 54, // 13: google.logging.v2.LogSink.update_time:type_name -> google.protobuf.Timestamp + 54, // 14: google.logging.v2.Link.create_time:type_name -> google.protobuf.Timestamp + 1, // 15: google.logging.v2.Link.lifecycle_state:type_name -> google.logging.v2.LifecycleState + 8, // 16: google.logging.v2.Link.bigquery_dataset:type_name -> google.logging.v2.BigQueryDataset + 5, // 17: google.logging.v2.ListBucketsResponse.buckets:type_name -> google.logging.v2.LogBucket + 5, // 18: google.logging.v2.CreateBucketRequest.bucket:type_name -> google.logging.v2.LogBucket + 5, // 19: google.logging.v2.UpdateBucketRequest.bucket:type_name -> google.logging.v2.LogBucket + 55, // 20: google.logging.v2.UpdateBucketRequest.update_mask:type_name -> google.protobuf.FieldMask + 6, // 21: google.logging.v2.ListViewsResponse.views:type_name -> google.logging.v2.LogView + 6, // 22: google.logging.v2.CreateViewRequest.view:type_name -> google.logging.v2.LogView + 6, // 23: google.logging.v2.UpdateViewRequest.view:type_name -> google.logging.v2.LogView + 55, // 24: google.logging.v2.UpdateViewRequest.update_mask:type_name -> google.protobuf.FieldMask + 7, // 25: google.logging.v2.ListSinksResponse.sinks:type_name -> google.logging.v2.LogSink + 7, // 26: google.logging.v2.CreateSinkRequest.sink:type_name -> google.logging.v2.LogSink + 7, // 27: google.logging.v2.UpdateSinkRequest.sink:type_name -> google.logging.v2.LogSink + 55, // 28: google.logging.v2.UpdateSinkRequest.update_mask:type_name -> google.protobuf.FieldMask + 9, // 29: google.logging.v2.CreateLinkRequest.link:type_name -> google.logging.v2.Link + 9, // 30: google.logging.v2.ListLinksResponse.links:type_name -> google.logging.v2.Link + 54, // 31: google.logging.v2.LogExclusion.create_time:type_name -> google.protobuf.Timestamp + 54, // 32: google.logging.v2.LogExclusion.update_time:type_name -> google.protobuf.Timestamp + 35, // 33: google.logging.v2.ListExclusionsResponse.exclusions:type_name -> google.logging.v2.LogExclusion + 35, // 34: google.logging.v2.CreateExclusionRequest.exclusion:type_name -> google.logging.v2.LogExclusion + 35, // 35: google.logging.v2.UpdateExclusionRequest.exclusion:type_name -> google.logging.v2.LogExclusion + 55, // 36: google.logging.v2.UpdateExclusionRequest.update_mask:type_name -> google.protobuf.FieldMask + 44, // 37: google.logging.v2.UpdateCmekSettingsRequest.cmek_settings:type_name -> google.logging.v2.CmekSettings + 55, // 38: google.logging.v2.UpdateCmekSettingsRequest.update_mask:type_name -> google.protobuf.FieldMask + 47, // 39: google.logging.v2.UpdateSettingsRequest.settings:type_name -> google.logging.v2.Settings + 55, // 40: google.logging.v2.UpdateSettingsRequest.update_mask:type_name -> google.protobuf.FieldMask + 54, // 41: google.logging.v2.CopyLogEntriesMetadata.start_time:type_name -> google.protobuf.Timestamp + 54, // 42: google.logging.v2.CopyLogEntriesMetadata.end_time:type_name -> google.protobuf.Timestamp + 0, // 43: google.logging.v2.CopyLogEntriesMetadata.state:type_name -> google.logging.v2.OperationState + 48, // 44: google.logging.v2.CopyLogEntriesMetadata.request:type_name -> google.logging.v2.CopyLogEntriesRequest + 54, // 45: google.logging.v2.BucketMetadata.start_time:type_name -> google.protobuf.Timestamp + 54, // 46: google.logging.v2.BucketMetadata.end_time:type_name -> google.protobuf.Timestamp + 0, // 47: google.logging.v2.BucketMetadata.state:type_name -> google.logging.v2.OperationState + 13, // 48: google.logging.v2.BucketMetadata.create_bucket_request:type_name -> google.logging.v2.CreateBucketRequest + 14, // 49: google.logging.v2.BucketMetadata.update_bucket_request:type_name -> google.logging.v2.UpdateBucketRequest + 54, // 50: google.logging.v2.LinkMetadata.start_time:type_name -> google.protobuf.Timestamp + 54, // 51: google.logging.v2.LinkMetadata.end_time:type_name -> google.protobuf.Timestamp + 0, // 52: google.logging.v2.LinkMetadata.state:type_name -> google.logging.v2.OperationState + 30, // 53: google.logging.v2.LinkMetadata.create_link_request:type_name -> google.logging.v2.CreateLinkRequest + 31, // 54: google.logging.v2.LinkMetadata.delete_link_request:type_name -> google.logging.v2.DeleteLinkRequest + 11, // 55: google.logging.v2.ConfigServiceV2.ListBuckets:input_type -> google.logging.v2.ListBucketsRequest + 15, // 56: google.logging.v2.ConfigServiceV2.GetBucket:input_type -> google.logging.v2.GetBucketRequest + 13, // 57: google.logging.v2.ConfigServiceV2.CreateBucketAsync:input_type -> google.logging.v2.CreateBucketRequest + 14, // 58: google.logging.v2.ConfigServiceV2.UpdateBucketAsync:input_type -> google.logging.v2.UpdateBucketRequest + 13, // 59: google.logging.v2.ConfigServiceV2.CreateBucket:input_type -> google.logging.v2.CreateBucketRequest + 14, // 60: google.logging.v2.ConfigServiceV2.UpdateBucket:input_type -> google.logging.v2.UpdateBucketRequest + 16, // 61: google.logging.v2.ConfigServiceV2.DeleteBucket:input_type -> google.logging.v2.DeleteBucketRequest + 17, // 62: google.logging.v2.ConfigServiceV2.UndeleteBucket:input_type -> google.logging.v2.UndeleteBucketRequest + 18, // 63: google.logging.v2.ConfigServiceV2.ListViews:input_type -> google.logging.v2.ListViewsRequest + 22, // 64: google.logging.v2.ConfigServiceV2.GetView:input_type -> google.logging.v2.GetViewRequest + 20, // 65: google.logging.v2.ConfigServiceV2.CreateView:input_type -> google.logging.v2.CreateViewRequest + 21, // 66: google.logging.v2.ConfigServiceV2.UpdateView:input_type -> google.logging.v2.UpdateViewRequest + 23, // 67: google.logging.v2.ConfigServiceV2.DeleteView:input_type -> google.logging.v2.DeleteViewRequest + 24, // 68: google.logging.v2.ConfigServiceV2.ListSinks:input_type -> google.logging.v2.ListSinksRequest + 26, // 69: google.logging.v2.ConfigServiceV2.GetSink:input_type -> google.logging.v2.GetSinkRequest + 27, // 70: google.logging.v2.ConfigServiceV2.CreateSink:input_type -> google.logging.v2.CreateSinkRequest + 28, // 71: google.logging.v2.ConfigServiceV2.UpdateSink:input_type -> google.logging.v2.UpdateSinkRequest + 29, // 72: google.logging.v2.ConfigServiceV2.DeleteSink:input_type -> google.logging.v2.DeleteSinkRequest + 30, // 73: google.logging.v2.ConfigServiceV2.CreateLink:input_type -> google.logging.v2.CreateLinkRequest + 31, // 74: google.logging.v2.ConfigServiceV2.DeleteLink:input_type -> google.logging.v2.DeleteLinkRequest + 32, // 75: google.logging.v2.ConfigServiceV2.ListLinks:input_type -> google.logging.v2.ListLinksRequest + 34, // 76: google.logging.v2.ConfigServiceV2.GetLink:input_type -> google.logging.v2.GetLinkRequest + 36, // 77: google.logging.v2.ConfigServiceV2.ListExclusions:input_type -> google.logging.v2.ListExclusionsRequest + 38, // 78: google.logging.v2.ConfigServiceV2.GetExclusion:input_type -> google.logging.v2.GetExclusionRequest + 39, // 79: google.logging.v2.ConfigServiceV2.CreateExclusion:input_type -> google.logging.v2.CreateExclusionRequest + 40, // 80: google.logging.v2.ConfigServiceV2.UpdateExclusion:input_type -> google.logging.v2.UpdateExclusionRequest + 41, // 81: google.logging.v2.ConfigServiceV2.DeleteExclusion:input_type -> google.logging.v2.DeleteExclusionRequest + 42, // 82: google.logging.v2.ConfigServiceV2.GetCmekSettings:input_type -> google.logging.v2.GetCmekSettingsRequest + 43, // 83: google.logging.v2.ConfigServiceV2.UpdateCmekSettings:input_type -> google.logging.v2.UpdateCmekSettingsRequest + 45, // 84: google.logging.v2.ConfigServiceV2.GetSettings:input_type -> google.logging.v2.GetSettingsRequest + 46, // 85: google.logging.v2.ConfigServiceV2.UpdateSettings:input_type -> google.logging.v2.UpdateSettingsRequest + 48, // 86: google.logging.v2.ConfigServiceV2.CopyLogEntries:input_type -> google.logging.v2.CopyLogEntriesRequest + 12, // 87: google.logging.v2.ConfigServiceV2.ListBuckets:output_type -> google.logging.v2.ListBucketsResponse + 5, // 88: google.logging.v2.ConfigServiceV2.GetBucket:output_type -> google.logging.v2.LogBucket + 56, // 89: google.logging.v2.ConfigServiceV2.CreateBucketAsync:output_type -> google.longrunning.Operation + 56, // 90: google.logging.v2.ConfigServiceV2.UpdateBucketAsync:output_type -> google.longrunning.Operation + 5, // 91: google.logging.v2.ConfigServiceV2.CreateBucket:output_type -> google.logging.v2.LogBucket + 5, // 92: google.logging.v2.ConfigServiceV2.UpdateBucket:output_type -> google.logging.v2.LogBucket + 57, // 93: google.logging.v2.ConfigServiceV2.DeleteBucket:output_type -> google.protobuf.Empty + 57, // 94: google.logging.v2.ConfigServiceV2.UndeleteBucket:output_type -> google.protobuf.Empty + 19, // 95: google.logging.v2.ConfigServiceV2.ListViews:output_type -> google.logging.v2.ListViewsResponse + 6, // 96: google.logging.v2.ConfigServiceV2.GetView:output_type -> google.logging.v2.LogView + 6, // 97: google.logging.v2.ConfigServiceV2.CreateView:output_type -> google.logging.v2.LogView + 6, // 98: google.logging.v2.ConfigServiceV2.UpdateView:output_type -> google.logging.v2.LogView + 57, // 99: google.logging.v2.ConfigServiceV2.DeleteView:output_type -> google.protobuf.Empty + 25, // 100: google.logging.v2.ConfigServiceV2.ListSinks:output_type -> google.logging.v2.ListSinksResponse + 7, // 101: google.logging.v2.ConfigServiceV2.GetSink:output_type -> google.logging.v2.LogSink + 7, // 102: google.logging.v2.ConfigServiceV2.CreateSink:output_type -> google.logging.v2.LogSink + 7, // 103: google.logging.v2.ConfigServiceV2.UpdateSink:output_type -> google.logging.v2.LogSink + 57, // 104: google.logging.v2.ConfigServiceV2.DeleteSink:output_type -> google.protobuf.Empty + 56, // 105: google.logging.v2.ConfigServiceV2.CreateLink:output_type -> google.longrunning.Operation + 56, // 106: google.logging.v2.ConfigServiceV2.DeleteLink:output_type -> google.longrunning.Operation + 33, // 107: google.logging.v2.ConfigServiceV2.ListLinks:output_type -> google.logging.v2.ListLinksResponse + 9, // 108: google.logging.v2.ConfigServiceV2.GetLink:output_type -> google.logging.v2.Link + 37, // 109: google.logging.v2.ConfigServiceV2.ListExclusions:output_type -> google.logging.v2.ListExclusionsResponse + 35, // 110: google.logging.v2.ConfigServiceV2.GetExclusion:output_type -> google.logging.v2.LogExclusion + 35, // 111: google.logging.v2.ConfigServiceV2.CreateExclusion:output_type -> google.logging.v2.LogExclusion + 35, // 112: google.logging.v2.ConfigServiceV2.UpdateExclusion:output_type -> google.logging.v2.LogExclusion + 57, // 113: google.logging.v2.ConfigServiceV2.DeleteExclusion:output_type -> google.protobuf.Empty + 44, // 114: google.logging.v2.ConfigServiceV2.GetCmekSettings:output_type -> google.logging.v2.CmekSettings + 44, // 115: google.logging.v2.ConfigServiceV2.UpdateCmekSettings:output_type -> google.logging.v2.CmekSettings + 47, // 116: google.logging.v2.ConfigServiceV2.GetSettings:output_type -> google.logging.v2.Settings + 47, // 117: google.logging.v2.ConfigServiceV2.UpdateSettings:output_type -> google.logging.v2.Settings + 56, // 118: google.logging.v2.ConfigServiceV2.CopyLogEntries:output_type -> google.longrunning.Operation + 87, // [87:119] is the sub-list for method output_type + 55, // [55:87] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_google_logging_v2_logging_config_proto_init() } @@ -4737,7 +6041,7 @@ func file_google_logging_v2_logging_config_proto_init() { } if !protoimpl.UnsafeEnabled { file_google_logging_v2_logging_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogBucket); i { + switch v := v.(*IndexConfig); i { case 0: return &v.state case 1: @@ -4749,7 +6053,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogView); i { + switch v := v.(*LogBucket); i { case 0: return &v.state case 1: @@ -4761,7 +6065,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogSink); i { + switch v := v.(*LogView); i { case 0: return &v.state case 1: @@ -4773,7 +6077,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BigQueryOptions); i { + switch v := v.(*LogSink); i { case 0: return &v.state case 1: @@ -4785,7 +6089,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBucketsRequest); i { + switch v := v.(*BigQueryDataset); i { case 0: return &v.state case 1: @@ -4797,7 +6101,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBucketsResponse); i { + switch v := v.(*Link); i { case 0: return &v.state case 1: @@ -4809,7 +6113,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBucketRequest); i { + switch v := v.(*BigQueryOptions); i { case 0: return &v.state case 1: @@ -4821,7 +6125,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateBucketRequest); i { + switch v := v.(*ListBucketsRequest); i { case 0: return &v.state case 1: @@ -4833,7 +6137,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBucketRequest); i { + switch v := v.(*ListBucketsResponse); i { case 0: return &v.state case 1: @@ -4845,7 +6149,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteBucketRequest); i { + switch v := v.(*CreateBucketRequest); i { case 0: return &v.state case 1: @@ -4857,7 +6161,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UndeleteBucketRequest); i { + switch v := v.(*UpdateBucketRequest); i { case 0: return &v.state case 1: @@ -4869,7 +6173,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListViewsRequest); i { + switch v := v.(*GetBucketRequest); i { case 0: return &v.state case 1: @@ -4881,7 +6185,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListViewsResponse); i { + switch v := v.(*DeleteBucketRequest); i { case 0: return &v.state case 1: @@ -4893,7 +6197,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateViewRequest); i { + switch v := v.(*UndeleteBucketRequest); i { case 0: return &v.state case 1: @@ -4905,7 +6209,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateViewRequest); i { + switch v := v.(*ListViewsRequest); i { case 0: return &v.state case 1: @@ -4917,7 +6221,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetViewRequest); i { + switch v := v.(*ListViewsResponse); i { case 0: return &v.state case 1: @@ -4929,7 +6233,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteViewRequest); i { + switch v := v.(*CreateViewRequest); i { case 0: return &v.state case 1: @@ -4941,7 +6245,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSinksRequest); i { + switch v := v.(*UpdateViewRequest); i { case 0: return &v.state case 1: @@ -4953,7 +6257,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListSinksResponse); i { + switch v := v.(*GetViewRequest); i { case 0: return &v.state case 1: @@ -4965,7 +6269,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSinkRequest); i { + switch v := v.(*DeleteViewRequest); i { case 0: return &v.state case 1: @@ -4977,7 +6281,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateSinkRequest); i { + switch v := v.(*ListSinksRequest); i { case 0: return &v.state case 1: @@ -4989,7 +6293,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSinkRequest); i { + switch v := v.(*ListSinksResponse); i { case 0: return &v.state case 1: @@ -5001,7 +6305,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteSinkRequest); i { + switch v := v.(*GetSinkRequest); i { case 0: return &v.state case 1: @@ -5013,7 +6317,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogExclusion); i { + switch v := v.(*CreateSinkRequest); i { case 0: return &v.state case 1: @@ -5025,7 +6329,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExclusionsRequest); i { + switch v := v.(*UpdateSinkRequest); i { case 0: return &v.state case 1: @@ -5037,7 +6341,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListExclusionsResponse); i { + switch v := v.(*DeleteSinkRequest); i { case 0: return &v.state case 1: @@ -5049,7 +6353,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetExclusionRequest); i { + switch v := v.(*CreateLinkRequest); i { case 0: return &v.state case 1: @@ -5061,7 +6365,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateExclusionRequest); i { + switch v := v.(*DeleteLinkRequest); i { case 0: return &v.state case 1: @@ -5073,7 +6377,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateExclusionRequest); i { + switch v := v.(*ListLinksRequest); i { case 0: return &v.state case 1: @@ -5085,7 +6389,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteExclusionRequest); i { + switch v := v.(*ListLinksResponse); i { case 0: return &v.state case 1: @@ -5097,7 +6401,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCmekSettingsRequest); i { + switch v := v.(*GetLinkRequest); i { case 0: return &v.state case 1: @@ -5109,7 +6413,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateCmekSettingsRequest); i { + switch v := v.(*LogExclusion); i { case 0: return &v.state case 1: @@ -5121,7 +6425,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CmekSettings); i { + switch v := v.(*ListExclusionsRequest); i { case 0: return &v.state case 1: @@ -5133,7 +6437,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSettingsRequest); i { + switch v := v.(*ListExclusionsResponse); i { case 0: return &v.state case 1: @@ -5145,7 +6449,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSettingsRequest); i { + switch v := v.(*GetExclusionRequest); i { case 0: return &v.state case 1: @@ -5157,7 +6461,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Settings); i { + switch v := v.(*CreateExclusionRequest); i { case 0: return &v.state case 1: @@ -5169,7 +6473,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyLogEntriesRequest); i { + switch v := v.(*UpdateExclusionRequest); i { case 0: return &v.state case 1: @@ -5181,7 +6485,7 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CopyLogEntriesMetadata); i { + switch v := v.(*DeleteExclusionRequest); i { case 0: return &v.state case 1: @@ -5193,6 +6497,102 @@ func file_google_logging_v2_logging_config_proto_init() { } } file_google_logging_v2_logging_config_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCmekSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateCmekSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CmekSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateSettingsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Settings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CopyLogEntriesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CopyLogEntriesMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CopyLogEntriesResponse); i { case 0: return &v.state @@ -5204,17 +6604,61 @@ func file_google_logging_v2_logging_config_proto_init() { return nil } } + file_google_logging_v2_logging_config_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BucketMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinkMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_logging_v2_logging_config_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LocationMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - file_google_logging_v2_logging_config_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_google_logging_v2_logging_config_proto_msgTypes[3].OneofWrappers = []interface{}{ (*LogSink_BigqueryOptions)(nil), } + file_google_logging_v2_logging_config_proto_msgTypes[47].OneofWrappers = []interface{}{ + (*BucketMetadata_CreateBucketRequest)(nil), + (*BucketMetadata_UpdateBucketRequest)(nil), + } + file_google_logging_v2_logging_config_proto_msgTypes[48].OneofWrappers = []interface{}{ + (*LinkMetadata_CreateLinkRequest)(nil), + (*LinkMetadata_DeleteLinkRequest)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_logging_v2_logging_config_proto_rawDesc, - NumEnums: 3, - NumMessages: 39, + NumEnums: 4, + NumMessages: 50, NumExtensions: 0, NumServices: 1, }, @@ -5245,14 +6689,21 @@ type ConfigServiceV2Client interface { ListBuckets(ctx context.Context, in *ListBucketsRequest, opts ...grpc.CallOption) (*ListBucketsResponse, error) // Gets a log bucket. GetBucket(ctx context.Context, in *GetBucketRequest, opts ...grpc.CallOption) (*LogBucket, error) + // Creates a log bucket asynchronously that can be used to store log entries. + // + // After a bucket has been created, the bucket's location cannot be changed. + CreateBucketAsync(ctx context.Context, in *CreateBucketRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Updates a log bucket asynchronously. + // + // If the bucket has a `lifecycle_state` of `DELETE_REQUESTED`, then + // `FAILED_PRECONDITION` will be returned. + // + // After a bucket has been created, the bucket's location cannot be changed. + UpdateBucketAsync(ctx context.Context, in *UpdateBucketRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Creates a log bucket that can be used to store log entries. After a bucket // has been created, the bucket's location cannot be changed. CreateBucket(ctx context.Context, in *CreateBucketRequest, opts ...grpc.CallOption) (*LogBucket, error) - // Updates a log bucket. This method replaces the following fields in the - // existing bucket with values from the new bucket: `retention_period` - // - // If the retention period is decreased and the bucket is locked, - // `FAILED_PRECONDITION` will be returned. + // Updates a log bucket. // // If the bucket has a `lifecycle_state` of `DELETE_REQUESTED`, then // `FAILED_PRECONDITION` will be returned. @@ -5304,6 +6755,17 @@ type ConfigServiceV2Client interface { // Deletes a sink. If the sink has a unique `writer_identity`, then that // service account is also deleted. DeleteSink(ctx context.Context, in *DeleteSinkRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Asynchronously creates a linked dataset in BigQuery which makes it possible + // to use BigQuery to read the logs stored in the log bucket. A log bucket may + // currently only contain one link. + CreateLink(ctx context.Context, in *CreateLinkRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Deletes a link. This will also delete the corresponding BigQuery linked + // dataset. + DeleteLink(ctx context.Context, in *DeleteLinkRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Lists links. + ListLinks(ctx context.Context, in *ListLinksRequest, opts ...grpc.CallOption) (*ListLinksResponse, error) + // Gets a link. + GetLink(ctx context.Context, in *GetLinkRequest, opts ...grpc.CallOption) (*Link, error) // Lists all the exclusions on the _Default sink in a parent resource. ListExclusions(ctx context.Context, in *ListExclusionsRequest, opts ...grpc.CallOption) (*ListExclusionsResponse, error) // Gets the description of an exclusion in the _Default sink. @@ -5373,7 +6835,7 @@ type ConfigServiceV2Client interface { // for more information. UpdateSettings(ctx context.Context, in *UpdateSettingsRequest, opts ...grpc.CallOption) (*Settings, error) // Copies a set of log entries from a log bucket to a Cloud Storage bucket. - CopyLogEntries(ctx context.Context, in *CopyLogEntriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) + CopyLogEntries(ctx context.Context, in *CopyLogEntriesRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) } type configServiceV2Client struct { @@ -5402,6 +6864,24 @@ func (c *configServiceV2Client) GetBucket(ctx context.Context, in *GetBucketRequ return out, nil } +func (c *configServiceV2Client) CreateBucketAsync(ctx context.Context, in *CreateBucketRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/CreateBucketAsync", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceV2Client) UpdateBucketAsync(ctx context.Context, in *UpdateBucketRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/UpdateBucketAsync", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *configServiceV2Client) CreateBucket(ctx context.Context, in *CreateBucketRequest, opts ...grpc.CallOption) (*LogBucket, error) { out := new(LogBucket) err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/CreateBucket", in, out, opts...) @@ -5528,6 +7008,42 @@ func (c *configServiceV2Client) DeleteSink(ctx context.Context, in *DeleteSinkRe return out, nil } +func (c *configServiceV2Client) CreateLink(ctx context.Context, in *CreateLinkRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/CreateLink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceV2Client) DeleteLink(ctx context.Context, in *DeleteLinkRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/DeleteLink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceV2Client) ListLinks(ctx context.Context, in *ListLinksRequest, opts ...grpc.CallOption) (*ListLinksResponse, error) { + out := new(ListLinksResponse) + err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/ListLinks", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceV2Client) GetLink(ctx context.Context, in *GetLinkRequest, opts ...grpc.CallOption) (*Link, error) { + out := new(Link) + err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/GetLink", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *configServiceV2Client) ListExclusions(ctx context.Context, in *ListExclusionsRequest, opts ...grpc.CallOption) (*ListExclusionsResponse, error) { out := new(ListExclusionsResponse) err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/ListExclusions", in, out, opts...) @@ -5609,8 +7125,8 @@ func (c *configServiceV2Client) UpdateSettings(ctx context.Context, in *UpdateSe return out, nil } -func (c *configServiceV2Client) CopyLogEntries(ctx context.Context, in *CopyLogEntriesRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { - out := new(longrunning.Operation) +func (c *configServiceV2Client) CopyLogEntries(ctx context.Context, in *CopyLogEntriesRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.logging.v2.ConfigServiceV2/CopyLogEntries", in, out, opts...) if err != nil { return nil, err @@ -5624,14 +7140,21 @@ type ConfigServiceV2Server interface { ListBuckets(context.Context, *ListBucketsRequest) (*ListBucketsResponse, error) // Gets a log bucket. GetBucket(context.Context, *GetBucketRequest) (*LogBucket, error) + // Creates a log bucket asynchronously that can be used to store log entries. + // + // After a bucket has been created, the bucket's location cannot be changed. + CreateBucketAsync(context.Context, *CreateBucketRequest) (*longrunningpb.Operation, error) + // Updates a log bucket asynchronously. + // + // If the bucket has a `lifecycle_state` of `DELETE_REQUESTED`, then + // `FAILED_PRECONDITION` will be returned. + // + // After a bucket has been created, the bucket's location cannot be changed. + UpdateBucketAsync(context.Context, *UpdateBucketRequest) (*longrunningpb.Operation, error) // Creates a log bucket that can be used to store log entries. After a bucket // has been created, the bucket's location cannot be changed. CreateBucket(context.Context, *CreateBucketRequest) (*LogBucket, error) - // Updates a log bucket. This method replaces the following fields in the - // existing bucket with values from the new bucket: `retention_period` - // - // If the retention period is decreased and the bucket is locked, - // `FAILED_PRECONDITION` will be returned. + // Updates a log bucket. // // If the bucket has a `lifecycle_state` of `DELETE_REQUESTED`, then // `FAILED_PRECONDITION` will be returned. @@ -5683,6 +7206,17 @@ type ConfigServiceV2Server interface { // Deletes a sink. If the sink has a unique `writer_identity`, then that // service account is also deleted. DeleteSink(context.Context, *DeleteSinkRequest) (*emptypb.Empty, error) + // Asynchronously creates a linked dataset in BigQuery which makes it possible + // to use BigQuery to read the logs stored in the log bucket. A log bucket may + // currently only contain one link. + CreateLink(context.Context, *CreateLinkRequest) (*longrunningpb.Operation, error) + // Deletes a link. This will also delete the corresponding BigQuery linked + // dataset. + DeleteLink(context.Context, *DeleteLinkRequest) (*longrunningpb.Operation, error) + // Lists links. + ListLinks(context.Context, *ListLinksRequest) (*ListLinksResponse, error) + // Gets a link. + GetLink(context.Context, *GetLinkRequest) (*Link, error) // Lists all the exclusions on the _Default sink in a parent resource. ListExclusions(context.Context, *ListExclusionsRequest) (*ListExclusionsResponse, error) // Gets the description of an exclusion in the _Default sink. @@ -5752,7 +7286,7 @@ type ConfigServiceV2Server interface { // for more information. UpdateSettings(context.Context, *UpdateSettingsRequest) (*Settings, error) // Copies a set of log entries from a log bucket to a Cloud Storage bucket. - CopyLogEntries(context.Context, *CopyLogEntriesRequest) (*longrunning.Operation, error) + CopyLogEntries(context.Context, *CopyLogEntriesRequest) (*longrunningpb.Operation, error) } // UnimplementedConfigServiceV2Server can be embedded to have forward compatible implementations. @@ -5765,6 +7299,12 @@ func (*UnimplementedConfigServiceV2Server) ListBuckets(context.Context, *ListBuc func (*UnimplementedConfigServiceV2Server) GetBucket(context.Context, *GetBucketRequest) (*LogBucket, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBucket not implemented") } +func (*UnimplementedConfigServiceV2Server) CreateBucketAsync(context.Context, *CreateBucketRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateBucketAsync not implemented") +} +func (*UnimplementedConfigServiceV2Server) UpdateBucketAsync(context.Context, *UpdateBucketRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateBucketAsync not implemented") +} func (*UnimplementedConfigServiceV2Server) CreateBucket(context.Context, *CreateBucketRequest) (*LogBucket, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateBucket not implemented") } @@ -5807,6 +7347,18 @@ func (*UnimplementedConfigServiceV2Server) UpdateSink(context.Context, *UpdateSi func (*UnimplementedConfigServiceV2Server) DeleteSink(context.Context, *DeleteSinkRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteSink not implemented") } +func (*UnimplementedConfigServiceV2Server) CreateLink(context.Context, *CreateLinkRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateLink not implemented") +} +func (*UnimplementedConfigServiceV2Server) DeleteLink(context.Context, *DeleteLinkRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteLink not implemented") +} +func (*UnimplementedConfigServiceV2Server) ListLinks(context.Context, *ListLinksRequest) (*ListLinksResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListLinks not implemented") +} +func (*UnimplementedConfigServiceV2Server) GetLink(context.Context, *GetLinkRequest) (*Link, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLink not implemented") +} func (*UnimplementedConfigServiceV2Server) ListExclusions(context.Context, *ListExclusionsRequest) (*ListExclusionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListExclusions not implemented") } @@ -5834,7 +7386,7 @@ func (*UnimplementedConfigServiceV2Server) GetSettings(context.Context, *GetSett func (*UnimplementedConfigServiceV2Server) UpdateSettings(context.Context, *UpdateSettingsRequest) (*Settings, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateSettings not implemented") } -func (*UnimplementedConfigServiceV2Server) CopyLogEntries(context.Context, *CopyLogEntriesRequest) (*longrunning.Operation, error) { +func (*UnimplementedConfigServiceV2Server) CopyLogEntries(context.Context, *CopyLogEntriesRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method CopyLogEntries not implemented") } @@ -5878,6 +7430,42 @@ func _ConfigServiceV2_GetBucket_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _ConfigServiceV2_CreateBucketAsync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateBucketRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceV2Server).CreateBucketAsync(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.logging.v2.ConfigServiceV2/CreateBucketAsync", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceV2Server).CreateBucketAsync(ctx, req.(*CreateBucketRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigServiceV2_UpdateBucketAsync_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateBucketRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceV2Server).UpdateBucketAsync(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.logging.v2.ConfigServiceV2/UpdateBucketAsync", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceV2Server).UpdateBucketAsync(ctx, req.(*UpdateBucketRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ConfigServiceV2_CreateBucket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateBucketRequest) if err := dec(in); err != nil { @@ -6130,6 +7718,78 @@ func _ConfigServiceV2_DeleteSink_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } +func _ConfigServiceV2_CreateLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateLinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceV2Server).CreateLink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.logging.v2.ConfigServiceV2/CreateLink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceV2Server).CreateLink(ctx, req.(*CreateLinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigServiceV2_DeleteLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteLinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceV2Server).DeleteLink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.logging.v2.ConfigServiceV2/DeleteLink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceV2Server).DeleteLink(ctx, req.(*DeleteLinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigServiceV2_ListLinks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListLinksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceV2Server).ListLinks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.logging.v2.ConfigServiceV2/ListLinks", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceV2Server).ListLinks(ctx, req.(*ListLinksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigServiceV2_GetLink_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLinkRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceV2Server).GetLink(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.logging.v2.ConfigServiceV2/GetLink", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceV2Server).GetLink(ctx, req.(*GetLinkRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ConfigServiceV2_ListExclusions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListExclusionsRequest) if err := dec(in); err != nil { @@ -6322,6 +7982,14 @@ var _ConfigServiceV2_serviceDesc = grpc.ServiceDesc{ MethodName: "GetBucket", Handler: _ConfigServiceV2_GetBucket_Handler, }, + { + MethodName: "CreateBucketAsync", + Handler: _ConfigServiceV2_CreateBucketAsync_Handler, + }, + { + MethodName: "UpdateBucketAsync", + Handler: _ConfigServiceV2_UpdateBucketAsync_Handler, + }, { MethodName: "CreateBucket", Handler: _ConfigServiceV2_CreateBucket_Handler, @@ -6378,6 +8046,22 @@ var _ConfigServiceV2_serviceDesc = grpc.ServiceDesc{ MethodName: "DeleteSink", Handler: _ConfigServiceV2_DeleteSink_Handler, }, + { + MethodName: "CreateLink", + Handler: _ConfigServiceV2_CreateLink_Handler, + }, + { + MethodName: "DeleteLink", + Handler: _ConfigServiceV2_DeleteLink_Handler, + }, + { + MethodName: "ListLinks", + Handler: _ConfigServiceV2_ListLinks_Handler, + }, + { + MethodName: "GetLink", + Handler: _ConfigServiceV2_GetLink_Handler, + }, { MethodName: "ListExclusions", Handler: _ConfigServiceV2_ListExclusions_Handler, diff --git a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_metrics.pb.go b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_metrics.pb.go index 491778df84..77a89a0d0a 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_metrics.pb.go +++ b/vendor/cloud.google.com/go/logging/apiv2/loggingpb/logging_metrics.pb.go @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc-gen-go v1.31.0 +// protoc v4.23.2 // source: google/logging/v2/logging_metrics.proto package loggingpb @@ -126,10 +126,20 @@ type LogMetric struct { // filter](https://cloud.google.com/logging/docs/view/advanced_filters) which // is used to match log entries. Example: // - // "resource.type=gae_app AND severity>=ERROR" + // "resource.type=gae_app AND severity>=ERROR" // // The maximum length of the filter is 20000 characters. Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. The resource name of the Log Bucket that owns the Log Metric. + // Only Log Buckets in projects are supported. The bucket has to be in the + // same project as the metric. + // + // For example: + // + // `projects/my-project/locations/global/buckets/my-bucket` + // + // If empty, then the Log Metric is considered a non-Bucket Log Metric. + BucketName string `protobuf:"bytes,13,opt,name=bucket_name,json=bucketName,proto3" json:"bucket_name,omitempty"` // Optional. If set to True, then this metric is disabled and it does not // generate any points. Disabled bool `protobuf:"varint,12,opt,name=disabled,proto3" json:"disabled,omitempty"` @@ -158,15 +168,16 @@ type LogMetric struct { // Optional. A `value_extractor` is required when using a distribution // logs-based metric to extract the values to record from a log entry. // Two functions are supported for value extraction: `EXTRACT(field)` or - // `REGEXP_EXTRACT(field, regex)`. The argument are: - // 1. field: The name of the log entry field from which the value is to be - // extracted. - // 2. regex: A regular expression using the Google RE2 syntax - // (https://github.com/google/re2/wiki/Syntax) with a single capture - // group to extract data from the specified log entry field. The value - // of the field is converted to a string before applying the regex. - // It is an error to specify a regex that does not include exactly one - // capture group. + // `REGEXP_EXTRACT(field, regex)`. The arguments are: + // + // 1. field: The name of the log entry field from which the value is to be + // extracted. + // 2. regex: A regular expression using the Google RE2 syntax + // (https://github.com/google/re2/wiki/Syntax) with a single capture + // group to extract data from the specified log entry field. The value + // of the field is converted to a string before applying the regex. + // It is an error to specify a regex that does not include exactly one + // capture group. // // The result of the extraction must be convertible to a double type, as the // distribution always records double values. If either the extraction or @@ -182,7 +193,7 @@ type LogMetric struct { // is the same as for the `value_extractor` field. // // The extracted value is converted to the type defined in the label - // descriptor. If the either the extraction or the type conversion fails, + // descriptor. If either the extraction or the type conversion fails, // the label will have a default value. The default value for a string // label is an empty string, for an integer label its 0, and for a boolean // label its `false`. @@ -205,7 +216,7 @@ type LogMetric struct { // Deprecated. The API version that created or updated this metric. // The v2 format is used by default and cannot be changed. // - // Deprecated: Do not use. + // Deprecated: Marked as deprecated in google/logging/v2/logging_metrics.proto. Version LogMetric_ApiVersion `protobuf:"varint,4,opt,name=version,proto3,enum=google.logging.v2.LogMetric_ApiVersion" json:"version,omitempty"` } @@ -262,6 +273,13 @@ func (x *LogMetric) GetFilter() string { return "" } +func (x *LogMetric) GetBucketName() string { + if x != nil { + return x.BucketName + } + return "" +} + func (x *LogMetric) GetDisabled() bool { if x != nil { return x.Disabled @@ -311,7 +329,7 @@ func (x *LogMetric) GetUpdateTime() *timestamppb.Timestamp { return nil } -// Deprecated: Do not use. +// Deprecated: Marked as deprecated in google/logging/v2/logging_metrics.proto. func (x *LogMetric) GetVersion() LogMetric_ApiVersion { if x != nil { return x.Version @@ -327,7 +345,7 @@ type ListLogMetricsRequest struct { // Required. The name of the project containing the metrics: // - // "projects/[PROJECT_ID]" + // "projects/[PROJECT_ID]" Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. If present, then retrieve the next batch of results from the // preceding call to this method. `pageToken` must be the value of @@ -461,7 +479,7 @@ type GetLogMetricRequest struct { // Required. The resource name of the desired metric: // - // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" + // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` } @@ -512,7 +530,7 @@ type CreateLogMetricRequest struct { // Required. The resource name of the project in which to create the metric: // - // "projects/[PROJECT_ID]" + // "projects/[PROJECT_ID]" // // The new metric must be provided in the request. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` @@ -575,7 +593,7 @@ type UpdateLogMetricRequest struct { // Required. The resource name of the metric to update: // - // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" + // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" // // The updated metric must be provided in the request and it's // `name` field must be the same as `[METRIC_ID]` If the metric @@ -639,7 +657,7 @@ type DeleteLogMetricRequest struct { // Required. The resource name of the metric to delete: // - // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" + // "projects/[PROJECT_ID]/metrics/[METRIC_ID]" MetricName string `protobuf:"bytes,1,opt,name=metric_name,json=metricName,proto3" json:"metric_name,omitempty"` } @@ -703,188 +721,191 @@ var file_google_logging_v2_logging_metrics_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x06, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdd, 0x06, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x12, 0x4e, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, - 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x0e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x61, 0x0a, 0x10, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, - 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, 0x74, - 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, + 0x12, 0x24, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x74, 0x72, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x61, 0x0a, 0x10, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x65, + 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x62, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62, + 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x45, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, + 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x42, 0x0a, 0x14, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x0a, 0x41, + 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x32, 0x10, + 0x00, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x31, 0x10, 0x01, 0x3a, 0x4a, 0xea, 0x41, 0x47, 0x0a, 0x20, + 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x12, 0x23, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x7b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x7d, 0x22, 0xaa, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, + 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x22, 0x78, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x60, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, + 0x0a, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x95, + 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x22, 0x12, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x1a, 0x42, 0x0a, 0x14, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x0a, 0x41, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x32, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x56, - 0x31, 0x10, 0x01, 0x3a, 0x4a, 0xea, 0x41, 0x47, 0x0a, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x7d, 0x22, - 0xaa, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x33, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x2d, 0x0a, 0x2b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x78, 0x0a, 0x16, - 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, - 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x60, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x6c, 0x6f, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x12, 0x20, 0x6c, 0x6f, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, - 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x22, 0x63, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0xae, 0x08, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 0x32, 0x12, 0x97, 0x01, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x28, + 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x9e, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, + 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x06, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x63, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x49, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, + 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0xae, 0x08, 0x0a, + 0x10, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, + 0x32, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x32, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x92, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, - 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x3c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x9b, 0x01, 0x0a, 0x0f, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x29, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, - 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x22, - 0x1f, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x3a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x2c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0xa7, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x29, 0x2e, 0x67, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x32, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x92, 0x01, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x1a, 0x26, 0x2f, - 0x76, 0x32, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0xda, 0x41, 0x12, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x12, 0x92, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x28, 0x2a, 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x8d, 0x02, 0xca, 0x41, 0x16, 0x6c, 0x6f, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0xf0, 0x01, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, - 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, - 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, - 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2c, 0x68, 0x74, 0x74, - 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, - 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xbc, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, + 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x22, 0x3c, 0xda, 0x41, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x2a, 0x7d, + 0x12, 0x9b, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, + 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x3f, 0xda, + 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x1f, 0x2f, + 0x76, 0x32, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0xa7, + 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x67, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x32, 0x42, 0x13, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x3b, 0x6c, 0x6f, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x32, 0xca, - 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4c, - 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x4c, 0x6f, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x32, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x22, 0x4b, 0xda, 0x41, 0x12, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x3a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x1a, 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x92, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x29, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x3c, 0xda, 0x41, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x2a, 0x26, 0x2f, 0x76, 0x32, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x8d, 0x02, + 0xca, 0x41, 0x16, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0xf0, 0x01, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x2d, + 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x61, 0x75, 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x72, 0x65, 0x61, 0x64, 0x2c, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, + 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0xb9, 0x01, + 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x42, 0x13, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x35, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, + 0x32, 0x2f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x70, 0x62, 0x3b, 0x6c, 0x6f, 0x67, 0x67, + 0x69, 0x6e, 0x67, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, + 0x56, 0x32, 0xca, 0x02, 0x17, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x5c, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x32, 0xea, 0x02, 0x1a, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x4c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/vendor/cloud.google.com/go/logging/apiv2/metrics_client.go b/vendor/cloud.google.com/go/logging/apiv2/metrics_client.go index 79fcde1f9d..17e92f76cd 100644 --- a/vendor/cloud.google.com/go/logging/apiv2/metrics_client.go +++ b/vendor/cloud.google.com/go/logging/apiv2/metrics_client.go @@ -24,6 +24,7 @@ import ( "time" loggingpb "cloud.google.com/go/logging/apiv2/loggingpb" + longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/iterator" "google.golang.org/api/option" @@ -31,7 +32,6 @@ import ( gtransport "google.golang.org/api/transport/grpc" "google.golang.org/grpc" "google.golang.org/grpc/codes" - "google.golang.org/grpc/metadata" "google.golang.org/protobuf/proto" ) @@ -44,6 +44,9 @@ type MetricsCallOptions struct { CreateLogMetric []gax.CallOption UpdateLogMetric []gax.CallOption DeleteLogMetric []gax.CallOption + CancelOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultMetricsGRPCClientOptions() []option.ClientOption { @@ -61,6 +64,7 @@ func defaultMetricsGRPCClientOptions() []option.ClientOption { func defaultMetricsCallOptions() *MetricsCallOptions { return &MetricsCallOptions{ ListLogMetrics: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -74,6 +78,7 @@ func defaultMetricsCallOptions() *MetricsCallOptions { }), }, GetLogMetric: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -86,8 +91,11 @@ func defaultMetricsCallOptions() *MetricsCallOptions { }) }), }, - CreateLogMetric: []gax.CallOption{}, + CreateLogMetric: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + }, UpdateLogMetric: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -101,6 +109,7 @@ func defaultMetricsCallOptions() *MetricsCallOptions { }), }, DeleteLogMetric: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ codes.DeadlineExceeded, @@ -113,6 +122,9 @@ func defaultMetricsCallOptions() *MetricsCallOptions { }) }), }, + CancelOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, } } @@ -126,6 +138,9 @@ type internalMetricsClient interface { CreateLogMetric(context.Context, *loggingpb.CreateLogMetricRequest, ...gax.CallOption) (*loggingpb.LogMetric, error) UpdateLogMetric(context.Context, *loggingpb.UpdateLogMetricRequest, ...gax.CallOption) (*loggingpb.LogMetric, error) DeleteLogMetric(context.Context, *loggingpb.DeleteLogMetricRequest, ...gax.CallOption) error + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator } // MetricsClient is a client for interacting with Cloud Logging API. @@ -188,6 +203,21 @@ func (c *MetricsClient) DeleteLogMetric(ctx context.Context, req *loggingpb.Dele return c.internalClient.DeleteLogMetric(ctx, req, opts...) } +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *MetricsClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *MetricsClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *MetricsClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + // metricsGRPCClient is a client for interacting with Cloud Logging API over gRPC transport. // // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. @@ -195,17 +225,16 @@ type metricsGRPCClient struct { // Connection pool of gRPC connections to the service. connPool gtransport.ConnPool - // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE - disableDeadlines bool - // Points back to the CallOptions field of the containing MetricsClient CallOptions **MetricsCallOptions // The gRPC API client. metricsClient loggingpb.MetricsServiceV2Client + operationsClient longrunningpb.OperationsClient + // The x-goog-* metadata to be sent with each request. - xGoogMetadata metadata.MD + xGoogHeaders []string } // NewMetricsClient creates a new metrics service v2 client based on gRPC. @@ -222,11 +251,6 @@ func NewMetricsClient(ctx context.Context, opts ...option.ClientOption) (*Metric clientOpts = append(clientOpts, hookOpts...) } - disableDeadlines, err := checkDisableDeadlines() - if err != nil { - return nil, err - } - connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) if err != nil { return nil, err @@ -235,9 +259,9 @@ func NewMetricsClient(ctx context.Context, opts ...option.ClientOption) (*Metric c := &metricsGRPCClient{ connPool: connPool, - disableDeadlines: disableDeadlines, metricsClient: loggingpb.NewMetricsServiceV2Client(connPool), CallOptions: &client.CallOptions, + operationsClient: longrunningpb.NewOperationsClient(connPool), } c.setGoogleClientInfo() @@ -258,9 +282,9 @@ func (c *metricsGRPCClient) Connection() *grpc.ClientConn { // the `x-goog-api-client` header passed on each request. Intended for // use by Google-written clients. func (c *metricsGRPCClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", versionGo()}, keyval...) + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) - c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) + c.xGoogHeaders = []string{"x-goog-api-client", gax.XGoogHeader(kv...)} } // Close closes the connection to the API service. The user should invoke this when @@ -270,9 +294,10 @@ func (c *metricsGRPCClient) Close() error { } func (c *metricsGRPCClient) ListLogMetrics(ctx context.Context, req *loggingpb.ListLogMetricsRequest, opts ...gax.CallOption) *LogMetricIterator { - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).ListLogMetrics[0:len((*c.CallOptions).ListLogMetrics):len((*c.CallOptions).ListLogMetrics)], opts...) it := &LogMetricIterator{} req = proto.Clone(req).(*loggingpb.ListLogMetricsRequest) @@ -315,14 +340,10 @@ func (c *metricsGRPCClient) ListLogMetrics(ctx context.Context, req *loggingpb.L } func (c *metricsGRPCClient) GetLogMetric(ctx context.Context, req *loggingpb.GetLogMetricRequest, opts ...gax.CallOption) (*loggingpb.LogMetric, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "metric_name", url.QueryEscape(req.GetMetricName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "metric_name", url.QueryEscape(req.GetMetricName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).GetLogMetric[0:len((*c.CallOptions).GetLogMetric):len((*c.CallOptions).GetLogMetric)], opts...) var resp *loggingpb.LogMetric err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -337,14 +358,10 @@ func (c *metricsGRPCClient) GetLogMetric(ctx context.Context, req *loggingpb.Get } func (c *metricsGRPCClient) CreateLogMetric(ctx context.Context, req *loggingpb.CreateLogMetricRequest, opts ...gax.CallOption) (*loggingpb.LogMetric, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).CreateLogMetric[0:len((*c.CallOptions).CreateLogMetric):len((*c.CallOptions).CreateLogMetric)], opts...) var resp *loggingpb.LogMetric err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -359,14 +376,10 @@ func (c *metricsGRPCClient) CreateLogMetric(ctx context.Context, req *loggingpb. } func (c *metricsGRPCClient) UpdateLogMetric(ctx context.Context, req *loggingpb.UpdateLogMetricRequest, opts ...gax.CallOption) (*loggingpb.LogMetric, error) { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "metric_name", url.QueryEscape(req.GetMetricName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "metric_name", url.QueryEscape(req.GetMetricName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).UpdateLogMetric[0:len((*c.CallOptions).UpdateLogMetric):len((*c.CallOptions).UpdateLogMetric)], opts...) var resp *loggingpb.LogMetric err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { @@ -381,14 +394,10 @@ func (c *metricsGRPCClient) UpdateLogMetric(ctx context.Context, req *loggingpb. } func (c *metricsGRPCClient) DeleteLogMetric(ctx context.Context, req *loggingpb.DeleteLogMetricRequest, opts ...gax.CallOption) error { - if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { - cctx, cancel := context.WithTimeout(ctx, 60000*time.Millisecond) - defer cancel() - ctx = cctx - } - md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "metric_name", url.QueryEscape(req.GetMetricName()))) + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "metric_name", url.QueryEscape(req.GetMetricName()))} - ctx = insertMetadata(ctx, c.xGoogMetadata, md) + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) opts = append((*c.CallOptions).DeleteLogMetric[0:len((*c.CallOptions).DeleteLogMetric):len((*c.CallOptions).DeleteLogMetric)], opts...) err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { var err error @@ -398,6 +407,84 @@ func (c *metricsGRPCClient) DeleteLogMetric(ctx context.Context, req *loggingpb. return err } +func (c *metricsGRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *metricsGRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *metricsGRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + // LogMetricIterator manages a stream of *loggingpb.LogMetric. type LogMetricIterator struct { items []*loggingpb.LogMetric diff --git a/vendor/cloud.google.com/go/logging/internal/version.go b/vendor/cloud.google.com/go/logging/internal/version.go index 7c251d9945..0212cf2e8a 100644 --- a/vendor/cloud.google.com/go/logging/internal/version.go +++ b/vendor/cloud.google.com/go/logging/internal/version.go @@ -15,4 +15,4 @@ package internal // Version is the current tagged release of the library. -const Version = "1.7.0" +const Version = "1.8.1" diff --git a/vendor/cloud.google.com/go/logging/logging.go b/vendor/cloud.google.com/go/logging/logging.go index 0763640a14..61c06fe4df 100644 --- a/vendor/cloud.google.com/go/logging/logging.go +++ b/vendor/cloud.google.com/go/logging/logging.go @@ -47,10 +47,13 @@ import ( "github.com/golang/protobuf/proto" "github.com/golang/protobuf/ptypes" structpb "github.com/golang/protobuf/ptypes/struct" + gax "github.com/googleapis/gax-go/v2" "google.golang.org/api/option" "google.golang.org/api/support/bundler" mrpb "google.golang.org/genproto/googleapis/api/monitoredres" logtypepb "google.golang.org/genproto/googleapis/logging/type" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" ) @@ -88,6 +91,9 @@ const ( // timeout is to allow clients to degrade gracefully if underlying logging // service is temporarily impaired for some reason. defaultWriteTimeout = 10 * time.Minute + + // Part of the error message when the payload contains invalid UTF-8 characters. + utfErrorString = "string field contains invalid UTF-8" ) var ( @@ -257,6 +263,37 @@ type Logger struct { redirectOutputWriter io.Writer } +type loggerRetryer struct { + defaultRetryer gax.Retryer +} + +func newLoggerRetryer() gax.Retryer { + // Copied from CallOptions.WriteLogEntries in apiv2/logging_client.go. + d := gax.OnCodes([]codes.Code{ + codes.DeadlineExceeded, + codes.Internal, + codes.Unavailable, + }, gax.Backoff{ + Initial: 100 * time.Millisecond, + Max: 60000 * time.Millisecond, + Multiplier: 1.30, + }) + + r := &loggerRetryer{defaultRetryer: d} + return r +} + +func (r *loggerRetryer) Retry(err error) (pause time.Duration, shouldRetry bool) { + s, ok := status.FromError(err) + if !ok { + return r.defaultRetryer.Retry(err) + } + if strings.Contains(s.Message(), utfErrorString) { + return 0, false + } + return r.defaultRetryer.Retry(err) +} + // Logger returns a Logger that will write entries with the given log ID, such as // "syslog". A log ID must be less than 512 characters long and can only // include the following characters: upper and lower case alphanumeric @@ -715,7 +752,8 @@ func (l *Logger) writeLogEntries(entries []*logpb.LogEntry) { ctx, afterCall := l.ctxFunc() ctx, cancel := context.WithTimeout(ctx, defaultWriteTimeout) defer cancel() - _, err := l.client.client.WriteLogEntries(ctx, req) + + _, err := l.client.client.WriteLogEntries(ctx, req, gax.WithRetry(newLoggerRetryer)) if err != nil { l.client.error(err) } diff --git a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json index 91d60a809f..ef508417b3 100644 --- a/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json +++ b/vendor/github.com/googleapis/gax-go/v2/.release-please-manifest.json @@ -1,3 +1,3 @@ { - "v2": "2.11.0" + "v2": "2.12.0" } diff --git a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md index e17b196f6c..ae71149470 100644 --- a/vendor/github.com/googleapis/gax-go/v2/CHANGES.md +++ b/vendor/github.com/googleapis/gax-go/v2/CHANGES.md @@ -1,5 +1,13 @@ # Changelog +## [2.12.0](https://github.com/googleapis/gax-go/compare/v2.11.0...v2.12.0) (2023-06-26) + + +### Features + +* **v2/callctx:** add new callctx package ([#291](https://github.com/googleapis/gax-go/issues/291)) ([11503ed](https://github.com/googleapis/gax-go/commit/11503ed98df4ae1bbdedf91ff64d47e63f187d68)) +* **v2:** add BuildHeaders and InsertMetadataIntoOutgoingContext to header ([#290](https://github.com/googleapis/gax-go/issues/290)) ([6a4b89f](https://github.com/googleapis/gax-go/commit/6a4b89f5551a40262e7c3caf2e1bdc7321b76ea1)) + ## [2.11.0](https://github.com/googleapis/gax-go/compare/v2.10.0...v2.11.0) (2023-06-13) diff --git a/vendor/github.com/googleapis/gax-go/v2/callctx/callctx.go b/vendor/github.com/googleapis/gax-go/v2/callctx/callctx.go new file mode 100644 index 0000000000..af15fb5827 --- /dev/null +++ b/vendor/github.com/googleapis/gax-go/v2/callctx/callctx.go @@ -0,0 +1,74 @@ +// Copyright 2023, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Package callctx provides helpers for storing and retrieving values out of +// [context.Context]. These values are used by our client libraries in various +// ways across the stack. +package callctx + +import ( + "context" + "fmt" +) + +const ( + headerKey = contextKey("header") +) + +// contextKey is a private type used to store/retrieve context values. +type contextKey string + +// HeadersFromContext retrieves headers set from [SetHeaders]. These headers +// can then be cast to http.Header or metadata.MD to send along on requests. +func HeadersFromContext(ctx context.Context) map[string][]string { + m, ok := ctx.Value(headerKey).(map[string][]string) + if !ok { + return nil + } + return m +} + +// SetHeaders stores key value pairs in the returned context that can later +// be retrieved by [HeadersFromContext]. Values stored in this manner will +// automatically be retrieved by client libraries and sent as outgoing headers +// on all requests. keyvals should have a corresponding value for every key +// provided. If there is an odd number of keyvals this method will panic. +func SetHeaders(ctx context.Context, keyvals ...string) context.Context { + if len(keyvals)%2 != 0 { + panic(fmt.Sprintf("callctx: an even number of key value pairs must be provided, got %d", len(keyvals))) + } + h, ok := ctx.Value(headerKey).(map[string][]string) + if !ok { + h = make(map[string][]string) + } + for i := 0; i < len(keyvals); i = i + 2 { + h[keyvals[i]] = append(h[keyvals[i]], keyvals[i+1]) + } + return context.WithValue(ctx, headerKey, h) +} diff --git a/vendor/github.com/googleapis/gax-go/v2/header.go b/vendor/github.com/googleapis/gax-go/v2/header.go index 6488461f4d..453fab7ecc 100644 --- a/vendor/github.com/googleapis/gax-go/v2/header.go +++ b/vendor/github.com/googleapis/gax-go/v2/header.go @@ -31,9 +31,15 @@ package gax import ( "bytes" + "context" + "fmt" + "net/http" "runtime" "strings" "unicode" + + "github.com/googleapis/gax-go/v2/callctx" + "google.golang.org/grpc/metadata" ) var ( @@ -117,3 +123,46 @@ func XGoogHeader(keyval ...string) string { } return buf.String()[1:] } + +// InsertMetadataIntoOutgoingContext is for use by the Google Cloud Libraries +// only. +// +// InsertMetadataIntoOutgoingContext returns a new context that merges the +// provided keyvals metadata pairs with any existing metadata/headers in the +// provided context. keyvals should have a corresponding value for every key +// provided. If there is an odd number of keyvals this method will panic. +// Existing values for keys will not be overwritten, instead provided values +// will be appended to the list of existing values. +func InsertMetadataIntoOutgoingContext(ctx context.Context, keyvals ...string) context.Context { + return metadata.NewOutgoingContext(ctx, insertMetadata(ctx, keyvals...)) +} + +// BuildHeaders is for use by the Google Cloud Libraries only. +// +// BuildHeaders returns a new http.Header that merges the provided +// keyvals header pairs with any existing metadata/headers in the provided +// context. keyvals should have a corresponding value for every key provided. +// If there is an odd number of keyvals this method will panic. +// Existing values for keys will not be overwritten, instead provided values +// will be appended to the list of existing values. +func BuildHeaders(ctx context.Context, keyvals ...string) http.Header { + return http.Header(insertMetadata(ctx, keyvals...)) +} + +func insertMetadata(ctx context.Context, keyvals ...string) metadata.MD { + if len(keyvals)%2 != 0 { + panic(fmt.Sprintf("gax: an even number of key value pairs must be provided, got %d", len(keyvals))) + } + out, ok := metadata.FromOutgoingContext(ctx) + if !ok { + out = metadata.MD(make(map[string][]string)) + } + headers := callctx.HeadersFromContext(ctx) + for k, v := range headers { + out[k] = append(out[k], v...) + } + for i := 0; i < len(keyvals); i = i + 2 { + out[keyvals[i]] = append(out[keyvals[i]], keyvals[i+1]) + } + return out +} diff --git a/vendor/github.com/googleapis/gax-go/v2/internal/version.go b/vendor/github.com/googleapis/gax-go/v2/internal/version.go index 374dcdb115..7425b5ffbb 100644 --- a/vendor/github.com/googleapis/gax-go/v2/internal/version.go +++ b/vendor/github.com/googleapis/gax-go/v2/internal/version.go @@ -30,4 +30,4 @@ package internal // Version is the current tagged release of the library. -const Version = "2.11.0" +const Version = "2.12.0" diff --git a/vendor/google.golang.org/api/internal/version.go b/vendor/google.golang.org/api/internal/version.go index 46ad187ec1..54d30ef667 100644 --- a/vendor/google.golang.org/api/internal/version.go +++ b/vendor/google.golang.org/api/internal/version.go @@ -5,4 +5,4 @@ package internal // Version is the current tagged release of the library. -const Version = "0.126.0" +const Version = "0.128.0" diff --git a/vendor/google.golang.org/genproto/googleapis/longrunning/alias.go b/vendor/google.golang.org/genproto/googleapis/longrunning/alias.go deleted file mode 100644 index 3addf3b11b..0000000000 --- a/vendor/google.golang.org/genproto/googleapis/longrunning/alias.go +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2022 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Code generated by aliasgen. DO NOT EDIT. - -// Package longrunning aliases all exported identifiers in package -// "cloud.google.com/go/longrunning/autogen/longrunningpb". -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb. -// Please read https://github.com/googleapis/google-cloud-go/blob/main/migration.md -// for more details. -package longrunning - -import ( - src "cloud.google.com/go/longrunning/autogen/longrunningpb" - grpc "google.golang.org/grpc" -) - -// Deprecated: Please use vars in: cloud.google.com/go/longrunning/autogen/longrunningpb -var ( - E_OperationInfo = src.E_OperationInfo - File_google_longrunning_operations_proto = src.File_google_longrunning_operations_proto -) - -// The request message for -// [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type CancelOperationRequest = src.CancelOperationRequest - -// The request message for -// [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation]. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type DeleteOperationRequest = src.DeleteOperationRequest - -// The request message for -// [Operations.GetOperation][google.longrunning.Operations.GetOperation]. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type GetOperationRequest = src.GetOperationRequest - -// The request message for -// [Operations.ListOperations][google.longrunning.Operations.ListOperations]. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type ListOperationsRequest = src.ListOperationsRequest - -// The response message for -// [Operations.ListOperations][google.longrunning.Operations.ListOperations]. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type ListOperationsResponse = src.ListOperationsResponse - -// This resource represents a long-running operation that is the result of a -// network API call. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type Operation = src.Operation - -// A message representing the message types used by a long-running operation. -// Example: rpc LongRunningRecognize(LongRunningRecognizeRequest) returns -// (google.longrunning.Operation) { option (google.longrunning.operation_info) -// = { response_type: "LongRunningRecognizeResponse" metadata_type: -// "LongRunningRecognizeMetadata" }; } -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type OperationInfo = src.OperationInfo -type Operation_Error = src.Operation_Error -type Operation_Response = src.Operation_Response - -// OperationsClient is the client API for Operations service. For semantics -// around ctx use and closing/ending streaming RPCs, please refer to -// https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type OperationsClient = src.OperationsClient - -// OperationsServer is the server API for Operations service. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type OperationsServer = src.OperationsServer - -// UnimplementedOperationsServer can be embedded to have forward compatible -// implementations. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type UnimplementedOperationsServer = src.UnimplementedOperationsServer - -// The request message for -// [Operations.WaitOperation][google.longrunning.Operations.WaitOperation]. -// -// Deprecated: Please use types in: cloud.google.com/go/longrunning/autogen/longrunningpb -type WaitOperationRequest = src.WaitOperationRequest - -// Deprecated: Please use funcs in: cloud.google.com/go/longrunning/autogen/longrunningpb -func NewOperationsClient(cc grpc.ClientConnInterface) OperationsClient { - return src.NewOperationsClient(cc) -} - -// Deprecated: Please use funcs in: cloud.google.com/go/longrunning/autogen/longrunningpb -func RegisterOperationsServer(s *grpc.Server, srv OperationsServer) { - src.RegisterOperationsServer(s, srv) -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 52b74d3efe..d04a4afd6e 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -7,7 +7,7 @@ cloud.google.com/go/compute/internal # cloud.google.com/go/compute/metadata v0.2.3 ## explicit; go 1.19 cloud.google.com/go/compute/metadata -# cloud.google.com/go/logging v1.7.0 +# cloud.google.com/go/logging v1.8.1 ## explicit; go 1.19 cloud.google.com/go/logging cloud.google.com/go/logging/apiv2 @@ -588,15 +588,16 @@ github.com/google/shlex # github.com/google/uuid v1.6.0 ## explicit github.com/google/uuid -# github.com/googleapis/enterprise-certificate-proxy v0.2.3 +# github.com/googleapis/enterprise-certificate-proxy v0.2.4 ## explicit; go 1.19 github.com/googleapis/enterprise-certificate-proxy/client github.com/googleapis/enterprise-certificate-proxy/client/util -# github.com/googleapis/gax-go/v2 v2.11.0 +# github.com/googleapis/gax-go/v2 v2.12.0 ## explicit; go 1.19 github.com/googleapis/gax-go/v2 github.com/googleapis/gax-go/v2/apierror github.com/googleapis/gax-go/v2/apierror/internal/proto +github.com/googleapis/gax-go/v2/callctx github.com/googleapis/gax-go/v2/internal # github.com/gorilla/mux v1.8.1 ## explicit; go 1.20 @@ -1330,7 +1331,7 @@ golang.org/x/tools/internal/pkgbits golang.org/x/tools/internal/tokeninternal golang.org/x/tools/internal/typeparams golang.org/x/tools/internal/typesinternal -# google.golang.org/api v0.126.0 +# google.golang.org/api v0.128.0 ## explicit; go 1.19 google.golang.org/api/googleapi google.golang.org/api/googleapi/transport @@ -1362,7 +1363,6 @@ google.golang.org/appengine/urlfetch # google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d ## explicit; go 1.19 google.golang.org/genproto/googleapis/logging/type -google.golang.org/genproto/googleapis/longrunning google.golang.org/genproto/internal google.golang.org/genproto/protobuf/field_mask # google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d