logName
or in an individual log entry.
- string log_name = 1;
+ string log_name = 1 [(google.api.resource_reference) = {
+ type: "logging.googleapis.com/Log"
+ }];
// Optional. A default monitored resource object that is assigned to all log
// entries in `entries` that do not specify a value for `resource`. Example:
@@ -196,7 +209,7 @@ message WriteLogEntriesRequest {
// [quota limit](/logging/quota-policy) for calls to `entries.write`,
// you should try to include several log entries in this list,
// rather than calling this method for each individual log entry.
- repeated LogEntry entries = 4;
+ repeated LogEntry entries = 4 [(google.api.field_behavior) = REQUIRED];
// Optional. Whether valid entries should be written even if some other
// entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any
@@ -245,10 +258,15 @@ message ListLogEntriesRequest {
//
//
// Projects listed in the `project_ids` field are added to this list.
- repeated string resource_names = 8;
+ repeated string resource_names = 8 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "logging.googleapis.com/Log"
+ }
+ ];
// Optional. A filter that chooses which log entries to return. See [Advanced
- // Logs Filters](/logging/docs/view/advanced_filters). Only log entries that
+ // Logs Queries](/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`. Referencing a parent resource
// that is not listed in `resource_names` will cause the filter to return no
@@ -329,7 +347,9 @@ message ListLogsRequest {
// "organizations/[ORGANIZATION_ID]"
// "billingAccounts/[BILLING_ACCOUNT_ID]"
// "folders/[FOLDER_ID]"
- string parent = 1;
+ string parent = 1 [(google.api.resource_reference) = {
+ child_type: "logging.googleapis.com/Log"
+ }];
// Optional. The maximum number of results to return from this request.
// Non-positive values are ignored. The presence of `nextPageToken` in the
diff --git a/google/cloud/logging_v2/proto/logging_config.proto b/google/cloud/logging_v2/proto/logging_config.proto
index a9ccdf51c..7fb830ded 100644
--- a/google/cloud/logging_v2/proto/logging_config.proto
+++ b/google/cloud/logging_v2/proto/logging_config.proto
@@ -17,12 +17,14 @@ syntax = "proto3";
package google.logging.v2;
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
-import "google/api/client.proto";
option cc_enable_arenas = true;
option csharp_namespace = "Google.Cloud.Logging.V2";
@@ -58,6 +60,7 @@ service ConfigServiceV2 {
get: "/v2/{parent=billingAccounts/*}/sinks"
}
};
+ option (google.api.method_signature) = "parent";
}
// Gets a sink.
@@ -77,6 +80,7 @@ service ConfigServiceV2 {
get: "/v2/{sink_name=billingAccounts/*/sinks/*}"
}
};
+ option (google.api.method_signature) = "sink_name";
}
// Creates a sink that exports specified log entries to a destination. The
@@ -104,6 +108,7 @@ service ConfigServiceV2 {
body: "sink"
}
};
+ option (google.api.method_signature) = "parent,sink";
}
// Updates a sink. This method replaces the following fields in the existing
@@ -148,6 +153,8 @@ service ConfigServiceV2 {
body: "sink"
}
};
+ option (google.api.method_signature) = "sink_name,sink,update_mask";
+ option (google.api.method_signature) = "sink_name,sink";
}
// Deletes a sink. If the sink has a unique `writer_identity`, then that
@@ -168,6 +175,7 @@ service ConfigServiceV2 {
delete: "/v2/{sink_name=billingAccounts/*/sinks/*}"
}
};
+ option (google.api.method_signature) = "sink_name";
}
// Lists all the exclusions in a parent resource.
@@ -187,6 +195,7 @@ service ConfigServiceV2 {
get: "/v2/{parent=billingAccounts/*}/exclusions"
}
};
+ option (google.api.method_signature) = "parent";
}
// Gets the description of an exclusion.
@@ -206,6 +215,7 @@ service ConfigServiceV2 {
get: "/v2/{name=billingAccounts/*/exclusions/*}"
}
};
+ option (google.api.method_signature) = "name";
}
// Creates a new exclusion in a specified parent resource.
@@ -232,6 +242,7 @@ service ConfigServiceV2 {
body: "exclusion"
}
};
+ option (google.api.method_signature) = "parent,exclusion";
}
// Changes one or more properties of an existing exclusion.
@@ -256,6 +267,7 @@ service ConfigServiceV2 {
body: "exclusion"
}
};
+ option (google.api.method_signature) = "name,exclusion,update_mask";
}
// Deletes an exclusion.
@@ -275,6 +287,49 @@ service ConfigServiceV2 {
delete: "/v2/{name=billingAccounts/*/exclusions/*}"
}
};
+ option (google.api.method_signature) = "name";
+ }
+
+ // Gets the Logs Router CMEK settings for the given resource.
+ //
+ // Note: CMEK for the Logs Router can currently only be configured for GCP
+ // organizations. Once configured, it applies to all projects and folders in
+ // the GCP organization.
+ //
+ // See [Enabling CMEK for Logs
+ // Router](/logging/docs/routing/managed-encryption) for more information.
+ rpc GetCmekSettings(GetCmekSettingsRequest) returns (CmekSettings) {
+ option (google.api.http) = {
+ get: "/v2/{name=*/*}/cmekSettings"
+ additional_bindings {
+ get: "/v2/{name=organizations/*}/cmekSettings"
+ }
+ };
+ }
+
+ // Updates the Logs Router CMEK settings for the given resource.
+ //
+ // Note: CMEK for the Logs Router can currently only be configured for GCP
+ // organizations. Once configured, it applies to all projects and folders in
+ // the GCP organization.
+ //
+ // [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings]
+ // will fail if 1) `kms_key_name` is invalid, or 2) the associated service
+ // account does not have the required
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key, or
+ // 3) access to the key is disabled.
+ //
+ // See [Enabling CMEK for Logs
+ // Router](/logging/docs/routing/managed-encryption) for more information.
+ rpc UpdateCmekSettings(UpdateCmekSettingsRequest) returns (CmekSettings) {
+ option (google.api.http) = {
+ patch: "/v2/{name=*/*}/cmekSettings"
+ body: "cmek_settings"
+ additional_bindings {
+ patch: "/v2/{name=organizations/*}/cmekSettings"
+ body: "cmek_settings"
+ }
+ };
}
}
@@ -284,6 +339,14 @@ service ConfigServiceV2 {
// The sink must be created within a project, organization, billing account, or
// folder.
message LogSink {
+ option (google.api.resource) = {
+ type: "logging.googleapis.com/Sink"
+ pattern: "projects/{project}/sinks/{sink}"
+ pattern: "organizations/{organization}/sinks/{sink}"
+ pattern: "folders/{folder}/sinks/{sink}"
+ pattern: "billingAccounts/{billing_account}/sinks/{sink}"
+ };
+
// Available log entry formats. Log entries can be written to
// Logging in either format and can be exported in either format.
// Version 2 is the preferred format.
@@ -302,7 +365,7 @@ message LogSink {
// project. Example: `"my-syslog-errors-to-pubsub"`. Sink identifiers are
// limited to 100 characters and can include only the following characters:
// upper and lower-case alphanumeric characters, underscores, hyphens, and
- // periods.
+ // periods. First character has to be alphanumeric.
string name = 1;
// Required. The export destination:
@@ -315,7 +378,9 @@ message LogSink {
// have permission to write to the destination or else the log
// entries are not exported. For more information, see
// [Exporting Logs with Sinks](/logging/docs/api/tasks/exporting-logs).
- string destination = 3;
+ string destination = 3 [(google.api.resource_reference) = {
+ type: "*"
+ }];
// Optional. An [advanced logs filter](/logging/docs/view/advanced-queries). The only
// exported log entries are those that are in the resource owning the sink and
@@ -324,6 +389,14 @@ message LogSink {
// logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
string filter = 5;
+ // Optional. A description of this sink.
+ // The maximum length of the description is 8000 characters.
+ string description = 18;
+
+ // Optional. If set to True, then this sink is disabled and it does not
+ // export any log entries.
+ bool disabled = 19;
+
// Deprecated. The log entry format to use for this sink's exported log
// entries. The v2 format is used by default and cannot be changed.
VersionFormat output_version_format = 6 [deprecated = true];
@@ -342,7 +415,7 @@ message LogSink {
// Resource](/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource).
// Consult the destination service's documentation to determine the
// appropriate IAM roles to assign to the identity.
- string writer_identity = 8;
+ string writer_identity = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
// 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
@@ -368,12 +441,12 @@ message LogSink {
// Output only. The creation timestamp of the sink.
//
// This field may not be present for older sinks.
- google.protobuf.Timestamp create_time = 13;
+ google.protobuf.Timestamp create_time = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The last update timestamp of the sink.
//
// This field may not be present for older sinks.
- google.protobuf.Timestamp update_time = 14;
+ google.protobuf.Timestamp update_time = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
// Do not use. This field is ignored.
google.protobuf.Timestamp start_time = 10 [deprecated = true];
@@ -392,6 +465,14 @@ message BigQueryOptions {
// syntax](/bigquery/docs/querying-partitioned-tables) has to be used instead.
// In both cases, tables are sharded based on UTC timezone.
bool use_partitioned_tables = 1;
+
+ // 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
+ // meaning and will be false. Legacy sinks using partitioned tables will have
+ // this field set to false.
+ bool uses_timestamp_column_partitioning = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// The parameters to `ListSinks`.
@@ -402,7 +483,12 @@ message ListSinksRequest {
// "organizations/[ORGANIZATION_ID]"
// "billingAccounts/[BILLING_ACCOUNT_ID]"
// "folders/[FOLDER_ID]"
- string parent = 1;
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "logging.googleapis.com/Sink"
+ }
+ ];
// Optional. If present, then retrieve the next batch of results from the
// preceding call to this method. `pageToken` must be the value of
@@ -437,7 +523,12 @@ message GetSinkRequest {
// "folders/[FOLDER_ID]/sinks/[SINK_ID]"
//
// Example: `"projects/my-project-id/sinks/my-sink-id"`.
- string sink_name = 1;
+ string sink_name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Sink"
+ }
+ ];
}
// The parameters to `CreateSink`.
@@ -450,11 +541,16 @@ message CreateSinkRequest {
// "folders/[FOLDER_ID]"
//
// Examples: `"projects/my-logging-project"`, `"organizations/123456789"`.
- string parent = 1;
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "logging.googleapis.com/Sink"
+ }
+ ];
// Required. The new sink, whose `name` parameter is a sink identifier that
// is not already in use.
- LogSink sink = 2;
+ LogSink sink = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Determines the kind of IAM identity returned as `writer_identity`
// in the new sink. If this value is omitted or set to false, and if the
@@ -481,11 +577,16 @@ message UpdateSinkRequest {
// "folders/[FOLDER_ID]/sinks/[SINK_ID]"
//
// Example: `"projects/my-project-id/sinks/my-sink-id"`.
- string sink_name = 1;
+ string sink_name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Sink"
+ }
+ ];
// Required. The updated sink, whose name is the same identifier that appears
// as part of `sink_name`.
- LogSink sink = 2;
+ LogSink sink = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. See [sinks.create][google.logging.v2.ConfigServiceV2.CreateSink]
// for a description of this field. When updating a sink, the effect of this
@@ -528,7 +629,12 @@ message DeleteSinkRequest {
// "folders/[FOLDER_ID]/sinks/[SINK_ID]"
//
// Example: `"projects/my-project-id/sinks/my-sink-id"`.
- string sink_name = 1;
+ string sink_name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Sink"
+ }
+ ];
}
// Specifies a set of log entries that are not to be stored in
@@ -538,9 +644,18 @@ message DeleteSinkRequest {
// excluded. Note that organization-level and folder-level exclusions don't
// apply to child resources, and that you can't exclude audit log entries.
message LogExclusion {
+ option (google.api.resource) = {
+ type: "logging.googleapis.com/Exclusion"
+ pattern: "projects/{project}/exclusions/{exclusion}"
+ pattern: "organizations/{organization}/exclusions/{exclusion}"
+ pattern: "folders/{folder}/exclusions/{exclusion}"
+ pattern: "billingAccounts/{billing_account}/exclusions/{exclusion}"
+ };
+
// 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.
string name = 1;
// Optional. A description of this exclusion.
@@ -581,7 +696,12 @@ message ListExclusionsRequest {
// "organizations/[ORGANIZATION_ID]"
// "billingAccounts/[BILLING_ACCOUNT_ID]"
// "folders/[FOLDER_ID]"
- string parent = 1;
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "logging.googleapis.com/Exclusion"
+ }
+ ];
// Optional. If present, then retrieve the next batch of results from the
// preceding call to this method. `pageToken` must be the value of
@@ -616,7 +736,12 @@ message GetExclusionRequest {
// "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]"
//
// Example: `"projects/my-project-id/exclusions/my-exclusion-id"`.
- string name = 1;
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Exclusion"
+ }
+ ];
}
// The parameters to `CreateExclusion`.
@@ -629,7 +754,12 @@ message CreateExclusionRequest {
// "folders/[FOLDER_ID]"
//
// Examples: `"projects/my-logging-project"`, `"organizations/123456789"`.
- string parent = 1;
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ child_type: "logging.googleapis.com/Exclusion"
+ }
+ ];
// Required. The new exclusion, whose `name` parameter is an exclusion name
// that is not already used in the parent resource.
@@ -646,11 +776,16 @@ message UpdateExclusionRequest {
// "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]"
//
// Example: `"projects/my-project-id/exclusions/my-exclusion-id"`.
- string name = 1;
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Exclusion"
+ }
+ ];
// Required. New values for the existing exclusion. Only the fields specified
// in `update_mask` are relevant.
- LogExclusion exclusion = 2;
+ LogExclusion exclusion = 2 [(google.api.field_behavior) = REQUIRED];
// Required. A non-empty list of fields to change in the existing exclusion.
// New values for the fields are taken from the corresponding fields in the
@@ -659,7 +794,7 @@ message UpdateExclusionRequest {
//
// For example, to change the filter and description of an exclusion,
// specify an `update_mask` of `"filter,description"`.
- google.protobuf.FieldMask update_mask = 3;
+ google.protobuf.FieldMask update_mask = 3 [(google.api.field_behavior) = REQUIRED];
}
// The parameters to `DeleteExclusion`.
@@ -672,5 +807,120 @@ message DeleteExclusionRequest {
// "folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]"
//
// Example: `"projects/my-project-id/exclusions/my-exclusion-id"`.
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Exclusion"
+ }
+ ];
+}
+
+// The parameters to
+// [GetCmekSettings][google.logging.v2.ConfigServiceV2.GetCmekSettings].
+//
+// See [Enabling CMEK for Logs Router](/logging/docs/routing/managed-encryption)
+// for more information.
+message GetCmekSettingsRequest {
+ // Required. The resource for which to retrieve CMEK settings.
+ //
+ // "projects/[PROJECT_ID]/cmekSettings"
+ // "organizations/[ORGANIZATION_ID]/cmekSettings"
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
+ // "folders/[FOLDER_ID]/cmekSettings"
+ //
+ // Example: `"organizations/12345/cmekSettings"`.
+ //
+ // Note: CMEK for the Logs Router can currently only be configured for GCP
+ // organizations. Once configured, it applies to all projects and folders in
+ // the GCP organization.
+ string name = 1;
+}
+
+// The parameters to
+// [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings].
+//
+// See [Enabling CMEK for Logs Router](/logging/docs/routing/managed-encryption)
+// for more information.
+message UpdateCmekSettingsRequest {
+ // Required. The resource name for the CMEK settings to update.
+ //
+ // "projects/[PROJECT_ID]/cmekSettings"
+ // "organizations/[ORGANIZATION_ID]/cmekSettings"
+ // "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
+ // "folders/[FOLDER_ID]/cmekSettings"
+ //
+ // Example: `"organizations/12345/cmekSettings"`.
+ //
+ // Note: CMEK for the Logs Router can currently only be configured for GCP
+ // organizations. Once configured, it applies to all projects and folders in
+ // the GCP organization.
+ string name = 1;
+
+ // Required. The CMEK settings to update.
+ //
+ // See [Enabling CMEK for Logs
+ // Router](/logging/docs/routing/managed-encryption) for more information.
+ CmekSettings cmek_settings = 2;
+
+ // Optional. Field mask identifying which fields from `cmek_settings` should
+ // be updated. A field will be overwritten if and only if it is in the update
+ // mask. Output only fields cannot be updated.
+ //
+ // See [FieldMask][google.protobuf.FieldMask] for more information.
+ //
+ // Example: `"updateMask=kmsKeyName"`
+ google.protobuf.FieldMask update_mask = 3;
+}
+
+// Describes the customer-managed encryption key (CMEK) settings associated with
+// a project, folder, organization, billing account, or flexible resource.
+//
+// Note: CMEK for the Logs Router can currently only be configured for GCP
+// organizations. Once configured, it applies to all projects and folders in the
+// GCP organization.
+//
+// See [Enabling CMEK for Logs Router](/logging/docs/routing/managed-encryption)
+// for more information.
+message CmekSettings {
+ // Output Only. The resource name of the CMEK settings.
string name = 1;
+
+ // The resource name for the configured Cloud KMS key.
+ //
+ // KMS key name format:
+ // "projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]"
+ //
+ // For example:
+ // `"projects/my-project-id/locations/my-region/keyRings/key-ring-name/cryptoKeys/key-name"`
+ //
+ //
+ //
+ // To enable CMEK for the Logs Router, set this field to a valid
+ // `kms_key_name` for which the associated service account has the required
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key.
+ //
+ // The Cloud KMS key used by the Log Router can be updated by changing the
+ // `kms_key_name` to a new valid key name. Encryption operations that are in
+ // progress will be completed with the key that was in use when they started.
+ // Decryption operations will be completed using the key that was used at the
+ // time of encryption unless access to that key has been revoked.
+ //
+ // To disable CMEK for the Logs Router, set this field to an empty string.
+ //
+ // See [Enabling CMEK for Logs
+ // Router](/logging/docs/routing/managed-encryption) for more information.
+ string kms_key_name = 2;
+
+ // Output Only. The service account that will be used by the Logs Router to
+ // access your Cloud KMS key.
+ //
+ // Before enabling CMEK for Logs Router, you must first assign the role
+ // `roles/cloudkms.cryptoKeyEncrypterDecrypter` to the service account that
+ // the Logs Router will use to access your Cloud KMS key. Use
+ // [GetCmekSettings][google.logging.v2.ConfigServiceV2.GetCmekSettings] to
+ // obtain the service account ID.
+ //
+ // See [Enabling CMEK for Logs
+ // Router](/logging/docs/routing/managed-encryption) for more information.
+ string service_account_id = 3;
}
diff --git a/google/cloud/logging_v2/proto/logging_config_pb2.py b/google/cloud/logging_v2/proto/logging_config_pb2.py
index ae561d708..5ce61c644 100644
--- a/google/cloud/logging_v2/proto/logging_config_pb2.py
+++ b/google/cloud/logging_v2/proto/logging_config_pb2.py
@@ -15,12 +15,14 @@
_sym_db = _symbol_database.Default()
+from google.api import client_pb2 as google_dot_api_dot_client__pb2
+from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2
+from google.api import resource_pb2 as google_dot_api_dot_resource__pb2
from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
-from google.api import client_pb2 as google_dot_api_dot_client__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
@@ -31,15 +33,17 @@
"\n\025com.google.logging.v2B\022LoggingConfigProtoP\001Z8google.golang.org/genproto/googleapis/logging/v2;logging\370\001\001\252\002\027Google.Cloud.Logging.V2\312\002\027Google\\Cloud\\Logging\\V2"
),
serialized_pb=_b(
- '\n2google/cloud/logging_v2/proto/logging_config.proto\x12\x11google.logging.v2\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto"\x90\x04\n\x07LogSink\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65stination\x18\x03 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t\x12K\n\x15output_version_format\x18\x06 \x01(\x0e\x32(.google.logging.v2.LogSink.VersionFormatB\x02\x18\x01\x12\x17\n\x0fwriter_identity\x18\x08 \x01(\t\x12\x18\n\x10include_children\x18\t \x01(\x08\x12>\n\x10\x62igquery_options\x18\x0c \x01(\x0b\x32".google.logging.v2.BigQueryOptionsH\x00\x12/\n\x0b\x63reate_time\x18\r \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\nstart_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01\x12\x30\n\x08\x65nd_time\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01"?\n\rVersionFormat\x12\x1e\n\x1aVERSION_FORMAT_UNSPECIFIED\x10\x00\x12\x06\n\x02V2\x10\x01\x12\x06\n\x02V1\x10\x02\x42\t\n\x07options"1\n\x0f\x42igQueryOptions\x12\x1e\n\x16use_partitioned_tables\x18\x01 \x01(\x08"I\n\x10ListSinksRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05"W\n\x11ListSinksResponse\x12)\n\x05sinks\x18\x01 \x03(\x0b\x32\x1a.google.logging.v2.LogSink\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"#\n\x0eGetSinkRequest\x12\x11\n\tsink_name\x18\x01 \x01(\t"m\n\x11\x43reateSinkRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12(\n\x04sink\x18\x02 \x01(\x0b\x32\x1a.google.logging.v2.LogSink\x12\x1e\n\x16unique_writer_identity\x18\x03 \x01(\x08"\xa1\x01\n\x11UpdateSinkRequest\x12\x11\n\tsink_name\x18\x01 \x01(\t\x12(\n\x04sink\x18\x02 \x01(\x0b\x32\x1a.google.logging.v2.LogSink\x12\x1e\n\x16unique_writer_identity\x18\x03 \x01(\x08\x12/\n\x0bupdate_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"&\n\x11\x44\x65leteSinkRequest\x12\x11\n\tsink_name\x18\x01 \x01(\t"\xb5\x01\n\x0cLogExclusion\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x10\n\x08\x64isabled\x18\x04 \x01(\x08\x12/\n\x0b\x63reate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"N\n\x15ListExclusionsRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05"f\n\x16ListExclusionsResponse\x12\x33\n\nexclusions\x18\x01 \x03(\x0b\x32\x1f.google.logging.v2.LogExclusion\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"#\n\x13GetExclusionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t"\\\n\x16\x43reateExclusionRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12\x32\n\texclusion\x18\x02 \x01(\x0b\x32\x1f.google.logging.v2.LogExclusion"\x8b\x01\n\x16UpdateExclusionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x32\n\texclusion\x18\x02 \x01(\x0b\x32\x1f.google.logging.v2.LogExclusion\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"&\n\x16\x44\x65leteExclusionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t2\xf6\x1a\n\x0f\x43onfigServiceV2\x12\x87\x02\n\tListSinks\x12#.google.logging.v2.ListSinksRequest\x1a$.google.logging.v2.ListSinksResponse"\xae\x01\x82\xd3\xe4\x93\x02\xa7\x01\x12\x16/v2/{parent=*/*}/sinksZ\x1f\x12\x1d/v2/{parent=projects/*}/sinksZ$\x12"/v2/{parent=organizations/*}/sinksZ\x1e\x12\x1c/v2/{parent=folders/*}/sinksZ&\x12$/v2/{parent=billingAccounts/*}/sinks\x12\x92\x02\n\x07GetSink\x12!.google.logging.v2.GetSinkRequest\x1a\x1a.google.logging.v2.LogSink"\xc7\x01\x82\xd3\xe4\x93\x02\xc0\x01\x12\x1b/v2/{sink_name=*/*/sinks/*}Z$\x12"/v2/{sink_name=projects/*/sinks/*}Z)\x12\'/v2/{sink_name=organizations/*/sinks/*}Z#\x12!/v2/{sink_name=folders/*/sinks/*}Z+\x12)/v2/{sink_name=billingAccounts/*/sinks/*}\x12\x9d\x02\n\nCreateSink\x12$.google.logging.v2.CreateSinkRequest\x1a\x1a.google.logging.v2.LogSink"\xcc\x01\x82\xd3\xe4\x93\x02\xc5\x01"\x16/v2/{parent=*/*}/sinks:\x04sinkZ%"\x1d/v2/{parent=projects/*}/sinks:\x04sinkZ*""/v2/{parent=organizations/*}/sinks:\x04sinkZ$"\x1c/v2/{parent=folders/*}/sinks:\x04sinkZ,"$/v2/{parent=billingAccounts/*}/sinks:\x04sink\x12\xf1\x03\n\nUpdateSink\x12$.google.logging.v2.UpdateSinkRequest\x1a\x1a.google.logging.v2.LogSink"\xa0\x03\x82\xd3\xe4\x93\x02\x99\x03\x1a\x1b/v2/{sink_name=*/*/sinks/*}:\x04sinkZ*\x1a"/v2/{sink_name=projects/*/sinks/*}:\x04sinkZ/\x1a\'/v2/{sink_name=organizations/*/sinks/*}:\x04sinkZ)\x1a!/v2/{sink_name=folders/*/sinks/*}:\x04sinkZ1\x1a)/v2/{sink_name=billingAccounts/*/sinks/*}:\x04sinkZ*2"/v2/{sink_name=projects/*/sinks/*}:\x04sinkZ/2\'/v2/{sink_name=organizations/*/sinks/*}:\x04sinkZ)2!/v2/{sink_name=folders/*/sinks/*}:\x04sinkZ12)/v2/{sink_name=billingAccounts/*/sinks/*}:\x04sink\x12\x94\x02\n\nDeleteSink\x12$.google.logging.v2.DeleteSinkRequest\x1a\x16.google.protobuf.Empty"\xc7\x01\x82\xd3\xe4\x93\x02\xc0\x01*\x1b/v2/{sink_name=*/*/sinks/*}Z$*"/v2/{sink_name=projects/*/sinks/*}Z)*\'/v2/{sink_name=organizations/*/sinks/*}Z#*!/v2/{sink_name=folders/*/sinks/*}Z+*)/v2/{sink_name=billingAccounts/*/sinks/*}\x12\xaf\x02\n\x0eListExclusions\x12(.google.logging.v2.ListExclusionsRequest\x1a).google.logging.v2.ListExclusionsResponse"\xc7\x01\x82\xd3\xe4\x93\x02\xc0\x01\x12\x1b/v2/{parent=*/*}/exclusionsZ$\x12"/v2/{parent=projects/*}/exclusionsZ)\x12\'/v2/{parent=organizations/*}/exclusionsZ#\x12!/v2/{parent=folders/*}/exclusionsZ+\x12)/v2/{parent=billingAccounts/*}/exclusions\x12\xa1\x02\n\x0cGetExclusion\x12&.google.logging.v2.GetExclusionRequest\x1a\x1f.google.logging.v2.LogExclusion"\xc7\x01\x82\xd3\xe4\x93\x02\xc0\x01\x12\x1b/v2/{name=*/*/exclusions/*}Z$\x12"/v2/{name=projects/*/exclusions/*}Z)\x12\'/v2/{name=organizations/*/exclusions/*}Z#\x12!/v2/{name=folders/*/exclusions/*}Z+\x12)/v2/{name=billingAccounts/*/exclusions/*}\x12\xde\x02\n\x0f\x43reateExclusion\x12).google.logging.v2.CreateExclusionRequest\x1a\x1f.google.logging.v2.LogExclusion"\xfe\x01\x82\xd3\xe4\x93\x02\xf7\x01"\x1b/v2/{parent=*/*}/exclusions:\texclusionZ/""/v2/{parent=projects/*}/exclusions:\texclusionZ4"\'/v2/{parent=organizations/*}/exclusions:\texclusionZ."!/v2/{parent=folders/*}/exclusions:\texclusionZ6")/v2/{parent=billingAccounts/*}/exclusions:\texclusion\x12\xde\x02\n\x0fUpdateExclusion\x12).google.logging.v2.UpdateExclusionRequest\x1a\x1f.google.logging.v2.LogExclusion"\xfe\x01\x82\xd3\xe4\x93\x02\xf7\x01\x32\x1b/v2/{name=*/*/exclusions/*}:\texclusionZ/2"/v2/{name=projects/*/exclusions/*}:\texclusionZ42\'/v2/{name=organizations/*/exclusions/*}:\texclusionZ.2!/v2/{name=folders/*/exclusions/*}:\texclusionZ62)/v2/{name=billingAccounts/*/exclusions/*}:\texclusion\x12\x9e\x02\n\x0f\x44\x65leteExclusion\x12).google.logging.v2.DeleteExclusionRequest\x1a\x16.google.protobuf.Empty"\xc7\x01\x82\xd3\xe4\x93\x02\xc0\x01*\x1b/v2/{name=*/*/exclusions/*}Z$*"/v2/{name=projects/*/exclusions/*}Z)*\'/v2/{name=organizations/*/exclusions/*}Z#*!/v2/{name=folders/*/exclusions/*}Z+*)/v2/{name=billingAccounts/*/exclusions/*}\x1a\xdf\x01\xca\x41\x16logging.googleapis.com\xd2\x41\xc2\x01https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.readB\x9e\x01\n\x15\x63om.google.logging.v2B\x12LoggingConfigProtoP\x01Z8google.golang.org/genproto/googleapis/logging/v2;logging\xf8\x01\x01\xaa\x02\x17Google.Cloud.Logging.V2\xca\x02\x17Google\\Cloud\\Logging\\V2b\x06proto3'
+ '\n2google/cloud/logging_v2/proto/logging_config.proto\x12\x11google.logging.v2\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto"\x8d\x06\n\x07LogSink\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1b\n\x0b\x64\x65stination\x18\x03 \x01(\tB\x06\xfa\x41\x03\n\x01*\x12\x0e\n\x06\x66ilter\x18\x05 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x12 \x01(\t\x12\x10\n\x08\x64isabled\x18\x13 \x01(\x08\x12K\n\x15output_version_format\x18\x06 \x01(\x0e\x32(.google.logging.v2.LogSink.VersionFormatB\x02\x18\x01\x12\x1c\n\x0fwriter_identity\x18\x08 \x01(\tB\x03\xe0\x41\x03\x12\x18\n\x10include_children\x18\t \x01(\x08\x12>\n\x10\x62igquery_options\x18\x0c \x01(\x0b\x32".google.logging.v2.BigQueryOptionsH\x00\x12\x34\n\x0b\x63reate_time\x18\r \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x34\n\x0bupdate_time\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x32\n\nstart_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01\x12\x30\n\x08\x65nd_time\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01"?\n\rVersionFormat\x12\x1e\n\x1aVERSION_FORMAT_UNSPECIFIED\x10\x00\x12\x06\n\x02V2\x10\x01\x12\x06\n\x02V1\x10\x02:\xbc\x01\xea\x41\xb8\x01\n\x1blogging.googleapis.com/Sink\x12\x1fprojects/{project}/sinks/{sink}\x12)organizations/{organization}/sinks/{sink}\x12\x1d\x66olders/{folder}/sinks/{sink}\x12.billingAccounts/{billing_account}/sinks/{sink}B\t\n\x07options"b\n\x0f\x42igQueryOptions\x12\x1e\n\x16use_partitioned_tables\x18\x01 \x01(\x08\x12/\n"uses_timestamp_column_partitioning\x18\x03 \x01(\x08\x42\x03\xe0\x41\x03"n\n\x10ListSinksRequest\x12\x33\n\x06parent\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\x12\x1blogging.googleapis.com/Sink\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05"W\n\x11ListSinksResponse\x12)\n\x05sinks\x18\x01 \x03(\x0b\x32\x1a.google.logging.v2.LogSink\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"H\n\x0eGetSinkRequest\x12\x36\n\tsink_name\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1blogging.googleapis.com/Sink"\x97\x01\n\x11\x43reateSinkRequest\x12\x33\n\x06parent\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\x12\x1blogging.googleapis.com/Sink\x12-\n\x04sink\x18\x02 \x01(\x0b\x32\x1a.google.logging.v2.LogSinkB\x03\xe0\x41\x02\x12\x1e\n\x16unique_writer_identity\x18\x03 \x01(\x08"\xcb\x01\n\x11UpdateSinkRequest\x12\x36\n\tsink_name\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1blogging.googleapis.com/Sink\x12-\n\x04sink\x18\x02 \x01(\x0b\x32\x1a.google.logging.v2.LogSinkB\x03\xe0\x41\x02\x12\x1e\n\x16unique_writer_identity\x18\x03 \x01(\x08\x12/\n\x0bupdate_mask\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"K\n\x11\x44\x65leteSinkRequest\x12\x36\n\tsink_name\x18\x01 \x01(\tB#\xe0\x41\x02\xfa\x41\x1d\n\x1blogging.googleapis.com/Sink"\xa1\x03\n\x0cLogExclusion\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x10\n\x08\x64isabled\x18\x04 \x01(\x08\x12/\n\x0b\x63reate_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp:\xe9\x01\xea\x41\xe5\x01\n logging.googleapis.com/Exclusion\x12)projects/{project}/exclusions/{exclusion}\x12\x33organizations/{organization}/exclusions/{exclusion}\x12\'folders/{folder}/exclusions/{exclusion}\x12\x38\x62illingAccounts/{billing_account}/exclusions/{exclusion}"x\n\x15ListExclusionsRequest\x12\x38\n\x06parent\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41"\x12 logging.googleapis.com/Exclusion\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05"f\n\x16ListExclusionsResponse\x12\x33\n\nexclusions\x18\x01 \x03(\x0b\x32\x1f.google.logging.v2.LogExclusion\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"M\n\x13GetExclusionRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41"\n logging.googleapis.com/Exclusion"\x86\x01\n\x16\x43reateExclusionRequest\x12\x38\n\x06parent\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41"\x12 logging.googleapis.com/Exclusion\x12\x32\n\texclusion\x18\x02 \x01(\x0b\x32\x1f.google.logging.v2.LogExclusion"\xbf\x01\n\x16UpdateExclusionRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41"\n logging.googleapis.com/Exclusion\x12\x37\n\texclusion\x18\x02 \x01(\x0b\x32\x1f.google.logging.v2.LogExclusionB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02"P\n\x16\x44\x65leteExclusionRequest\x12\x36\n\x04name\x18\x01 \x01(\tB(\xe0\x41\x02\xfa\x41"\n logging.googleapis.com/Exclusion"&\n\x16GetCmekSettingsRequest\x12\x0c\n\x04name\x18\x01 \x01(\t"\x92\x01\n\x19UpdateCmekSettingsRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x36\n\rcmek_settings\x18\x02 \x01(\x0b\x32\x1f.google.logging.v2.CmekSettings\x12/\n\x0bupdate_mask\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.FieldMask"N\n\x0c\x43mekSettings\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0ckms_key_name\x18\x02 \x01(\t\x12\x1a\n\x12service_account_id\x18\x03 \x01(\t2\x9e\x1f\n\x0f\x43onfigServiceV2\x12\x90\x02\n\tListSinks\x12#.google.logging.v2.ListSinksRequest\x1a$.google.logging.v2.ListSinksResponse"\xb7\x01\x82\xd3\xe4\x93\x02\xa7\x01\x12\x16/v2/{parent=*/*}/sinksZ\x1f\x12\x1d/v2/{parent=projects/*}/sinksZ$\x12"/v2/{parent=organizations/*}/sinksZ\x1e\x12\x1c/v2/{parent=folders/*}/sinksZ&\x12$/v2/{parent=billingAccounts/*}/sinks\xda\x41\x06parent\x12\x9e\x02\n\x07GetSink\x12!.google.logging.v2.GetSinkRequest\x1a\x1a.google.logging.v2.LogSink"\xd3\x01\x82\xd3\xe4\x93\x02\xc0\x01\x12\x1b/v2/{sink_name=*/*/sinks/*}Z$\x12"/v2/{sink_name=projects/*/sinks/*}Z)\x12\'/v2/{sink_name=organizations/*/sinks/*}Z#\x12!/v2/{sink_name=folders/*/sinks/*}Z+\x12)/v2/{sink_name=billingAccounts/*/sinks/*}\xda\x41\tsink_name\x12\xab\x02\n\nCreateSink\x12$.google.logging.v2.CreateSinkRequest\x1a\x1a.google.logging.v2.LogSink"\xda\x01\x82\xd3\xe4\x93\x02\xc5\x01"\x16/v2/{parent=*/*}/sinks:\x04sinkZ%"\x1d/v2/{parent=projects/*}/sinks:\x04sinkZ*""/v2/{parent=organizations/*}/sinks:\x04sinkZ$"\x1c/v2/{parent=folders/*}/sinks:\x04sinkZ,"$/v2/{parent=billingAccounts/*}/sinks:\x04sink\xda\x41\x0bparent,sink\x12\x9f\x04\n\nUpdateSink\x12$.google.logging.v2.UpdateSinkRequest\x1a\x1a.google.logging.v2.LogSink"\xce\x03\x82\xd3\xe4\x93\x02\x99\x03\x1a\x1b/v2/{sink_name=*/*/sinks/*}:\x04sinkZ*\x1a"/v2/{sink_name=projects/*/sinks/*}:\x04sinkZ/\x1a\'/v2/{sink_name=organizations/*/sinks/*}:\x04sinkZ)\x1a!/v2/{sink_name=folders/*/sinks/*}:\x04sinkZ1\x1a)/v2/{sink_name=billingAccounts/*/sinks/*}:\x04sinkZ*2"/v2/{sink_name=projects/*/sinks/*}:\x04sinkZ/2\'/v2/{sink_name=organizations/*/sinks/*}:\x04sinkZ)2!/v2/{sink_name=folders/*/sinks/*}:\x04sinkZ12)/v2/{sink_name=billingAccounts/*/sinks/*}:\x04sink\xda\x41\x1asink_name,sink,update_mask\xda\x41\x0esink_name,sink\x12\xa0\x02\n\nDeleteSink\x12$.google.logging.v2.DeleteSinkRequest\x1a\x16.google.protobuf.Empty"\xd3\x01\x82\xd3\xe4\x93\x02\xc0\x01*\x1b/v2/{sink_name=*/*/sinks/*}Z$*"/v2/{sink_name=projects/*/sinks/*}Z)*\'/v2/{sink_name=organizations/*/sinks/*}Z#*!/v2/{sink_name=folders/*/sinks/*}Z+*)/v2/{sink_name=billingAccounts/*/sinks/*}\xda\x41\tsink_name\x12\xb8\x02\n\x0eListExclusions\x12(.google.logging.v2.ListExclusionsRequest\x1a).google.logging.v2.ListExclusionsResponse"\xd0\x01\x82\xd3\xe4\x93\x02\xc0\x01\x12\x1b/v2/{parent=*/*}/exclusionsZ$\x12"/v2/{parent=projects/*}/exclusionsZ)\x12\'/v2/{parent=organizations/*}/exclusionsZ#\x12!/v2/{parent=folders/*}/exclusionsZ+\x12)/v2/{parent=billingAccounts/*}/exclusions\xda\x41\x06parent\x12\xa8\x02\n\x0cGetExclusion\x12&.google.logging.v2.GetExclusionRequest\x1a\x1f.google.logging.v2.LogExclusion"\xce\x01\x82\xd3\xe4\x93\x02\xc0\x01\x12\x1b/v2/{name=*/*/exclusions/*}Z$\x12"/v2/{name=projects/*/exclusions/*}Z)\x12\'/v2/{name=organizations/*/exclusions/*}Z#\x12!/v2/{name=folders/*/exclusions/*}Z+\x12)/v2/{name=billingAccounts/*/exclusions/*}\xda\x41\x04name\x12\xf1\x02\n\x0f\x43reateExclusion\x12).google.logging.v2.CreateExclusionRequest\x1a\x1f.google.logging.v2.LogExclusion"\x91\x02\x82\xd3\xe4\x93\x02\xf7\x01"\x1b/v2/{parent=*/*}/exclusions:\texclusionZ/""/v2/{parent=projects/*}/exclusions:\texclusionZ4"\'/v2/{parent=organizations/*}/exclusions:\texclusionZ."!/v2/{parent=folders/*}/exclusions:\texclusionZ6")/v2/{parent=billingAccounts/*}/exclusions:\texclusion\xda\x41\x10parent,exclusion\x12\xfb\x02\n\x0fUpdateExclusion\x12).google.logging.v2.UpdateExclusionRequest\x1a\x1f.google.logging.v2.LogExclusion"\x9b\x02\x82\xd3\xe4\x93\x02\xf7\x01\x32\x1b/v2/{name=*/*/exclusions/*}:\texclusionZ/2"/v2/{name=projects/*/exclusions/*}:\texclusionZ42\'/v2/{name=organizations/*/exclusions/*}:\texclusionZ.2!/v2/{name=folders/*/exclusions/*}:\texclusionZ62)/v2/{name=billingAccounts/*/exclusions/*}:\texclusion\xda\x41\x1aname,exclusion,update_mask\x12\xa5\x02\n\x0f\x44\x65leteExclusion\x12).google.logging.v2.DeleteExclusionRequest\x1a\x16.google.protobuf.Empty"\xce\x01\x82\xd3\xe4\x93\x02\xc0\x01*\x1b/v2/{name=*/*/exclusions/*}Z$*"/v2/{name=projects/*/exclusions/*}Z)*\'/v2/{name=organizations/*/exclusions/*}Z#*!/v2/{name=folders/*/exclusions/*}Z+*)/v2/{name=billingAccounts/*/exclusions/*}\xda\x41\x04name\x12\xad\x01\n\x0fGetCmekSettings\x12).google.logging.v2.GetCmekSettingsRequest\x1a\x1f.google.logging.v2.CmekSettings"N\x82\xd3\xe4\x93\x02H\x12\x1b/v2/{name=*/*}/cmekSettingsZ)\x12\'/v2/{name=organizations/*}/cmekSettings\x12\xd1\x01\n\x12UpdateCmekSettings\x12,.google.logging.v2.UpdateCmekSettingsRequest\x1a\x1f.google.logging.v2.CmekSettings"l\x82\xd3\xe4\x93\x02\x66\x32\x1b/v2/{name=*/*}/cmekSettings:\rcmek_settingsZ82\'/v2/{name=organizations/*}/cmekSettings:\rcmek_settings\x1a\xdf\x01\xca\x41\x16logging.googleapis.com\xd2\x41\xc2\x01https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.readB\x9e\x01\n\x15\x63om.google.logging.v2B\x12LoggingConfigProtoP\x01Z8google.golang.org/genproto/googleapis/logging/v2;logging\xf8\x01\x01\xaa\x02\x17Google.Cloud.Logging.V2\xca\x02\x17Google\\Cloud\\Logging\\V2b\x06proto3'
),
dependencies=[
+ google_dot_api_dot_client__pb2.DESCRIPTOR,
+ google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,
+ google_dot_api_dot_resource__pb2.DESCRIPTOR,
google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,
google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,
google_dot_protobuf_dot_field__mask__pb2.DESCRIPTOR,
google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,
google_dot_api_dot_annotations__pb2.DESCRIPTOR,
- google_dot_api_dot_client__pb2.DESCRIPTOR,
],
)
@@ -66,8 +70,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=711,
- serialized_end=774,
+ serialized_start=833,
+ serialized_end=896,
)
_sym_db.RegisterEnumDescriptor(_LOGSINK_VERSIONFORMAT)
@@ -112,7 +116,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\372A\003\n\001*"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -133,10 +137,46 @@
serialized_options=None,
file=DESCRIPTOR,
),
+ _descriptor.FieldDescriptor(
+ name="description",
+ full_name="google.logging.v2.LogSink.description",
+ index=3,
+ number=18,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode("utf-8"),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
+ _descriptor.FieldDescriptor(
+ name="disabled",
+ full_name="google.logging.v2.LogSink.disabled",
+ index=4,
+ number=19,
+ type=8,
+ cpp_type=7,
+ label=1,
+ has_default_value=False,
+ default_value=False,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
_descriptor.FieldDescriptor(
name="output_version_format",
full_name="google.logging.v2.LogSink.output_version_format",
- index=3,
+ index=5,
number=6,
type=14,
cpp_type=8,
@@ -154,7 +194,7 @@
_descriptor.FieldDescriptor(
name="writer_identity",
full_name="google.logging.v2.LogSink.writer_identity",
- index=4,
+ index=6,
number=8,
type=9,
cpp_type=9,
@@ -166,13 +206,13 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\003"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
name="include_children",
full_name="google.logging.v2.LogSink.include_children",
- index=5,
+ index=7,
number=9,
type=8,
cpp_type=7,
@@ -190,7 +230,7 @@
_descriptor.FieldDescriptor(
name="bigquery_options",
full_name="google.logging.v2.LogSink.bigquery_options",
- index=6,
+ index=8,
number=12,
type=11,
cpp_type=10,
@@ -208,7 +248,7 @@
_descriptor.FieldDescriptor(
name="create_time",
full_name="google.logging.v2.LogSink.create_time",
- index=7,
+ index=9,
number=13,
type=11,
cpp_type=10,
@@ -220,13 +260,13 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\003"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
name="update_time",
full_name="google.logging.v2.LogSink.update_time",
- index=8,
+ index=10,
number=14,
type=11,
cpp_type=10,
@@ -238,13 +278,13 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\003"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
name="start_time",
full_name="google.logging.v2.LogSink.start_time",
- index=9,
+ index=11,
number=10,
type=11,
cpp_type=10,
@@ -262,7 +302,7 @@
_descriptor.FieldDescriptor(
name="end_time",
full_name="google.logging.v2.LogSink.end_time",
- index=10,
+ index=12,
number=11,
type=11,
cpp_type=10,
@@ -280,8 +320,10 @@
],
extensions=[],
nested_types=[],
- enum_types=[_LOGSINK_VERSIONFORMAT],
- serialized_options=None,
+ enum_types=[_LOGSINK_VERSIONFORMAT,],
+ serialized_options=_b(
+ "\352A\270\001\n\033logging.googleapis.com/Sink\022\037projects/{project}/sinks/{sink}\022)organizations/{organization}/sinks/{sink}\022\035folders/{folder}/sinks/{sink}\022.billingAccounts/{billing_account}/sinks/{sink}"
+ ),
is_extendable=False,
syntax="proto3",
extension_ranges=[],
@@ -292,10 +334,10 @@
index=0,
containing_type=None,
fields=[],
- )
+ ),
],
- serialized_start=257,
- serialized_end=785,
+ serialized_start=317,
+ serialized_end=1098,
)
@@ -323,7 +365,25 @@
extension_scope=None,
serialized_options=None,
file=DESCRIPTOR,
- )
+ ),
+ _descriptor.FieldDescriptor(
+ name="uses_timestamp_column_partitioning",
+ full_name="google.logging.v2.BigQueryOptions.uses_timestamp_column_partitioning",
+ index=1,
+ number=3,
+ type=8,
+ cpp_type=7,
+ label=1,
+ has_default_value=False,
+ default_value=False,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=_b("\340A\003"),
+ file=DESCRIPTOR,
+ ),
],
extensions=[],
nested_types=[],
@@ -333,8 +393,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=787,
- serialized_end=836,
+ serialized_start=1100,
+ serialized_end=1198,
)
@@ -360,7 +420,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\035\022\033logging.googleapis.com/Sink"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -408,8 +470,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=838,
- serialized_end=911,
+ serialized_start=1200,
+ serialized_end=1310,
)
@@ -465,8 +527,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=913,
- serialized_end=1000,
+ serialized_start=1312,
+ serialized_end=1399,
)
@@ -492,9 +554,11 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\035\n\033logging.googleapis.com/Sink"
+ ),
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
nested_types=[],
@@ -504,8 +568,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1002,
- serialized_end=1037,
+ serialized_start=1401,
+ serialized_end=1473,
)
@@ -531,7 +595,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\035\022\033logging.googleapis.com/Sink"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -549,7 +615,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -579,8 +645,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1039,
- serialized_end=1148,
+ serialized_start=1476,
+ serialized_end=1627,
)
@@ -606,7 +672,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\035\n\033logging.googleapis.com/Sink"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -624,7 +692,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -672,8 +740,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1151,
- serialized_end=1312,
+ serialized_start=1630,
+ serialized_end=1833,
)
@@ -699,9 +767,11 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\035\n\033logging.googleapis.com/Sink"
+ ),
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
nested_types=[],
@@ -711,8 +781,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1314,
- serialized_end=1352,
+ serialized_start=1835,
+ serialized_end=1910,
)
@@ -835,13 +905,15 @@
extensions=[],
nested_types=[],
enum_types=[],
- serialized_options=None,
+ serialized_options=_b(
+ "\352A\345\001\n logging.googleapis.com/Exclusion\022)projects/{project}/exclusions/{exclusion}\0223organizations/{organization}/exclusions/{exclusion}\022'folders/{folder}/exclusions/{exclusion}\0228billingAccounts/{billing_account}/exclusions/{exclusion}"
+ ),
is_extendable=False,
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1355,
- serialized_end=1536,
+ serialized_start=1913,
+ serialized_end=2330,
)
@@ -867,7 +939,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ '\340A\002\372A"\022 logging.googleapis.com/Exclusion'
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -915,8 +989,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1538,
- serialized_end=1616,
+ serialized_start=2332,
+ serialized_end=2452,
)
@@ -972,8 +1046,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1618,
- serialized_end=1720,
+ serialized_start=2454,
+ serialized_end=2556,
)
@@ -999,9 +1073,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b('\340A\002\372A"\n logging.googleapis.com/Exclusion'),
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
nested_types=[],
@@ -1011,8 +1085,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1722,
- serialized_end=1757,
+ serialized_start=2558,
+ serialized_end=2635,
)
@@ -1038,7 +1112,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ '\340A\002\372A"\022 logging.googleapis.com/Exclusion'
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -1068,8 +1144,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1759,
- serialized_end=1851,
+ serialized_start=2638,
+ serialized_end=2772,
)
@@ -1095,7 +1171,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b('\340A\002\372A"\n logging.googleapis.com/Exclusion'),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -1113,7 +1189,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -1131,7 +1207,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
],
@@ -1143,8 +1219,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1854,
- serialized_end=1993,
+ serialized_start=2775,
+ serialized_end=2966,
)
@@ -1170,9 +1246,198 @@
containing_type=None,
is_extension=False,
extension_scope=None,
+ serialized_options=_b('\340A\002\372A"\n logging.googleapis.com/Exclusion'),
+ file=DESCRIPTOR,
+ ),
+ ],
+ extensions=[],
+ nested_types=[],
+ enum_types=[],
+ serialized_options=None,
+ is_extendable=False,
+ syntax="proto3",
+ extension_ranges=[],
+ oneofs=[],
+ serialized_start=2968,
+ serialized_end=3048,
+)
+
+
+_GETCMEKSETTINGSREQUEST = _descriptor.Descriptor(
+ name="GetCmekSettingsRequest",
+ full_name="google.logging.v2.GetCmekSettingsRequest",
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name="name",
+ full_name="google.logging.v2.GetCmekSettingsRequest.name",
+ index=0,
+ number=1,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode("utf-8"),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
+ ],
+ extensions=[],
+ nested_types=[],
+ enum_types=[],
+ serialized_options=None,
+ is_extendable=False,
+ syntax="proto3",
+ extension_ranges=[],
+ oneofs=[],
+ serialized_start=3050,
+ serialized_end=3088,
+)
+
+
+_UPDATECMEKSETTINGSREQUEST = _descriptor.Descriptor(
+ name="UpdateCmekSettingsRequest",
+ full_name="google.logging.v2.UpdateCmekSettingsRequest",
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name="name",
+ full_name="google.logging.v2.UpdateCmekSettingsRequest.name",
+ index=0,
+ number=1,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode("utf-8"),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
+ _descriptor.FieldDescriptor(
+ name="cmek_settings",
+ full_name="google.logging.v2.UpdateCmekSettingsRequest.cmek_settings",
+ index=1,
+ number=2,
+ type=11,
+ cpp_type=10,
+ label=1,
+ has_default_value=False,
+ default_value=None,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
+ _descriptor.FieldDescriptor(
+ name="update_mask",
+ full_name="google.logging.v2.UpdateCmekSettingsRequest.update_mask",
+ index=2,
+ number=3,
+ type=11,
+ cpp_type=10,
+ label=1,
+ has_default_value=False,
+ default_value=None,
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
+ ],
+ extensions=[],
+ nested_types=[],
+ enum_types=[],
+ serialized_options=None,
+ is_extendable=False,
+ syntax="proto3",
+ extension_ranges=[],
+ oneofs=[],
+ serialized_start=3091,
+ serialized_end=3237,
+)
+
+
+_CMEKSETTINGS = _descriptor.Descriptor(
+ name="CmekSettings",
+ full_name="google.logging.v2.CmekSettings",
+ filename=None,
+ file=DESCRIPTOR,
+ containing_type=None,
+ fields=[
+ _descriptor.FieldDescriptor(
+ name="name",
+ full_name="google.logging.v2.CmekSettings.name",
+ index=0,
+ number=1,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode("utf-8"),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
+ _descriptor.FieldDescriptor(
+ name="kms_key_name",
+ full_name="google.logging.v2.CmekSettings.kms_key_name",
+ index=1,
+ number=2,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode("utf-8"),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
serialized_options=None,
file=DESCRIPTOR,
- )
+ ),
+ _descriptor.FieldDescriptor(
+ name="service_account_id",
+ full_name="google.logging.v2.CmekSettings.service_account_id",
+ index=2,
+ number=3,
+ type=9,
+ cpp_type=9,
+ label=1,
+ has_default_value=False,
+ default_value=_b("").decode("utf-8"),
+ message_type=None,
+ enum_type=None,
+ containing_type=None,
+ is_extension=False,
+ extension_scope=None,
+ serialized_options=None,
+ file=DESCRIPTOR,
+ ),
],
extensions=[],
nested_types=[],
@@ -1182,8 +1447,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1995,
- serialized_end=2033,
+ serialized_start=3239,
+ serialized_end=3317,
)
_LOGSINK.fields_by_name["output_version_format"].enum_type = _LOGSINK_VERSIONFORMAT
@@ -1225,6 +1490,10 @@
_UPDATEEXCLUSIONREQUEST.fields_by_name[
"update_mask"
].message_type = google_dot_protobuf_dot_field__mask__pb2._FIELDMASK
+_UPDATECMEKSETTINGSREQUEST.fields_by_name["cmek_settings"].message_type = _CMEKSETTINGS
+_UPDATECMEKSETTINGSREQUEST.fields_by_name[
+ "update_mask"
+].message_type = google_dot_protobuf_dot_field__mask__pb2._FIELDMASK
DESCRIPTOR.message_types_by_name["LogSink"] = _LOGSINK
DESCRIPTOR.message_types_by_name["BigQueryOptions"] = _BIGQUERYOPTIONS
DESCRIPTOR.message_types_by_name["ListSinksRequest"] = _LISTSINKSREQUEST
@@ -1240,6 +1509,11 @@
DESCRIPTOR.message_types_by_name["CreateExclusionRequest"] = _CREATEEXCLUSIONREQUEST
DESCRIPTOR.message_types_by_name["UpdateExclusionRequest"] = _UPDATEEXCLUSIONREQUEST
DESCRIPTOR.message_types_by_name["DeleteExclusionRequest"] = _DELETEEXCLUSIONREQUEST
+DESCRIPTOR.message_types_by_name["GetCmekSettingsRequest"] = _GETCMEKSETTINGSREQUEST
+DESCRIPTOR.message_types_by_name[
+ "UpdateCmekSettingsRequest"
+] = _UPDATECMEKSETTINGSREQUEST
+DESCRIPTOR.message_types_by_name["CmekSettings"] = _CMEKSETTINGS
_sym_db.RegisterFileDescriptor(DESCRIPTOR)
LogSink = _reflection.GeneratedProtocolMessageType(
@@ -1248,11 +1522,11 @@
dict(
DESCRIPTOR=_LOGSINK,
__module__="google.cloud.logging_v2.proto.logging_config_pb2",
- __doc__="""Describes a sink used to export log entries to one of the following
- destinations in any project: a Cloud Storage bucket, a BigQuery dataset,
- or a Cloud Pub/Sub topic. A logs filter controls which log entries are
- exported. The sink must be created within a project, organization,
- billing account, or folder.
+ __doc__="""Describes a sink used to export log entries to one of the
+ following destinations in any project: a Cloud Storage bucket, a
+ BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which
+ log entries are exported. The sink must be created within a project,
+ organization, billing account, or folder.
Attributes:
@@ -1261,7 +1535,8 @@
the project. Example: ``"my-syslog-errors-to-pubsub"``. Sink
identifiers are limited to 100 characters and can include only
the following characters: upper and lower-case alphanumeric
- characters, underscores, hyphens, and periods.
+ characters, underscores, hyphens, and periods. First character
+ has to be alphanumeric.
destination:
Required. The export destination: ::
"storage.googleapis.com/[GCS_BUCKET]" "bigquery.googleapis
@@ -1278,6 +1553,12 @@
and that match the filter. For example: ::
logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND
severity>=ERROR
+ description:
+ Optional. A description of this sink. The maximum length of
+ the description is 8000 characters.
+ disabled:
+ Optional. If set to True, then this sink is disabled and it
+ does not export any log entries.
output_version_format:
Deprecated. The log entry format to use for this sink's
exported log entries. The v2 format is used by default and
@@ -1352,6 +1633,14 @@
`__ has to be used
instead. In both cases, tables are sharded based on UTC
timezone.
+ uses_timestamp_column_partitioning:
+ 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 meaning
+ and will be false. Legacy sinks using partitioned tables will
+ have this field set to false.
""",
# @@protoc_insertion_point(class_scope:google.logging.v2.BigQueryOptions)
),
@@ -1558,12 +1847,12 @@
dict(
DESCRIPTOR=_LOGEXCLUSION,
__module__="google.cloud.logging_v2.proto.logging_config_pb2",
- __doc__="""Specifies a set of log entries that are not to be stored in Logging. If
- your GCP resource receives a large volume of logs, you can use
- exclusions to reduce your chargeable logs. Exclusions are processed
- after log sinks, so you can export log entries before they are excluded.
- Note that organization-level and folder-level exclusions don't apply to
- child resources, and that you can't exclude audit log entries.
+ __doc__="""Specifies a set of log entries that are not to be stored
+ in Logging. If your GCP resource receives a large volume of logs, you
+ can use exclusions to reduce your chargeable logs. Exclusions are
+ processed after log sinks, so you can export log entries before they are
+ excluded. Note that organization-level and folder-level exclusions don't
+ apply to child resources, and that you can't exclude audit log entries.
Attributes:
@@ -1571,7 +1860,7 @@
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.
+ hyphens, and periods. First character has to be alphanumeric.
description:
Optional. A description of this exclusion.
filter:
@@ -1769,11 +2058,162 @@
)
_sym_db.RegisterMessage(DeleteExclusionRequest)
+GetCmekSettingsRequest = _reflection.GeneratedProtocolMessageType(
+ "GetCmekSettingsRequest",
+ (_message.Message,),
+ dict(
+ DESCRIPTOR=_GETCMEKSETTINGSREQUEST,
+ __module__="google.cloud.logging_v2.proto.logging_config_pb2",
+ __doc__="""The parameters to
+ [GetCmekSettings][google.logging.v2.ConfigServiceV2.GetCmekSettings].
+
+ See `Enabling CMEK for Logs
+ Router `__ for more
+ information.
+
+
+ Attributes:
+ name:
+ Required. The resource for which to retrieve CMEK settings.
+ :: "projects/[PROJECT_ID]/cmekSettings"
+ "organizations/[ORGANIZATION_ID]/cmekSettings"
+ "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
+ "folders/[FOLDER_ID]/cmekSettings" Example:
+ ``"organizations/12345/cmekSettings"``. Note: CMEK for the
+ Logs Router can currently only be configured for GCP
+ organizations. Once configured, it applies to all projects and
+ folders in the GCP organization.
+ """,
+ # @@protoc_insertion_point(class_scope:google.logging.v2.GetCmekSettingsRequest)
+ ),
+)
+_sym_db.RegisterMessage(GetCmekSettingsRequest)
+
+UpdateCmekSettingsRequest = _reflection.GeneratedProtocolMessageType(
+ "UpdateCmekSettingsRequest",
+ (_message.Message,),
+ dict(
+ DESCRIPTOR=_UPDATECMEKSETTINGSREQUEST,
+ __module__="google.cloud.logging_v2.proto.logging_config_pb2",
+ __doc__="""The parameters to
+ [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings].
+
+ See `Enabling CMEK for Logs
+ Router `__ for more
+ information.
+
+
+ Attributes:
+ name:
+ Required. The resource name for the CMEK settings to update.
+ :: "projects/[PROJECT_ID]/cmekSettings"
+ "organizations/[ORGANIZATION_ID]/cmekSettings"
+ "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
+ "folders/[FOLDER_ID]/cmekSettings" Example:
+ ``"organizations/12345/cmekSettings"``. Note: CMEK for the
+ Logs Router can currently only be configured for GCP
+ organizations. Once configured, it applies to all projects and
+ folders in the GCP organization.
+ cmek_settings:
+ Required. The CMEK settings to update. See `Enabling CMEK for
+ Logs Router `__ for
+ more information.
+ update_mask:
+ Optional. Field mask identifying which fields from
+ ``cmek_settings`` should be updated. A field will be
+ overwritten if and only if it is in the update mask. Output
+ only fields cannot be updated. See
+ [FieldMask][google.protobuf.FieldMask] for more information.
+ Example: ``"updateMask=kmsKeyName"``
+ """,
+ # @@protoc_insertion_point(class_scope:google.logging.v2.UpdateCmekSettingsRequest)
+ ),
+)
+_sym_db.RegisterMessage(UpdateCmekSettingsRequest)
+
+CmekSettings = _reflection.GeneratedProtocolMessageType(
+ "CmekSettings",
+ (_message.Message,),
+ dict(
+ DESCRIPTOR=_CMEKSETTINGS,
+ __module__="google.cloud.logging_v2.proto.logging_config_pb2",
+ __doc__="""Describes the customer-managed encryption key (CMEK)
+ settings associated with a project, folder, organization, billing
+ account, or flexible resource.
+
+ Note: CMEK for the Logs Router can currently only be configured for GCP
+ organizations. Once configured, it applies to all projects and folders
+ in the GCP organization.
+
+ See `Enabling CMEK for Logs
+ Router `__ for more
+ information.
+
+
+ Attributes:
+ name:
+ Output Only. The resource name of the CMEK settings.
+ kms_key_name:
+ The resource name for the configured Cloud KMS key. KMS key
+ name format: "projects/[PROJECT\_ID]/locations/[LOCATION]/keyR
+ ings/[KEYRING]/cryptoKeys/[KEY]" For example: ``"projects/my-
+ project-id/locations/my-region/keyRings/key-ring-
+ name/cryptoKeys/key-name"`` To enable CMEK for the Logs
+ Router, set this field to a valid ``kms_key_name`` for which
+ the associated service account has the required
+ ``roles/cloudkms.cryptoKeyEncrypterDecrypter`` role assigned
+ for the key. The Cloud KMS key used by the Log Router can be
+ updated by changing the ``kms_key_name`` to a new valid key
+ name. Encryption operations that are in progress will be
+ completed with the key that was in use when they started.
+ Decryption operations will be completed using the key that was
+ used at the time of encryption unless access to that key has
+ been revoked. To disable CMEK for the Logs Router, set this
+ field to an empty string. See `Enabling CMEK for Logs Router
+ `__ for more
+ information.
+ service_account_id:
+ Output Only. The service account that will be used by the Logs
+ Router to access your Cloud KMS key. Before enabling CMEK for
+ Logs Router, you must first assign the role
+ ``roles/cloudkms.cryptoKeyEncrypterDecrypter`` to the service
+ account that the Logs Router will use to access your Cloud KMS
+ key. Use [GetCmekSettings][google.logging.v2.ConfigServiceV2.G
+ etCmekSettings] to obtain the service account ID. See
+ `Enabling CMEK for Logs Router `__ for more information.
+ """,
+ # @@protoc_insertion_point(class_scope:google.logging.v2.CmekSettings)
+ ),
+)
+_sym_db.RegisterMessage(CmekSettings)
+
DESCRIPTOR._options = None
+_LOGSINK.fields_by_name["destination"]._options = None
_LOGSINK.fields_by_name["output_version_format"]._options = None
+_LOGSINK.fields_by_name["writer_identity"]._options = None
+_LOGSINK.fields_by_name["create_time"]._options = None
+_LOGSINK.fields_by_name["update_time"]._options = None
_LOGSINK.fields_by_name["start_time"]._options = None
_LOGSINK.fields_by_name["end_time"]._options = None
+_LOGSINK._options = None
+_BIGQUERYOPTIONS.fields_by_name["uses_timestamp_column_partitioning"]._options = None
+_LISTSINKSREQUEST.fields_by_name["parent"]._options = None
+_GETSINKREQUEST.fields_by_name["sink_name"]._options = None
+_CREATESINKREQUEST.fields_by_name["parent"]._options = None
+_CREATESINKREQUEST.fields_by_name["sink"]._options = None
+_UPDATESINKREQUEST.fields_by_name["sink_name"]._options = None
+_UPDATESINKREQUEST.fields_by_name["sink"]._options = None
+_DELETESINKREQUEST.fields_by_name["sink_name"]._options = None
+_LOGEXCLUSION._options = None
+_LISTEXCLUSIONSREQUEST.fields_by_name["parent"]._options = None
+_GETEXCLUSIONREQUEST.fields_by_name["name"]._options = None
+_CREATEEXCLUSIONREQUEST.fields_by_name["parent"]._options = None
+_UPDATEEXCLUSIONREQUEST.fields_by_name["name"]._options = None
+_UPDATEEXCLUSIONREQUEST.fields_by_name["exclusion"]._options = None
+_UPDATEEXCLUSIONREQUEST.fields_by_name["update_mask"]._options = None
+_DELETEEXCLUSIONREQUEST.fields_by_name["name"]._options = None
_CONFIGSERVICEV2 = _descriptor.ServiceDescriptor(
name="ConfigServiceV2",
@@ -1783,8 +2223,8 @@
serialized_options=_b(
"\312A\026logging.googleapis.com\322A\302\001https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read"
),
- serialized_start=2036,
- serialized_end=5482,
+ serialized_start=3320,
+ serialized_end=7318,
methods=[
_descriptor.MethodDescriptor(
name="ListSinks",
@@ -1794,7 +2234,7 @@
input_type=_LISTSINKSREQUEST,
output_type=_LISTSINKSRESPONSE,
serialized_options=_b(
- '\202\323\344\223\002\247\001\022\026/v2/{parent=*/*}/sinksZ\037\022\035/v2/{parent=projects/*}/sinksZ$\022"/v2/{parent=organizations/*}/sinksZ\036\022\034/v2/{parent=folders/*}/sinksZ&\022$/v2/{parent=billingAccounts/*}/sinks'
+ '\202\323\344\223\002\247\001\022\026/v2/{parent=*/*}/sinksZ\037\022\035/v2/{parent=projects/*}/sinksZ$\022"/v2/{parent=organizations/*}/sinksZ\036\022\034/v2/{parent=folders/*}/sinksZ&\022$/v2/{parent=billingAccounts/*}/sinks\332A\006parent'
),
),
_descriptor.MethodDescriptor(
@@ -1805,7 +2245,7 @@
input_type=_GETSINKREQUEST,
output_type=_LOGSINK,
serialized_options=_b(
- "\202\323\344\223\002\300\001\022\033/v2/{sink_name=*/*/sinks/*}Z$\022\"/v2/{sink_name=projects/*/sinks/*}Z)\022'/v2/{sink_name=organizations/*/sinks/*}Z#\022!/v2/{sink_name=folders/*/sinks/*}Z+\022)/v2/{sink_name=billingAccounts/*/sinks/*}"
+ "\202\323\344\223\002\300\001\022\033/v2/{sink_name=*/*/sinks/*}Z$\022\"/v2/{sink_name=projects/*/sinks/*}Z)\022'/v2/{sink_name=organizations/*/sinks/*}Z#\022!/v2/{sink_name=folders/*/sinks/*}Z+\022)/v2/{sink_name=billingAccounts/*/sinks/*}\332A\tsink_name"
),
),
_descriptor.MethodDescriptor(
@@ -1816,7 +2256,7 @@
input_type=_CREATESINKREQUEST,
output_type=_LOGSINK,
serialized_options=_b(
- '\202\323\344\223\002\305\001"\026/v2/{parent=*/*}/sinks:\004sinkZ%"\035/v2/{parent=projects/*}/sinks:\004sinkZ*""/v2/{parent=organizations/*}/sinks:\004sinkZ$"\034/v2/{parent=folders/*}/sinks:\004sinkZ,"$/v2/{parent=billingAccounts/*}/sinks:\004sink'
+ '\202\323\344\223\002\305\001"\026/v2/{parent=*/*}/sinks:\004sinkZ%"\035/v2/{parent=projects/*}/sinks:\004sinkZ*""/v2/{parent=organizations/*}/sinks:\004sinkZ$"\034/v2/{parent=folders/*}/sinks:\004sinkZ,"$/v2/{parent=billingAccounts/*}/sinks:\004sink\332A\013parent,sink'
),
),
_descriptor.MethodDescriptor(
@@ -1827,7 +2267,7 @@
input_type=_UPDATESINKREQUEST,
output_type=_LOGSINK,
serialized_options=_b(
- "\202\323\344\223\002\231\003\032\033/v2/{sink_name=*/*/sinks/*}:\004sinkZ*\032\"/v2/{sink_name=projects/*/sinks/*}:\004sinkZ/\032'/v2/{sink_name=organizations/*/sinks/*}:\004sinkZ)\032!/v2/{sink_name=folders/*/sinks/*}:\004sinkZ1\032)/v2/{sink_name=billingAccounts/*/sinks/*}:\004sinkZ*2\"/v2/{sink_name=projects/*/sinks/*}:\004sinkZ/2'/v2/{sink_name=organizations/*/sinks/*}:\004sinkZ)2!/v2/{sink_name=folders/*/sinks/*}:\004sinkZ12)/v2/{sink_name=billingAccounts/*/sinks/*}:\004sink"
+ "\202\323\344\223\002\231\003\032\033/v2/{sink_name=*/*/sinks/*}:\004sinkZ*\032\"/v2/{sink_name=projects/*/sinks/*}:\004sinkZ/\032'/v2/{sink_name=organizations/*/sinks/*}:\004sinkZ)\032!/v2/{sink_name=folders/*/sinks/*}:\004sinkZ1\032)/v2/{sink_name=billingAccounts/*/sinks/*}:\004sinkZ*2\"/v2/{sink_name=projects/*/sinks/*}:\004sinkZ/2'/v2/{sink_name=organizations/*/sinks/*}:\004sinkZ)2!/v2/{sink_name=folders/*/sinks/*}:\004sinkZ12)/v2/{sink_name=billingAccounts/*/sinks/*}:\004sink\332A\032sink_name,sink,update_mask\332A\016sink_name,sink"
),
),
_descriptor.MethodDescriptor(
@@ -1838,7 +2278,7 @@
input_type=_DELETESINKREQUEST,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=_b(
- "\202\323\344\223\002\300\001*\033/v2/{sink_name=*/*/sinks/*}Z$*\"/v2/{sink_name=projects/*/sinks/*}Z)*'/v2/{sink_name=organizations/*/sinks/*}Z#*!/v2/{sink_name=folders/*/sinks/*}Z+*)/v2/{sink_name=billingAccounts/*/sinks/*}"
+ "\202\323\344\223\002\300\001*\033/v2/{sink_name=*/*/sinks/*}Z$*\"/v2/{sink_name=projects/*/sinks/*}Z)*'/v2/{sink_name=organizations/*/sinks/*}Z#*!/v2/{sink_name=folders/*/sinks/*}Z+*)/v2/{sink_name=billingAccounts/*/sinks/*}\332A\tsink_name"
),
),
_descriptor.MethodDescriptor(
@@ -1849,7 +2289,7 @@
input_type=_LISTEXCLUSIONSREQUEST,
output_type=_LISTEXCLUSIONSRESPONSE,
serialized_options=_b(
- "\202\323\344\223\002\300\001\022\033/v2/{parent=*/*}/exclusionsZ$\022\"/v2/{parent=projects/*}/exclusionsZ)\022'/v2/{parent=organizations/*}/exclusionsZ#\022!/v2/{parent=folders/*}/exclusionsZ+\022)/v2/{parent=billingAccounts/*}/exclusions"
+ "\202\323\344\223\002\300\001\022\033/v2/{parent=*/*}/exclusionsZ$\022\"/v2/{parent=projects/*}/exclusionsZ)\022'/v2/{parent=organizations/*}/exclusionsZ#\022!/v2/{parent=folders/*}/exclusionsZ+\022)/v2/{parent=billingAccounts/*}/exclusions\332A\006parent"
),
),
_descriptor.MethodDescriptor(
@@ -1860,7 +2300,7 @@
input_type=_GETEXCLUSIONREQUEST,
output_type=_LOGEXCLUSION,
serialized_options=_b(
- "\202\323\344\223\002\300\001\022\033/v2/{name=*/*/exclusions/*}Z$\022\"/v2/{name=projects/*/exclusions/*}Z)\022'/v2/{name=organizations/*/exclusions/*}Z#\022!/v2/{name=folders/*/exclusions/*}Z+\022)/v2/{name=billingAccounts/*/exclusions/*}"
+ "\202\323\344\223\002\300\001\022\033/v2/{name=*/*/exclusions/*}Z$\022\"/v2/{name=projects/*/exclusions/*}Z)\022'/v2/{name=organizations/*/exclusions/*}Z#\022!/v2/{name=folders/*/exclusions/*}Z+\022)/v2/{name=billingAccounts/*/exclusions/*}\332A\004name"
),
),
_descriptor.MethodDescriptor(
@@ -1871,7 +2311,7 @@
input_type=_CREATEEXCLUSIONREQUEST,
output_type=_LOGEXCLUSION,
serialized_options=_b(
- '\202\323\344\223\002\367\001"\033/v2/{parent=*/*}/exclusions:\texclusionZ/""/v2/{parent=projects/*}/exclusions:\texclusionZ4"\'/v2/{parent=organizations/*}/exclusions:\texclusionZ."!/v2/{parent=folders/*}/exclusions:\texclusionZ6")/v2/{parent=billingAccounts/*}/exclusions:\texclusion'
+ '\202\323\344\223\002\367\001"\033/v2/{parent=*/*}/exclusions:\texclusionZ/""/v2/{parent=projects/*}/exclusions:\texclusionZ4"\'/v2/{parent=organizations/*}/exclusions:\texclusionZ."!/v2/{parent=folders/*}/exclusions:\texclusionZ6")/v2/{parent=billingAccounts/*}/exclusions:\texclusion\332A\020parent,exclusion'
),
),
_descriptor.MethodDescriptor(
@@ -1882,7 +2322,7 @@
input_type=_UPDATEEXCLUSIONREQUEST,
output_type=_LOGEXCLUSION,
serialized_options=_b(
- "\202\323\344\223\002\367\0012\033/v2/{name=*/*/exclusions/*}:\texclusionZ/2\"/v2/{name=projects/*/exclusions/*}:\texclusionZ42'/v2/{name=organizations/*/exclusions/*}:\texclusionZ.2!/v2/{name=folders/*/exclusions/*}:\texclusionZ62)/v2/{name=billingAccounts/*/exclusions/*}:\texclusion"
+ "\202\323\344\223\002\367\0012\033/v2/{name=*/*/exclusions/*}:\texclusionZ/2\"/v2/{name=projects/*/exclusions/*}:\texclusionZ42'/v2/{name=organizations/*/exclusions/*}:\texclusionZ.2!/v2/{name=folders/*/exclusions/*}:\texclusionZ62)/v2/{name=billingAccounts/*/exclusions/*}:\texclusion\332A\032name,exclusion,update_mask"
),
),
_descriptor.MethodDescriptor(
@@ -1893,7 +2333,29 @@
input_type=_DELETEEXCLUSIONREQUEST,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=_b(
- "\202\323\344\223\002\300\001*\033/v2/{name=*/*/exclusions/*}Z$*\"/v2/{name=projects/*/exclusions/*}Z)*'/v2/{name=organizations/*/exclusions/*}Z#*!/v2/{name=folders/*/exclusions/*}Z+*)/v2/{name=billingAccounts/*/exclusions/*}"
+ "\202\323\344\223\002\300\001*\033/v2/{name=*/*/exclusions/*}Z$*\"/v2/{name=projects/*/exclusions/*}Z)*'/v2/{name=organizations/*/exclusions/*}Z#*!/v2/{name=folders/*/exclusions/*}Z+*)/v2/{name=billingAccounts/*/exclusions/*}\332A\004name"
+ ),
+ ),
+ _descriptor.MethodDescriptor(
+ name="GetCmekSettings",
+ full_name="google.logging.v2.ConfigServiceV2.GetCmekSettings",
+ index=10,
+ containing_service=None,
+ input_type=_GETCMEKSETTINGSREQUEST,
+ output_type=_CMEKSETTINGS,
+ serialized_options=_b(
+ "\202\323\344\223\002H\022\033/v2/{name=*/*}/cmekSettingsZ)\022'/v2/{name=organizations/*}/cmekSettings"
+ ),
+ ),
+ _descriptor.MethodDescriptor(
+ name="UpdateCmekSettings",
+ full_name="google.logging.v2.ConfigServiceV2.UpdateCmekSettings",
+ index=11,
+ containing_service=None,
+ input_type=_UPDATECMEKSETTINGSREQUEST,
+ output_type=_CMEKSETTINGS,
+ serialized_options=_b(
+ "\202\323\344\223\002f2\033/v2/{name=*/*}/cmekSettings:\rcmek_settingsZ82'/v2/{name=organizations/*}/cmekSettings:\rcmek_settings"
),
),
],
diff --git a/google/cloud/logging_v2/proto/logging_config_pb2_grpc.py b/google/cloud/logging_v2/proto/logging_config_pb2_grpc.py
index b250dc7de..c2e910e19 100644
--- a/google/cloud/logging_v2/proto/logging_config_pb2_grpc.py
+++ b/google/cloud/logging_v2/proto/logging_config_pb2_grpc.py
@@ -67,6 +67,16 @@ def __init__(self, channel):
request_serializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.DeleteExclusionRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
+ self.GetCmekSettings = channel.unary_unary(
+ "/google.logging.v2.ConfigServiceV2/GetCmekSettings",
+ request_serializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.GetCmekSettingsRequest.SerializeToString,
+ response_deserializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.CmekSettings.FromString,
+ )
+ self.UpdateCmekSettings = channel.unary_unary(
+ "/google.logging.v2.ConfigServiceV2/UpdateCmekSettings",
+ request_serializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.UpdateCmekSettingsRequest.SerializeToString,
+ response_deserializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.CmekSettings.FromString,
+ )
class ConfigServiceV2Servicer(object):
@@ -153,6 +163,40 @@ def DeleteExclusion(self, request, context):
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
+ def GetCmekSettings(self, request, context):
+ """Gets the Logs Router CMEK settings for the given resource.
+
+ Note: CMEK for the Logs Router can currently only be configured for GCP
+ organizations. Once configured, it applies to all projects and folders in
+ the GCP organization.
+
+ See [Enabling CMEK for Logs
+ Router](/logging/docs/routing/managed-encryption) for more information.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details("Method not implemented!")
+ raise NotImplementedError("Method not implemented!")
+
+ def UpdateCmekSettings(self, request, context):
+ """Updates the Logs Router CMEK settings for the given resource.
+
+ Note: CMEK for the Logs Router can currently only be configured for GCP
+ organizations. Once configured, it applies to all projects and folders in
+ the GCP organization.
+
+ [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings]
+ will fail if 1) `kms_key_name` is invalid, or 2) the associated service
+ account does not have the required
+ `roles/cloudkms.cryptoKeyEncrypterDecrypter` role assigned for the key, or
+ 3) access to the key is disabled.
+
+ See [Enabling CMEK for Logs
+ Router](/logging/docs/routing/managed-encryption) for more information.
+ """
+ context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+ context.set_details("Method not implemented!")
+ raise NotImplementedError("Method not implemented!")
+
def add_ConfigServiceV2Servicer_to_server(servicer, server):
rpc_method_handlers = {
@@ -206,6 +250,16 @@ def add_ConfigServiceV2Servicer_to_server(servicer, server):
request_deserializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.DeleteExclusionRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
+ "GetCmekSettings": grpc.unary_unary_rpc_method_handler(
+ servicer.GetCmekSettings,
+ request_deserializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.GetCmekSettingsRequest.FromString,
+ response_serializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.CmekSettings.SerializeToString,
+ ),
+ "UpdateCmekSettings": grpc.unary_unary_rpc_method_handler(
+ servicer.UpdateCmekSettings,
+ request_deserializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.UpdateCmekSettingsRequest.FromString,
+ response_serializer=google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.CmekSettings.SerializeToString,
+ ),
}
generic_handler = grpc.method_handlers_generic_handler(
"google.logging.v2.ConfigServiceV2", rpc_method_handlers
diff --git a/google/cloud/logging_v2/proto/logging_metrics.proto b/google/cloud/logging_v2/proto/logging_metrics.proto
index 0c294b101..582c067e6 100644
--- a/google/cloud/logging_v2/proto/logging_metrics.proto
+++ b/google/cloud/logging_v2/proto/logging_metrics.proto
@@ -17,13 +17,16 @@ syntax = "proto3";
package google.logging.v2;
+import "google/api/client.proto";
import "google/api/distribution.proto";
+import "google/api/field_behavior.proto";
import "google/api/metric.proto";
+import "google/api/resource.proto";
+import "google/protobuf/duration.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
-import "google/api/client.proto";
option cc_enable_arenas = true;
option csharp_namespace = "Google.Cloud.Logging.V2";
@@ -48,6 +51,7 @@ service MetricsServiceV2 {
option (google.api.http) = {
get: "/v2/{parent=projects/*}/metrics"
};
+ option (google.api.method_signature) = "parent";
}
// Gets a logs-based metric.
@@ -55,6 +59,7 @@ service MetricsServiceV2 {
option (google.api.http) = {
get: "/v2/{metric_name=projects/*/metrics/*}"
};
+ option (google.api.method_signature) = "metric_name";
}
// Creates a logs-based metric.
@@ -63,6 +68,7 @@ service MetricsServiceV2 {
post: "/v2/{parent=projects/*}/metrics"
body: "metric"
};
+ option (google.api.method_signature) = "parent,metric";
}
// Creates or updates a logs-based metric.
@@ -71,6 +77,7 @@ service MetricsServiceV2 {
put: "/v2/{metric_name=projects/*/metrics/*}"
body: "metric"
};
+ option (google.api.method_signature) = "metric_name,metric";
}
// Deletes a logs-based metric.
@@ -78,6 +85,7 @@ service MetricsServiceV2 {
option (google.api.http) = {
delete: "/v2/{metric_name=projects/*/metrics/*}"
};
+ option (google.api.method_signature) = "metric_name";
}
}
@@ -89,6 +97,11 @@ service MetricsServiceV2 {
// extracted values along with an optional histogram of the values as specified
// by the bucket options.
message LogMetric {
+ option (google.api.resource) = {
+ type: "logging.googleapis.com/Metric"
+ pattern: "projects/{project}/metrics/{metric}"
+ };
+
// Logging API version.
enum ApiVersion {
// Logging API v2.
@@ -211,7 +224,12 @@ message ListLogMetricsRequest {
// Required. The name of the project containing the metrics:
//
// "projects/[PROJECT_ID]"
- string parent = 1;
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "cloudresourcemanager.googleapis.com/Project"
+ }
+ ];
// Optional. If present, then retrieve the next batch of results from the
// preceding call to this method. `pageToken` must be the value of
@@ -238,45 +256,65 @@ message ListLogMetricsResponse {
// The parameters to GetLogMetric.
message GetLogMetricRequest {
- // The resource name of the desired metric:
+ // Required. The resource name of the desired metric:
//
// "projects/[PROJECT_ID]/metrics/[METRIC_ID]"
- string metric_name = 1;
+ string metric_name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Metric"
+ }
+ ];
}
// The parameters to CreateLogMetric.
message CreateLogMetricRequest {
- // The resource name of the project in which to create the metric:
+ // Required. The resource name of the project in which to create the metric:
//
// "projects/[PROJECT_ID]"
//
// The new metric must be provided in the request.
- string parent = 1;
-
- // The new logs-based metric, which must not have an identifier that
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Metric"
+ }
+ ];
+
+ // Required. The new logs-based metric, which must not have an identifier that
// already exists.
- LogMetric metric = 2;
+ LogMetric metric = 2 [(google.api.field_behavior) = REQUIRED];
}
// The parameters to UpdateLogMetric.
message UpdateLogMetricRequest {
- // The resource name of the metric to update:
+ // Required. The resource name of the metric to update:
//
// "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
// does not exist in `[PROJECT_ID]`, then a new metric is created.
- string metric_name = 1;
-
- // The updated metric.
- LogMetric metric = 2;
+ string metric_name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Metric"
+ }
+ ];
+
+ // Required. The updated metric.
+ LogMetric metric = 2 [(google.api.field_behavior) = REQUIRED];
}
// The parameters to DeleteLogMetric.
message DeleteLogMetricRequest {
- // The resource name of the metric to delete:
+ // Required. The resource name of the metric to delete:
//
// "projects/[PROJECT_ID]/metrics/[METRIC_ID]"
- string metric_name = 1;
+ string metric_name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "logging.googleapis.com/Metric"
+ }
+ ];
}
diff --git a/google/cloud/logging_v2/proto/logging_metrics_pb2.py b/google/cloud/logging_v2/proto/logging_metrics_pb2.py
index 3fd3fcead..01e308fb7 100644
--- a/google/cloud/logging_v2/proto/logging_metrics_pb2.py
+++ b/google/cloud/logging_v2/proto/logging_metrics_pb2.py
@@ -15,13 +15,16 @@
_sym_db = _symbol_database.Default()
+from google.api import client_pb2 as google_dot_api_dot_client__pb2
from google.api import distribution_pb2 as google_dot_api_dot_distribution__pb2
+from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2
from google.api import metric_pb2 as google_dot_api_dot_metric__pb2
+from google.api import resource_pb2 as google_dot_api_dot_resource__pb2
+from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
-from google.api import client_pb2 as google_dot_api_dot_client__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
@@ -32,16 +35,19 @@
"\n\025com.google.logging.v2B\023LoggingMetricsProtoP\001Z8google.golang.org/genproto/googleapis/logging/v2;logging\370\001\001\252\002\027Google.Cloud.Logging.V2\312\002\027Google\\Cloud\\Logging\\V2"
),
serialized_pb=_b(
- '\n3google/cloud/logging_v2/proto/logging_metrics.proto\x12\x11google.logging.v2\x1a\x1dgoogle/api/distribution.proto\x1a\x17google/api/metric.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto"\x93\x04\n\tLogMetric\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x37\n\x11metric_descriptor\x18\x05 \x01(\x0b\x32\x1c.google.api.MetricDescriptor\x12\x17\n\x0fvalue_extractor\x18\x06 \x01(\t\x12K\n\x10label_extractors\x18\x07 \x03(\x0b\x32\x31.google.logging.v2.LogMetric.LabelExtractorsEntry\x12>\n\x0e\x62ucket_options\x18\x08 \x01(\x0b\x32&.google.api.Distribution.BucketOptions\x12/\n\x0b\x63reate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\x07version\x18\x04 \x01(\x0e\x32\'.google.logging.v2.LogMetric.ApiVersionB\x02\x18\x01\x1a\x36\n\x14LabelExtractorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x1c\n\nApiVersion\x12\x06\n\x02V2\x10\x00\x12\x06\n\x02V1\x10\x01"N\n\x15ListLogMetricsRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05"`\n\x16ListLogMetricsResponse\x12-\n\x07metrics\x18\x01 \x03(\x0b\x32\x1c.google.logging.v2.LogMetric\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"*\n\x13GetLogMetricRequest\x12\x13\n\x0bmetric_name\x18\x01 \x01(\t"V\n\x16\x43reateLogMetricRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12,\n\x06metric\x18\x02 \x01(\x0b\x32\x1c.google.logging.v2.LogMetric"[\n\x16UpdateLogMetricRequest\x12\x13\n\x0bmetric_name\x18\x01 \x01(\t\x12,\n\x06metric\x18\x02 \x01(\x0b\x32\x1c.google.logging.v2.LogMetric"-\n\x16\x44\x65leteLogMetricRequest\x12\x13\n\x0bmetric_name\x18\x01 \x01(\t2\xe4\x07\n\x10MetricsServiceV2\x12\x8e\x01\n\x0eListLogMetrics\x12(.google.logging.v2.ListLogMetricsRequest\x1a).google.logging.v2.ListLogMetricsResponse"\'\x82\xd3\xe4\x93\x02!\x12\x1f/v2/{parent=projects/*}/metrics\x12\x84\x01\n\x0cGetLogMetric\x12&.google.logging.v2.GetLogMetricRequest\x1a\x1c.google.logging.v2.LogMetric".\x82\xd3\xe4\x93\x02(\x12&/v2/{metric_name=projects/*/metrics/*}\x12\x8b\x01\n\x0f\x43reateLogMetric\x12).google.logging.v2.CreateLogMetricRequest\x1a\x1c.google.logging.v2.LogMetric"/\x82\xd3\xe4\x93\x02)"\x1f/v2/{parent=projects/*}/metrics:\x06metric\x12\x92\x01\n\x0fUpdateLogMetric\x12).google.logging.v2.UpdateLogMetricRequest\x1a\x1c.google.logging.v2.LogMetric"6\x82\xd3\xe4\x93\x02\x30\x1a&/v2/{metric_name=projects/*/metrics/*}:\x06metric\x12\x84\x01\n\x0f\x44\x65leteLogMetric\x12).google.logging.v2.DeleteLogMetricRequest\x1a\x16.google.protobuf.Empty".\x82\xd3\xe4\x93\x02(*&/v2/{metric_name=projects/*/metrics/*}\x1a\x8d\x02\xca\x41\x16logging.googleapis.com\xd2\x41\xf0\x01https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read,https://www.googleapis.com/auth/logging.writeB\x9f\x01\n\x15\x63om.google.logging.v2B\x13LoggingMetricsProtoP\x01Z8google.golang.org/genproto/googleapis/logging/v2;logging\xf8\x01\x01\xaa\x02\x17Google.Cloud.Logging.V2\xca\x02\x17Google\\Cloud\\Logging\\V2b\x06proto3'
+ '\n3google/cloud/logging_v2/proto/logging_metrics.proto\x12\x11google.logging.v2\x1a\x17google/api/client.proto\x1a\x1dgoogle/api/distribution.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x17google/api/metric.proto\x1a\x19google/api/resource.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/api/annotations.proto"\xdc\x04\n\tLogMetric\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x03 \x01(\t\x12\x37\n\x11metric_descriptor\x18\x05 \x01(\x0b\x32\x1c.google.api.MetricDescriptor\x12\x17\n\x0fvalue_extractor\x18\x06 \x01(\t\x12K\n\x10label_extractors\x18\x07 \x03(\x0b\x32\x31.google.logging.v2.LogMetric.LabelExtractorsEntry\x12>\n\x0e\x62ucket_options\x18\x08 \x01(\x0b\x32&.google.api.Distribution.BucketOptions\x12/\n\x0b\x63reate_time\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0bupdate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12<\n\x07version\x18\x04 \x01(\x0e\x32\'.google.logging.v2.LogMetric.ApiVersionB\x02\x18\x01\x1a\x36\n\x14LabelExtractorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x1c\n\nApiVersion\x12\x06\n\x02V2\x10\x00\x12\x06\n\x02V1\x10\x01:G\xea\x41\x44\n\x1dlogging.googleapis.com/Metric\x12#projects/{project}/metrics/{metric}"\x83\x01\n\x15ListLogMetricsRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x12\n\npage_token\x18\x02 \x01(\t\x12\x11\n\tpage_size\x18\x03 \x01(\x05"`\n\x16ListLogMetricsResponse\x12-\n\x07metrics\x18\x01 \x03(\x0b\x32\x1c.google.logging.v2.LogMetric\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"Q\n\x13GetLogMetricRequest\x12:\n\x0bmetric_name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1dlogging.googleapis.com/Metric"\x82\x01\n\x16\x43reateLogMetricRequest\x12\x35\n\x06parent\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1dlogging.googleapis.com/Metric\x12\x31\n\x06metric\x18\x02 \x01(\x0b\x32\x1c.google.logging.v2.LogMetricB\x03\xe0\x41\x02"\x87\x01\n\x16UpdateLogMetricRequest\x12:\n\x0bmetric_name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1dlogging.googleapis.com/Metric\x12\x31\n\x06metric\x18\x02 \x01(\x0b\x32\x1c.google.logging.v2.LogMetricB\x03\xe0\x41\x02"T\n\x16\x44\x65leteLogMetricRequest\x12:\n\x0bmetric_name\x18\x01 \x01(\tB%\xe0\x41\x02\xfa\x41\x1f\n\x1dlogging.googleapis.com/Metric2\xae\x08\n\x10MetricsServiceV2\x12\x97\x01\n\x0eListLogMetrics\x12(.google.logging.v2.ListLogMetricsRequest\x1a).google.logging.v2.ListLogMetricsResponse"0\x82\xd3\xe4\x93\x02!\x12\x1f/v2/{parent=projects/*}/metrics\xda\x41\x06parent\x12\x92\x01\n\x0cGetLogMetric\x12&.google.logging.v2.GetLogMetricRequest\x1a\x1c.google.logging.v2.LogMetric"<\x82\xd3\xe4\x93\x02(\x12&/v2/{metric_name=projects/*/metrics/*}\xda\x41\x0bmetric_name\x12\x9b\x01\n\x0f\x43reateLogMetric\x12).google.logging.v2.CreateLogMetricRequest\x1a\x1c.google.logging.v2.LogMetric"?\x82\xd3\xe4\x93\x02)"\x1f/v2/{parent=projects/*}/metrics:\x06metric\xda\x41\rparent,metric\x12\xa7\x01\n\x0fUpdateLogMetric\x12).google.logging.v2.UpdateLogMetricRequest\x1a\x1c.google.logging.v2.LogMetric"K\x82\xd3\xe4\x93\x02\x30\x1a&/v2/{metric_name=projects/*/metrics/*}:\x06metric\xda\x41\x12metric_name,metric\x12\x92\x01\n\x0f\x44\x65leteLogMetric\x12).google.logging.v2.DeleteLogMetricRequest\x1a\x16.google.protobuf.Empty"<\x82\xd3\xe4\x93\x02(*&/v2/{metric_name=projects/*/metrics/*}\xda\x41\x0bmetric_name\x1a\x8d\x02\xca\x41\x16logging.googleapis.com\xd2\x41\xf0\x01https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read,https://www.googleapis.com/auth/logging.writeB\x9f\x01\n\x15\x63om.google.logging.v2B\x13LoggingMetricsProtoP\x01Z8google.golang.org/genproto/googleapis/logging/v2;logging\xf8\x01\x01\xaa\x02\x17Google.Cloud.Logging.V2\xca\x02\x17Google\\Cloud\\Logging\\V2b\x06proto3'
),
dependencies=[
+ google_dot_api_dot_client__pb2.DESCRIPTOR,
google_dot_api_dot_distribution__pb2.DESCRIPTOR,
+ google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,
google_dot_api_dot_metric__pb2.DESCRIPTOR,
+ google_dot_api_dot_resource__pb2.DESCRIPTOR,
+ google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,
google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,
google_dot_protobuf_dot_field__mask__pb2.DESCRIPTOR,
google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,
google_dot_api_dot_annotations__pb2.DESCRIPTOR,
- google_dot_api_dot_client__pb2.DESCRIPTOR,
],
)
@@ -61,8 +67,8 @@
],
containing_type=None,
serialized_options=None,
- serialized_start=785,
- serialized_end=813,
+ serialized_start=877,
+ serialized_end=905,
)
_sym_db.RegisterEnumDescriptor(_LOGMETRIC_APIVERSION)
@@ -119,8 +125,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=729,
- serialized_end=783,
+ serialized_start=821,
+ serialized_end=875,
)
_LOGMETRIC = _descriptor.Descriptor(
@@ -312,15 +318,17 @@
),
],
extensions=[],
- nested_types=[_LOGMETRIC_LABELEXTRACTORSENTRY],
- enum_types=[_LOGMETRIC_APIVERSION],
- serialized_options=None,
+ nested_types=[_LOGMETRIC_LABELEXTRACTORSENTRY,],
+ enum_types=[_LOGMETRIC_APIVERSION,],
+ serialized_options=_b(
+ "\352AD\n\035logging.googleapis.com/Metric\022#projects/{project}/metrics/{metric}"
+ ),
is_extendable=False,
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=282,
- serialized_end=813,
+ serialized_start=374,
+ serialized_end=978,
)
@@ -346,7 +354,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A-\n+cloudresourcemanager.googleapis.com/Project"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -394,8 +404,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=815,
- serialized_end=893,
+ serialized_start=981,
+ serialized_end=1112,
)
@@ -451,8 +461,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=895,
- serialized_end=991,
+ serialized_start=1114,
+ serialized_end=1210,
)
@@ -478,9 +488,11 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\037\n\035logging.googleapis.com/Metric"
+ ),
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
nested_types=[],
@@ -490,8 +502,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=993,
- serialized_end=1035,
+ serialized_start=1212,
+ serialized_end=1293,
)
@@ -517,7 +529,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\037\n\035logging.googleapis.com/Metric"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -535,7 +549,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
],
@@ -547,8 +561,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1037,
- serialized_end=1123,
+ serialized_start=1296,
+ serialized_end=1426,
)
@@ -574,7 +588,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\037\n\035logging.googleapis.com/Metric"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -592,7 +608,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
],
@@ -604,8 +620,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1125,
- serialized_end=1216,
+ serialized_start=1429,
+ serialized_end=1564,
)
@@ -631,9 +647,11 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\037\n\035logging.googleapis.com/Metric"
+ ),
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
nested_types=[],
@@ -643,8 +661,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1218,
- serialized_end=1263,
+ serialized_start=1566,
+ serialized_end=1650,
)
_LOGMETRIC_LABELEXTRACTORSENTRY.containing_type = _LOGMETRIC
@@ -692,8 +710,9 @@
),
DESCRIPTOR=_LOGMETRIC,
__module__="google.cloud.logging_v2.proto.logging_metrics_pb2",
- __doc__="""Describes a logs-based metric. The value of the metric is the number of
- log entries that match a logs filter in a given time interval.
+ __doc__="""Describes a logs-based metric. The value of the metric is
+ the number of log entries that match a logs filter in a given time
+ interval.
Logs-based metric can also be used to extract values from logs and
create a a distribution of the values. The distribution records the
@@ -864,7 +883,7 @@
Attributes:
metric_name:
- The resource name of the desired metric: ::
+ Required. The resource name of the desired metric: ::
"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
""",
# @@protoc_insertion_point(class_scope:google.logging.v2.GetLogMetricRequest)
@@ -883,12 +902,12 @@
Attributes:
parent:
- The resource name of the project in which to create the
- metric: :: "projects/[PROJECT_ID]" The new metric must
- be provided in the request.
+ Required. The resource name of the project in which to create
+ the metric: :: "projects/[PROJECT_ID]" The new metric
+ must be provided in the request.
metric:
- The new logs-based metric, which must not have an identifier
- that already exists.
+ Required. The new logs-based metric, which must not have an
+ identifier that already exists.
""",
# @@protoc_insertion_point(class_scope:google.logging.v2.CreateLogMetricRequest)
),
@@ -906,13 +925,13 @@
Attributes:
metric_name:
- The resource name of the metric to update: ::
+ Required. The resource name of the metric to update: ::
"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 does not
exist in ``[PROJECT_ID]``, then a new metric is created.
metric:
- The updated metric.
+ Required. The updated metric.
""",
# @@protoc_insertion_point(class_scope:google.logging.v2.UpdateLogMetricRequest)
),
@@ -930,7 +949,7 @@
Attributes:
metric_name:
- The resource name of the metric to delete: ::
+ Required. The resource name of the metric to delete: ::
"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
""",
# @@protoc_insertion_point(class_scope:google.logging.v2.DeleteLogMetricRequest)
@@ -942,6 +961,14 @@
DESCRIPTOR._options = None
_LOGMETRIC_LABELEXTRACTORSENTRY._options = None
_LOGMETRIC.fields_by_name["version"]._options = None
+_LOGMETRIC._options = None
+_LISTLOGMETRICSREQUEST.fields_by_name["parent"]._options = None
+_GETLOGMETRICREQUEST.fields_by_name["metric_name"]._options = None
+_CREATELOGMETRICREQUEST.fields_by_name["parent"]._options = None
+_CREATELOGMETRICREQUEST.fields_by_name["metric"]._options = None
+_UPDATELOGMETRICREQUEST.fields_by_name["metric_name"]._options = None
+_UPDATELOGMETRICREQUEST.fields_by_name["metric"]._options = None
+_DELETELOGMETRICREQUEST.fields_by_name["metric_name"]._options = None
_METRICSSERVICEV2 = _descriptor.ServiceDescriptor(
name="MetricsServiceV2",
@@ -951,8 +978,8 @@
serialized_options=_b(
"\312A\026logging.googleapis.com\322A\360\001https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read,https://www.googleapis.com/auth/logging.write"
),
- serialized_start=1266,
- serialized_end=2262,
+ serialized_start=1653,
+ serialized_end=2723,
methods=[
_descriptor.MethodDescriptor(
name="ListLogMetrics",
@@ -962,7 +989,7 @@
input_type=_LISTLOGMETRICSREQUEST,
output_type=_LISTLOGMETRICSRESPONSE,
serialized_options=_b(
- "\202\323\344\223\002!\022\037/v2/{parent=projects/*}/metrics"
+ "\202\323\344\223\002!\022\037/v2/{parent=projects/*}/metrics\332A\006parent"
),
),
_descriptor.MethodDescriptor(
@@ -973,7 +1000,7 @@
input_type=_GETLOGMETRICREQUEST,
output_type=_LOGMETRIC,
serialized_options=_b(
- "\202\323\344\223\002(\022&/v2/{metric_name=projects/*/metrics/*}"
+ "\202\323\344\223\002(\022&/v2/{metric_name=projects/*/metrics/*}\332A\013metric_name"
),
),
_descriptor.MethodDescriptor(
@@ -984,7 +1011,7 @@
input_type=_CREATELOGMETRICREQUEST,
output_type=_LOGMETRIC,
serialized_options=_b(
- '\202\323\344\223\002)"\037/v2/{parent=projects/*}/metrics:\006metric'
+ '\202\323\344\223\002)"\037/v2/{parent=projects/*}/metrics:\006metric\332A\rparent,metric'
),
),
_descriptor.MethodDescriptor(
@@ -995,7 +1022,7 @@
input_type=_UPDATELOGMETRICREQUEST,
output_type=_LOGMETRIC,
serialized_options=_b(
- "\202\323\344\223\0020\032&/v2/{metric_name=projects/*/metrics/*}:\006metric"
+ "\202\323\344\223\0020\032&/v2/{metric_name=projects/*/metrics/*}:\006metric\332A\022metric_name,metric"
),
),
_descriptor.MethodDescriptor(
@@ -1006,7 +1033,7 @@
input_type=_DELETELOGMETRICREQUEST,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=_b(
- "\202\323\344\223\002(*&/v2/{metric_name=projects/*/metrics/*}"
+ "\202\323\344\223\002(*&/v2/{metric_name=projects/*/metrics/*}\332A\013metric_name"
),
),
],
diff --git a/google/cloud/logging_v2/proto/logging_pb2.py b/google/cloud/logging_v2/proto/logging_pb2.py
index 04bd84375..35c9b9c52 100644
--- a/google/cloud/logging_v2/proto/logging_pb2.py
+++ b/google/cloud/logging_v2/proto/logging_pb2.py
@@ -15,9 +15,13 @@
_sym_db = _symbol_database.Default()
+from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.api import client_pb2 as google_dot_api_dot_client__pb2
+from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2
from google.api import (
monitored_resource_pb2 as google_dot_api_dot_monitored__resource__pb2,
)
+from google.api import resource_pb2 as google_dot_api_dot_resource__pb2
from google.cloud.logging_v2.proto import (
log_entry_pb2 as google_dot_cloud_dot_logging__v2_dot_proto_dot_log__entry__pb2,
)
@@ -28,8 +32,6 @@
from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2
-from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
-from google.api import client_pb2 as google_dot_api_dot_client__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
@@ -40,18 +42,20 @@
"\n\025com.google.logging.v2B\014LoggingProtoP\001Z8google.golang.org/genproto/googleapis/logging/v2;logging\370\001\001\252\002\027Google.Cloud.Logging.V2\312\002\027Google\\Cloud\\Logging\\V2"
),
serialized_pb=_b(
- '\n+google/cloud/logging_v2/proto/logging.proto\x12\x11google.logging.v2\x1a#google/api/monitored_resource.proto\x1a-google/cloud/logging_v2/proto/log_entry.proto\x1a\x32google/cloud/logging_v2/proto/logging_config.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto"$\n\x10\x44\x65leteLogRequest\x12\x10\n\x08log_name\x18\x01 \x01(\t"\xa9\x02\n\x16WriteLogEntriesRequest\x12\x10\n\x08log_name\x18\x01 \x01(\t\x12/\n\x08resource\x18\x02 \x01(\x0b\x32\x1d.google.api.MonitoredResource\x12\x45\n\x06labels\x18\x03 \x03(\x0b\x32\x35.google.logging.v2.WriteLogEntriesRequest.LabelsEntry\x12,\n\x07\x65ntries\x18\x04 \x03(\x0b\x32\x1b.google.logging.v2.LogEntry\x12\x17\n\x0fpartial_success\x18\x05 \x01(\x08\x12\x0f\n\x07\x64ry_run\x18\x06 \x01(\x08\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x19\n\x17WriteLogEntriesResponse"\xc8\x01\n\x1cWriteLogEntriesPartialErrors\x12]\n\x10log_entry_errors\x18\x01 \x03(\x0b\x32\x43.google.logging.v2.WriteLogEntriesPartialErrors.LogEntryErrorsEntry\x1aI\n\x13LogEntryErrorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status:\x02\x38\x01"\x91\x01\n\x15ListLogEntriesRequest\x12\x17\n\x0bproject_ids\x18\x01 \x03(\tB\x02\x18\x01\x12\x16\n\x0eresource_names\x18\x08 \x03(\t\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x10\n\x08order_by\x18\x03 \x01(\t\x12\x11\n\tpage_size\x18\x04 \x01(\x05\x12\x12\n\npage_token\x18\x05 \x01(\t"_\n\x16ListLogEntriesResponse\x12,\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x1b.google.logging.v2.LogEntry\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"P\n\'ListMonitoredResourceDescriptorsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t"\x8a\x01\n(ListMonitoredResourceDescriptorsResponse\x12\x45\n\x14resource_descriptors\x18\x01 \x03(\x0b\x32\'.google.api.MonitoredResourceDescriptor\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"H\n\x0fListLogsRequest\x12\x0e\n\x06parent\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t">\n\x10ListLogsResponse\x12\x11\n\tlog_names\x18\x03 \x03(\t\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t2\x85\n\n\x10LoggingServiceV2\x12\x88\x02\n\tDeleteLog\x12#.google.logging.v2.DeleteLogRequest\x1a\x16.google.protobuf.Empty"\xbd\x01\x82\xd3\xe4\x93\x02\xb6\x01* /v2/{log_name=projects/*/logs/*}Z\x1b*\x19/v2/{log_name=*/*/logs/*}Z\'*%/v2/{log_name=organizations/*/logs/*}Z!*\x1f/v2/{log_name=folders/*/logs/*}Z)*\'/v2/{log_name=billingAccounts/*/logs/*}\x12\x86\x01\n\x0fWriteLogEntries\x12).google.logging.v2.WriteLogEntriesRequest\x1a*.google.logging.v2.WriteLogEntriesResponse"\x1c\x82\xd3\xe4\x93\x02\x16"\x11/v2/entries:write:\x01*\x12\x82\x01\n\x0eListLogEntries\x12(.google.logging.v2.ListLogEntriesRequest\x1a).google.logging.v2.ListLogEntriesResponse"\x1b\x82\xd3\xe4\x93\x02\x15"\x10/v2/entries:list:\x01*\x12\xc5\x01\n ListMonitoredResourceDescriptors\x12:.google.logging.v2.ListMonitoredResourceDescriptorsRequest\x1a;.google.logging.v2.ListMonitoredResourceDescriptorsResponse"(\x82\xd3\xe4\x93\x02"\x12 /v2/monitoredResourceDescriptors\x12\xff\x01\n\x08ListLogs\x12".google.logging.v2.ListLogsRequest\x1a#.google.logging.v2.ListLogsResponse"\xa9\x01\x82\xd3\xe4\x93\x02\xa2\x01\x12\x15/v2/{parent=*/*}/logsZ\x1e\x12\x1c/v2/{parent=projects/*}/logsZ#\x12!/v2/{parent=organizations/*}/logsZ\x1d\x12\x1b/v2/{parent=folders/*}/logsZ%\x12#/v2/{parent=billingAccounts/*}/logs\x1a\x8d\x02\xca\x41\x16logging.googleapis.com\xd2\x41\xf0\x01https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read,https://www.googleapis.com/auth/logging.writeB\x98\x01\n\x15\x63om.google.logging.v2B\x0cLoggingProtoP\x01Z8google.golang.org/genproto/googleapis/logging/v2;logging\xf8\x01\x01\xaa\x02\x17Google.Cloud.Logging.V2\xca\x02\x17Google\\Cloud\\Logging\\V2b\x06proto3'
+ '\n+google/cloud/logging_v2/proto/logging.proto\x12\x11google.logging.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a#google/api/monitored_resource.proto\x1a\x19google/api/resource.proto\x1a-google/cloud/logging_v2/proto/log_entry.proto\x1a\x32google/cloud/logging_v2/proto/logging_config.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto"H\n\x10\x44\x65leteLogRequest\x12\x34\n\x08log_name\x18\x01 \x01(\tB"\xe0\x41\x02\xfa\x41\x1c\x12\x1alogging.googleapis.com/Log"\xcf\x02\n\x16WriteLogEntriesRequest\x12\x31\n\x08log_name\x18\x01 \x01(\tB\x1f\xfa\x41\x1c\n\x1alogging.googleapis.com/Log\x12/\n\x08resource\x18\x02 \x01(\x0b\x32\x1d.google.api.MonitoredResource\x12\x45\n\x06labels\x18\x03 \x03(\x0b\x32\x35.google.logging.v2.WriteLogEntriesRequest.LabelsEntry\x12\x31\n\x07\x65ntries\x18\x04 \x03(\x0b\x32\x1b.google.logging.v2.LogEntryB\x03\xe0\x41\x02\x12\x17\n\x0fpartial_success\x18\x05 \x01(\x08\x12\x0f\n\x07\x64ry_run\x18\x06 \x01(\x08\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x19\n\x17WriteLogEntriesResponse"\xc8\x01\n\x1cWriteLogEntriesPartialErrors\x12]\n\x10log_entry_errors\x18\x01 \x03(\x0b\x32\x43.google.logging.v2.WriteLogEntriesPartialErrors.LogEntryErrorsEntry\x1aI\n\x13LogEntryErrorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12!\n\x05value\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status:\x02\x38\x01"\xb5\x01\n\x15ListLogEntriesRequest\x12\x17\n\x0bproject_ids\x18\x01 \x03(\tB\x02\x18\x01\x12:\n\x0eresource_names\x18\x08 \x03(\tB"\xe0\x41\x02\xfa\x41\x1c\x12\x1alogging.googleapis.com/Log\x12\x0e\n\x06\x66ilter\x18\x02 \x01(\t\x12\x10\n\x08order_by\x18\x03 \x01(\t\x12\x11\n\tpage_size\x18\x04 \x01(\x05\x12\x12\n\npage_token\x18\x05 \x01(\t"_\n\x16ListLogEntriesResponse\x12,\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x1b.google.logging.v2.LogEntry\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"P\n\'ListMonitoredResourceDescriptorsRequest\x12\x11\n\tpage_size\x18\x01 \x01(\x05\x12\x12\n\npage_token\x18\x02 \x01(\t"\x8a\x01\n(ListMonitoredResourceDescriptorsResponse\x12\x45\n\x14resource_descriptors\x18\x01 \x03(\x0b\x32\'.google.api.MonitoredResourceDescriptor\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"i\n\x0fListLogsRequest\x12/\n\x06parent\x18\x01 \x01(\tB\x1f\xfa\x41\x1c\x12\x1alogging.googleapis.com/Log\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t">\n\x10ListLogsResponse\x12\x11\n\tlog_names\x18\x03 \x03(\t\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t2\xdd\n\n\x10LoggingServiceV2\x12\x93\x02\n\tDeleteLog\x12#.google.logging.v2.DeleteLogRequest\x1a\x16.google.protobuf.Empty"\xc8\x01\x82\xd3\xe4\x93\x02\xb6\x01* /v2/{log_name=projects/*/logs/*}Z\x1b*\x19/v2/{log_name=*/*/logs/*}Z\'*%/v2/{log_name=organizations/*/logs/*}Z!*\x1f/v2/{log_name=folders/*/logs/*}Z)*\'/v2/{log_name=billingAccounts/*/logs/*}\xda\x41\x08log_name\x12\xa9\x01\n\x0fWriteLogEntries\x12).google.logging.v2.WriteLogEntriesRequest\x1a*.google.logging.v2.WriteLogEntriesResponse"?\x82\xd3\xe4\x93\x02\x16"\x11/v2/entries:write:\x01*\xda\x41 log_name,resource,labels,entries\x12\xa3\x01\n\x0eListLogEntries\x12(.google.logging.v2.ListLogEntriesRequest\x1a).google.logging.v2.ListLogEntriesResponse"<\x82\xd3\xe4\x93\x02\x15"\x10/v2/entries:list:\x01*\xda\x41\x1eresource_names,filter,order_by\x12\xc5\x01\n ListMonitoredResourceDescriptors\x12:.google.logging.v2.ListMonitoredResourceDescriptorsRequest\x1a;.google.logging.v2.ListMonitoredResourceDescriptorsResponse"(\x82\xd3\xe4\x93\x02"\x12 /v2/monitoredResourceDescriptors\x12\x88\x02\n\x08ListLogs\x12".google.logging.v2.ListLogsRequest\x1a#.google.logging.v2.ListLogsResponse"\xb2\x01\x82\xd3\xe4\x93\x02\xa2\x01\x12\x15/v2/{parent=*/*}/logsZ\x1e\x12\x1c/v2/{parent=projects/*}/logsZ#\x12!/v2/{parent=organizations/*}/logsZ\x1d\x12\x1b/v2/{parent=folders/*}/logsZ%\x12#/v2/{parent=billingAccounts/*}/logs\xda\x41\x06parent\x1a\x8d\x02\xca\x41\x16logging.googleapis.com\xd2\x41\xf0\x01https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read,https://www.googleapis.com/auth/logging.writeB\x98\x01\n\x15\x63om.google.logging.v2B\x0cLoggingProtoP\x01Z8google.golang.org/genproto/googleapis/logging/v2;logging\xf8\x01\x01\xaa\x02\x17Google.Cloud.Logging.V2\xca\x02\x17Google\\Cloud\\Logging\\V2b\x06proto3'
),
dependencies=[
+ google_dot_api_dot_annotations__pb2.DESCRIPTOR,
+ google_dot_api_dot_client__pb2.DESCRIPTOR,
+ google_dot_api_dot_field__behavior__pb2.DESCRIPTOR,
google_dot_api_dot_monitored__resource__pb2.DESCRIPTOR,
+ google_dot_api_dot_resource__pb2.DESCRIPTOR,
google_dot_cloud_dot_logging__v2_dot_proto_dot_log__entry__pb2.DESCRIPTOR,
google_dot_cloud_dot_logging__v2_dot_proto_dot_logging__config__pb2.DESCRIPTOR,
google_dot_protobuf_dot_duration__pb2.DESCRIPTOR,
google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,
google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,
google_dot_rpc_dot_status__pb2.DESCRIPTOR,
- google_dot_api_dot_annotations__pb2.DESCRIPTOR,
- google_dot_api_dot_client__pb2.DESCRIPTOR,
],
)
@@ -78,9 +82,11 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\034\022\032logging.googleapis.com/Log"
+ ),
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
nested_types=[],
@@ -90,8 +96,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=376,
- serialized_end=412,
+ serialized_start=436,
+ serialized_end=508,
)
@@ -147,8 +153,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=667,
- serialized_end=712,
+ serialized_start=801,
+ serialized_end=846,
)
_WRITELOGENTRIESREQUEST = _descriptor.Descriptor(
@@ -173,7 +179,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\372A\034\n\032logging.googleapis.com/Log"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -227,7 +233,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\340A\002"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -268,15 +274,15 @@
),
],
extensions=[],
- nested_types=[_WRITELOGENTRIESREQUEST_LABELSENTRY],
+ nested_types=[_WRITELOGENTRIESREQUEST_LABELSENTRY,],
enum_types=[],
serialized_options=None,
is_extendable=False,
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=415,
- serialized_end=712,
+ serialized_start=511,
+ serialized_end=846,
)
@@ -295,8 +301,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=714,
- serialized_end=739,
+ serialized_start=848,
+ serialized_end=873,
)
@@ -352,8 +358,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=869,
- serialized_end=942,
+ serialized_start=1003,
+ serialized_end=1076,
)
_WRITELOGENTRIESPARTIALERRORS = _descriptor.Descriptor(
@@ -380,18 +386,18 @@
extension_scope=None,
serialized_options=None,
file=DESCRIPTOR,
- )
+ ),
],
extensions=[],
- nested_types=[_WRITELOGENTRIESPARTIALERRORS_LOGENTRYERRORSENTRY],
+ nested_types=[_WRITELOGENTRIESPARTIALERRORS_LOGENTRYERRORSENTRY,],
enum_types=[],
serialized_options=None,
is_extendable=False,
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=742,
- serialized_end=942,
+ serialized_start=876,
+ serialized_end=1076,
)
@@ -435,7 +441,9 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b(
+ "\340A\002\372A\034\022\032logging.googleapis.com/Log"
+ ),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -519,8 +527,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=945,
- serialized_end=1090,
+ serialized_start=1079,
+ serialized_end=1260,
)
@@ -576,8 +584,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1092,
- serialized_end=1187,
+ serialized_start=1262,
+ serialized_end=1357,
)
@@ -633,8 +641,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1189,
- serialized_end=1269,
+ serialized_start=1359,
+ serialized_end=1439,
)
@@ -690,8 +698,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1272,
- serialized_end=1410,
+ serialized_start=1442,
+ serialized_end=1580,
)
@@ -717,7 +725,7 @@
containing_type=None,
is_extension=False,
extension_scope=None,
- serialized_options=None,
+ serialized_options=_b("\372A\034\022\032logging.googleapis.com/Log"),
file=DESCRIPTOR,
),
_descriptor.FieldDescriptor(
@@ -765,8 +773,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1412,
- serialized_end=1484,
+ serialized_start=1582,
+ serialized_end=1687,
)
@@ -822,8 +830,8 @@
syntax="proto3",
extension_ranges=[],
oneofs=[],
- serialized_start=1486,
- serialized_end=1548,
+ serialized_start=1689,
+ serialized_end=1751,
)
_WRITELOGENTRIESREQUEST_LABELSENTRY.containing_type = _WRITELOGENTRIESREQUEST
@@ -997,6 +1005,7 @@
DESCRIPTOR=_WRITELOGENTRIESRESPONSE,
__module__="google.cloud.logging_v2.proto.logging_pb2",
__doc__="""Result returned from WriteLogEntries. empty
+
""",
# @@protoc_insertion_point(class_scope:google.logging.v2.WriteLogEntriesResponse)
),
@@ -1058,13 +1067,13 @@
field are added to this list.
filter:
Optional. A filter that chooses which log entries to return.
- See `Advanced Logs 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 listed in
- ``resource_names`` will cause the filter to return no results.
- The maximum length of the filter is 20000 characters.
+ See `Advanced Logs Queries `__. 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.
order_by:
Optional. How the results should be sorted. Presently, the
only permitted values are ``"timestamp asc"`` (default) and
@@ -1233,9 +1242,14 @@
DESCRIPTOR._options = None
+_DELETELOGREQUEST.fields_by_name["log_name"]._options = None
_WRITELOGENTRIESREQUEST_LABELSENTRY._options = None
+_WRITELOGENTRIESREQUEST.fields_by_name["log_name"]._options = None
+_WRITELOGENTRIESREQUEST.fields_by_name["entries"]._options = None
_WRITELOGENTRIESPARTIALERRORS_LOGENTRYERRORSENTRY._options = None
_LISTLOGENTRIESREQUEST.fields_by_name["project_ids"]._options = None
+_LISTLOGENTRIESREQUEST.fields_by_name["resource_names"]._options = None
+_LISTLOGSREQUEST.fields_by_name["parent"]._options = None
_LOGGINGSERVICEV2 = _descriptor.ServiceDescriptor(
name="LoggingServiceV2",
@@ -1245,8 +1259,8 @@
serialized_options=_b(
"\312A\026logging.googleapis.com\322A\360\001https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-only,https://www.googleapis.com/auth/logging.admin,https://www.googleapis.com/auth/logging.read,https://www.googleapis.com/auth/logging.write"
),
- serialized_start=1551,
- serialized_end=2836,
+ serialized_start=1754,
+ serialized_end=3127,
methods=[
_descriptor.MethodDescriptor(
name="DeleteLog",
@@ -1256,7 +1270,7 @@
input_type=_DELETELOGREQUEST,
output_type=google_dot_protobuf_dot_empty__pb2._EMPTY,
serialized_options=_b(
- "\202\323\344\223\002\266\001* /v2/{log_name=projects/*/logs/*}Z\033*\031/v2/{log_name=*/*/logs/*}Z'*%/v2/{log_name=organizations/*/logs/*}Z!*\037/v2/{log_name=folders/*/logs/*}Z)*'/v2/{log_name=billingAccounts/*/logs/*}"
+ "\202\323\344\223\002\266\001* /v2/{log_name=projects/*/logs/*}Z\033*\031/v2/{log_name=*/*/logs/*}Z'*%/v2/{log_name=organizations/*/logs/*}Z!*\037/v2/{log_name=folders/*/logs/*}Z)*'/v2/{log_name=billingAccounts/*/logs/*}\332A\010log_name"
),
),
_descriptor.MethodDescriptor(
@@ -1267,7 +1281,7 @@
input_type=_WRITELOGENTRIESREQUEST,
output_type=_WRITELOGENTRIESRESPONSE,
serialized_options=_b(
- '\202\323\344\223\002\026"\021/v2/entries:write:\001*'
+ '\202\323\344\223\002\026"\021/v2/entries:write:\001*\332A log_name,resource,labels,entries'
),
),
_descriptor.MethodDescriptor(
@@ -1278,7 +1292,7 @@
input_type=_LISTLOGENTRIESREQUEST,
output_type=_LISTLOGENTRIESRESPONSE,
serialized_options=_b(
- '\202\323\344\223\002\025"\020/v2/entries:list:\001*'
+ '\202\323\344\223\002\025"\020/v2/entries:list:\001*\332A\036resource_names,filter,order_by'
),
),
_descriptor.MethodDescriptor(
@@ -1300,7 +1314,7 @@
input_type=_LISTLOGSREQUEST,
output_type=_LISTLOGSRESPONSE,
serialized_options=_b(
- "\202\323\344\223\002\242\001\022\025/v2/{parent=*/*}/logsZ\036\022\034/v2/{parent=projects/*}/logsZ#\022!/v2/{parent=organizations/*}/logsZ\035\022\033/v2/{parent=folders/*}/logsZ%\022#/v2/{parent=billingAccounts/*}/logs"
+ "\202\323\344\223\002\242\001\022\025/v2/{parent=*/*}/logsZ\036\022\034/v2/{parent=projects/*}/logsZ#\022!/v2/{parent=organizations/*}/logsZ\035\022\033/v2/{parent=folders/*}/logsZ%\022#/v2/{parent=billingAccounts/*}/logs\332A\006parent"
),
),
],
diff --git a/google/cloud/logging_v2/proto/logging_pb2_grpc.py b/google/cloud/logging_v2/proto/logging_pb2_grpc.py
index 2a2b36569..e1759bbc1 100644
--- a/google/cloud/logging_v2/proto/logging_pb2_grpc.py
+++ b/google/cloud/logging_v2/proto/logging_pb2_grpc.py
@@ -49,10 +49,10 @@ class LoggingServiceV2Servicer(object):
"""
def DeleteLog(self, request, context):
- """Deletes all the log entries in a log.
- The log reappears if it receives new entries.
- Log entries written shortly before the delete operation might not be
- deleted.
+ """Deletes all the log entries in a log. The log reappears if it receives new
+ entries. Log entries written shortly before the delete operation might not
+ be deleted. Entries received after the delete operation with a timestamp
+ before the operation will be deleted.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
diff --git a/noxfile.py b/noxfile.py
index d2a53d2de..060f561c3 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -21,10 +21,6 @@
import nox
-LOCAL_DEPS = (
- os.path.join('..', 'api_core'),
- os.path.join('..', 'core'),
-)
UNIT_TEST_DEPS = (
'mock',
'pytest',
@@ -42,7 +38,7 @@ def lint(session):
Returns a failure if the linters find linting errors or sufficiently
serious code quality issues.
"""
- session.install("flake8", "black", *LOCAL_DEPS)
+ session.install("flake8", "black")
session.run(
"black",
"--check",
@@ -84,8 +80,6 @@ def default(session, django_dep=('django',)):
deps += django_dep
session.install(*deps)
- for local_dep in LOCAL_DEPS:
- session.install('-e', local_dep)
session.install('-e', '.')
# Run py.test against the unit tests.
@@ -97,7 +91,7 @@ def default(session, django_dep=('django',)):
'--cov-append',
'--cov-config=.coveragerc',
'--cov-report=',
- '--cov-fail-under=97',
+ '--cov-fail-under=0',
'tests/unit',
*session.posargs
)
@@ -134,16 +128,15 @@ def system(session):
# Install all test dependencies, then install this package into the
# virtualenv's dist-packages.
session.install('mock', 'pytest')
- for local_dep in LOCAL_DEPS:
- session.install('-e', local_dep)
systest_deps = [
- '../bigquery/',
- '../pubsub/',
- '../storage/',
- '../test_utils/',
+ 'google-cloud-bigquery',
+ 'google-cloud-pubsub',
+ 'google-cloud-storage',
]
for systest_dep in systest_deps:
- session.install('-e', systest_dep)
+ session.install(systest_dep)
+
+ session.install('-e', 'test_utils/')
session.install('-e', '.')
# Run py.test against the system tests.
@@ -186,4 +179,4 @@ def docs(session):
os.path.join("docs", "_build", "doctrees", ""),
os.path.join("docs", ""),
os.path.join("docs", "_build", "html", ""),
- )
\ No newline at end of file
+ )
diff --git a/renovate.json b/renovate.json
new file mode 100644
index 000000000..4fa949311
--- /dev/null
+++ b/renovate.json
@@ -0,0 +1,5 @@
+{
+ "extends": [
+ "config:base", ":preserveSemverRanges"
+ ]
+}
diff --git a/setup.py b/setup.py
index 00c9cb388..c06667d72 100644
--- a/setup.py
+++ b/setup.py
@@ -22,15 +22,15 @@
name = 'google-cloud-logging'
description = 'Stackdriver Logging API client library'
-version = '1.14.0'
+version = "1.15.0"
# Should be one of:
# 'Development Status :: 3 - Alpha'
# 'Development Status :: 4 - Beta'
# 'Development Status :: 5 - Production/Stable'
release_status = 'Development Status :: 5 - Production/Stable'
dependencies = [
- "google-api-core[grpc] >= 1.14.0, < 2.0.0dev",
- "google-cloud-core >= 1.0.3, < 2.0dev",
+ "google-api-core[grpc] >= 1.15.0, < 2.0.0dev",
+ "google-cloud-core >= 1.1.0, < 2.0dev",
]
extras = {
}
@@ -64,7 +64,7 @@
author='Google LLC',
author_email='googleapis-packages@google.com',
license='Apache 2.0',
- url='https://github.com/googleapis/google-cloud-python',
+ url='https://github.com/googleapis/python-logging',
classifiers=[
release_status,
'Intended Audience :: Developers',
diff --git a/synth.metadata b/synth.metadata
index fe4f1d156..91118fcdb 100644
--- a/synth.metadata
+++ b/synth.metadata
@@ -1,26 +1,27 @@
{
- "updateTime": "2019-10-08T18:03:34.610285Z",
+ "updateTime": "2020-02-25T13:15:44.768838Z",
"sources": [
{
"generator": {
"name": "artman",
- "version": "0.38.0",
- "dockerImage": "googleapis/artman@sha256:0d2f8d429110aeb8d82df6550ef4ede59d40df9062d260a1580fce688b0512bf"
+ "version": "0.45.1",
+ "dockerImage": "googleapis/artman@sha256:36956ca6a4dc70a59de5d5d0fd35061b050bb56884516f0898f46d8220f25738"
}
},
{
"git": {
"name": "googleapis",
"remote": "https://github.com/googleapis/googleapis.git",
- "sha": "dcebbafcd6f915ae59f01e92ac7260e61a545dd5",
- "internalRef": "273552966"
+ "sha": "0b1876b35e98f560f9c9ca9797955f020238a092",
+ "internalRef": "296986742",
+ "log": "0b1876b35e98f560f9c9ca9797955f020238a092\nUse an older version of protoc-docs-plugin that is compatible with the specified gapic-generator and protobuf versions.\n\nprotoc-docs-plugin >=0.4.0 (see commit https://github.com/googleapis/protoc-docs-plugin/commit/979f03ede6678c487337f3d7e88bae58df5207af) is incompatible with protobuf 3.9.1.\n\nPiperOrigin-RevId: 296986742\n\n1e47e676cddbbd8d93f19ba0665af15b5532417e\nFix: Restore a method signature for UpdateCluster\n\nPiperOrigin-RevId: 296901854\n\n7f910bcc4fc4704947ccfd3ceed015d16b9e00c2\nUpdate Dataproc v1beta2 client.\n\nPiperOrigin-RevId: 296451205\n\nde287524405a3dce124d301634731584fc0432d7\nFix: Reinstate method signatures that had been missed off some RPCs\nFix: Correct resource types for two fields\n\nPiperOrigin-RevId: 296435091\n\ne5bc9566ae057fb4c92f8b7e047f1c8958235b53\nDeprecate the endpoint_uris field, as it is unused.\n\nPiperOrigin-RevId: 296357191\n\n8c12e2b4dca94e12bff9f538bdac29524ff7ef7a\nUpdate Dataproc v1 client.\n\nPiperOrigin-RevId: 296336662\n\n17567c4a1ef0a9b50faa87024d66f8acbb561089\nRemoving erroneous comment, a la https://github.com/googleapis/java-speech/pull/103\n\nPiperOrigin-RevId: 296332968\n\n3eaaaf8626ce5b0c0bc7eee05e143beffa373b01\nAdd BUILD.bazel for v1 secretmanager.googleapis.com\n\nPiperOrigin-RevId: 296274723\n\ne76149c3d992337f85eeb45643106aacae7ede82\nMove securitycenter v1 to use generate from annotations.\n\nPiperOrigin-RevId: 296266862\n\n203740c78ac69ee07c3bf6be7408048751f618f8\nAdd StackdriverLoggingConfig field to Cloud Tasks v2 API.\n\nPiperOrigin-RevId: 296256388\n\ne4117d5e9ed8bbca28da4a60a94947ca51cb2083\nCreate a Bazel BUILD file for the google.actions.type export.\n\nPiperOrigin-RevId: 296212567\n\na9639a0a9854fd6e1be08bba1ac3897f4f16cb2f\nAdd secretmanager.googleapis.com v1 protos\n\nPiperOrigin-RevId: 295983266\n\n"
}
},
{
"template": {
"name": "python_library",
"origin": "synthtool.gcp",
- "version": "2019.5.2"
+ "version": "2020.2.4"
}
}
],
diff --git a/test_utils/credentials.json.enc b/test_utils/credentials.json.enc
new file mode 100644
index 000000000..f073c7e4f
--- /dev/null
+++ b/test_utils/credentials.json.enc
@@ -0,0 +1,49 @@
+U2FsdGVkX1/vVm/dOEg1DCACYbdOcL+ey6+64A+DZGZVgF8Z/3skK6rpPocu6GOA
+UZAqASsBH9QifDf8cKVXQXVYpYq6HSv2O0w7vOmVorZO9GYPo98s9/8XO+4ty/AU
+aB6TD68frBAYv4cT/l5m7aYdzfzMTy0EOXoleZT09JYP3B5FV3KCO114FzMXGwrj
+HXsR6E5SyUUlUnWPC3eD3aqmovay0gxOKYO3ZwjFK1nlbN/8q6/8nwBCf/Bg6SHV
+V93pNxdolRlJev9kgKz4RN1z4jGCy5PAndhSLE82NFIs9LoAiEOU5YeMlN+Ulqus
+J92nh+ptUe9a4pJGbAuveUWO7zdS1QyXvTMUcmmSfXCNm/eIQjNuu5+rHtIjWKh8
+Ilwj2w1aTfSptQEhk/kwRgFz/d11vfwJzvwTmCxO6zyOeL0VUWLqdCBGgG5As9He
+/RenF8PZ1O0WbTt7fns5oTlTk/MUo+0xJ1xqvu/y45LaqqcBAnEdrWKmtM3dJHWv
+ufQku+kD+83F/VwBnQdvgMHu6KZEs6LRrNo58r4QuK6fS7VCACdzxID1RM2cL7kT
+6BFRlyGj1aigmjne9g9M9Jx4R+mZDpPU1WDzzG71J4qCUwaX8Dfwutuv4uiFvzwq
+NUF0wLJJPtKWmtW+hnZ/fhHQGCRsOpZzFnqp6Zv7J7k6esqxMgIjfal7Djk5Acy8
+j3iVvm6CYmKMVqzL62JHYS9Ye83tzBCaR8hpnJQKgH3FSOFY8HSwrtQSIsl/hSeF
+41sgnz0Y+/gkzNeU18qFk+eCZmvljyu+JK0nPYUgpOCJYVBNQpNHz5PUyiAEKhtM
+IOSdjPRW1Y+Xf4RroJnLPoF24Ijwrow5LCm9hBRY6TPPMMmnIXCd23xcLJ1rMj6g
+x4ZikElans+cwuc9wtbb7w01DcpTwQ1+eIV1qV+KIgpnLjRGLhZD4etobBsrwYu/
+vnIwy2QHCKENPb8sbdgp7x2mF7VSX0/7tf+9+i70EBiMzpOKBkiZhtLzm6hOBkEy
+ODaWrx4lTTwbSw8Rmtf58APhPFMsjHoNsjiUoK249Y8Y2Ff4fMfqYsXu6VC1n/At
+CuWYHc3EfBwFcLJS+RQB9kFk/4FygFBWq4Kj0MqoRruLbKmoGeJKH9q35W0f0NCD
+j+iHt3014kMGiuyJe1UDQ6fvEihFFdHuDivFpPAXDt4PTY/WtpDhaGMx23kb54pK
+jkAuxpznAB1lK3u9bGRXDasGeHIrNtIlPvgkrWHXvoBVqM7zry8TGtoxp3E3I42Z
+cUfDWfB9GqVdrOwvrTzyZsl2uShRkAJaZFZj5aMyYxiptp4gM8CwWiNtOd2EwtRO
+LxZX4M02PQFIqXV3FSDA0q6EwglUrTZdAlYeOEkopaKCtG31dEPOSQG3NGJAEYso
+Cxm99H7970dp0OAgpNSgRbcWDbhVbQXnRzvFGqLeH6a9dQ/a8uD3s8Qm9Du/kB6d
+XxTRe2OGxzcD0AgI8GClE4rIZHCLbcwuJRp0EYcN+pgY80O4U98fZ5RYpU6OYbU/
+MEiaBYFKtZtGkV6AQD568V7hHJWqc5DDfVHUQ/aeQwnKi2vnU66u+nnV2rZxXxLP
++dqeLRpul+wKa5b/Z5SfQ14Ff8s7aVyxaogGpyggyPL1vyq4KWZ6Or/wEE5hgNO4
+kBh6ht0QT1Hti8XY2JK1M+Jgbjgcg4jkHBGVqegrG1Rvcc2A4TYKwx+QMSBhyxrU
+5qhROjS4lTcC42hQslMUkUwc4U/Y91XdFbOOnaAkwzI36NRYL0pmgZnYxGJZeRvr
+E5foOhnOEVSFGdOkLfFh+FkWZQf56Lmn8Gg2wHE3dZTxLHibiUYfkgOr1uEosq29
+D1NstvlJURPQ0Q+8QQNWcl9nEZHMAjOmnL1hbx+QfuC6seucp+sXGzdZByMLZbvT
+tG8KNL293CmyQowgf9MXToWYnwRkcvqfTaKyor2Ggze3JtoFW4t0j4DI1XPciZFX
+XmfApHrzdB/bZadzxyaZ2NE0CuH9zDelwI6rz38xsN5liYnp5qmNKVCZVOHccXa6
+J8x365m5/VaaA2RrtdPqKxn8VaKy7+T690QgMXVGM4PbzQzQxHuSleklocqlP+sB
+jSMXCZY+ng/i4UmRO9noiyW3UThYh0hIdMYs12EmmI9cnF/OuYZpl30fmqwV+VNM
+td5B2fYvAvvsjiX60SFCn3DATP1GrPMBlZSmhhP3GYS+xrWt3Xxta9qIX2BEF1Gg
+twnZZRjoULSRFUYPfJPEOfEH2UQwm84wxx/GezVE+S/RpBlatPOgCiLnNNaLfdTC
+mTG9qY9elJv3GGQO8Lqgf4i8blExs05lSPk1BDhzTB6H9TLz+Ge0/l1QxKf3gPXU
+aImK1azieXMXHECkdKxrzmehwu1dZ/oYOLc/OFQCETwSRoLPFOFpYUpizwmVVHR6
+uLSfRptte4ZOU3zHfpd/0+J4tkwHwEkGzsmMdqudlm7qME6upuIplyVBH8JiXzUK
+n1RIH/OPmVEluAnexWRLZNdk7MrakIO4XACVbICENiYQgAIErP568An6twWEGDbZ
+bEN64E3cVDTDRPRAunIhhsEaapcxpFEPWlHorxv36nMUt0R0h0bJlCu5QdzckfcX
+ZrRuu1kl76ZfbSE8T0G4/rBb9gsU4Gn3WyvLIO3MgFBuxR68ZwcR8LpEUd8qp38H
+NG4cxPmN1nGKo663Z+xI2Gt5up4gpl+fOt4mXqxY386rB7yHaOfElMG5TUYdrS9w
+1xbbCVgeJ6zxX+NFlndG33cSAPprhw+C18eUu6ZU63WZcYFo3GfK6rs3lvYtofvE
+8DxztdTidQedNVNE+63YCjhxd/cZUI5n/UpgYkr9owp7hNGJiR3tdoNLR2gcoGqL
+qWhH928k2aSgF2j97LZ2OqoPCp0tUB7ho4jD2u4Ik3GLVNlCc3dCvWRvpHtDTQDv
+tujESMfHUc9I2r4S/PD3bku/ABGwa977Yp1PjzJGr9RajA5is5n6GVpyynwjtKG4
+iyyITpdwpCgr8pueTBLwZnas3slmiMOog/E4PmPgctHzvC+vhQijhUtw5zSsmv0l
+bZlw/mVhp5Ta7dTcLBKR8DA3m3vTbaEGkz0xpfQr7GfiSMRbJyvIw88pDK0gyTMD
diff --git a/test_utils/scripts/circleci/get_tagged_package.py b/test_utils/scripts/circleci/get_tagged_package.py
new file mode 100644
index 000000000..c148b9dc2
--- /dev/null
+++ b/test_utils/scripts/circleci/get_tagged_package.py
@@ -0,0 +1,64 @@
+# Copyright 2016 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.
+
+"""Helper to determine package from tag.
+Get the current package directory corresponding to the Circle Tag.
+"""
+
+from __future__ import print_function
+
+import os
+import re
+import sys
+
+
+TAG_RE = re.compile(r"""
+ ^
+ (?P