diff --git a/google-cloud-bigtable-v2/.owlbot-manifest.json b/google-cloud-bigtable-v2/.owlbot-manifest.json index 637819e1e447..c957ec005771 100644 --- a/google-cloud-bigtable-v2/.owlbot-manifest.json +++ b/google-cloud-bigtable-v2/.owlbot-manifest.json @@ -21,6 +21,7 @@ "lib/google/bigtable/v2/peer_info_pb.rb", "lib/google/bigtable/v2/request_stats_pb.rb", "lib/google/bigtable/v2/response_params_pb.rb", + "lib/google/bigtable/v2/session_pb.rb", "lib/google/bigtable/v2/types_pb.rb", "lib/google/cloud/bigtable/v2.rb", "lib/google/cloud/bigtable/v2/bigtable.rb", @@ -40,19 +41,25 @@ "proto_docs/google/bigtable/v2/peer_info.rb", "proto_docs/google/bigtable/v2/request_stats.rb", "proto_docs/google/bigtable/v2/response_params.rb", + "proto_docs/google/bigtable/v2/session.rb", "proto_docs/google/bigtable/v2/types.rb", "proto_docs/google/protobuf/any.rb", "proto_docs/google/protobuf/duration.rb", "proto_docs/google/protobuf/timestamp.rb", "proto_docs/google/protobuf/wrappers.rb", + "proto_docs/google/rpc/error_details.rb", "proto_docs/google/rpc/status.rb", "proto_docs/google/type/date.rb", "snippets/Gemfile", "snippets/bigtable/check_and_mutate_row.rb", "snippets/bigtable/execute_query.rb", "snippets/bigtable/generate_initial_change_stream_partitions.rb", + "snippets/bigtable/get_client_configuration.rb", "snippets/bigtable/mutate_row.rb", "snippets/bigtable/mutate_rows.rb", + "snippets/bigtable/open_authorized_view.rb", + "snippets/bigtable/open_materialized_view.rb", + "snippets/bigtable/open_table.rb", "snippets/bigtable/ping_and_warm.rb", "snippets/bigtable/prepare_query.rb", "snippets/bigtable/read_change_stream.rb", diff --git a/google-cloud-bigtable-v2/gapic_metadata.json b/google-cloud-bigtable-v2/gapic_metadata.json index a72e2b5f2bcd..7867e1e86429 100644 --- a/google-cloud-bigtable-v2/gapic_metadata.json +++ b/google-cloud-bigtable-v2/gapic_metadata.json @@ -64,6 +64,26 @@ "methods": [ "execute_query" ] + }, + "GetClientConfiguration": { + "methods": [ + "get_client_configuration" + ] + }, + "OpenTable": { + "methods": [ + "open_table" + ] + }, + "OpenAuthorizedView": { + "methods": [ + "open_authorized_view" + ] + }, + "OpenMaterializedView": { + "methods": [ + "open_materialized_view" + ] } } } diff --git a/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_pb.rb b/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_pb.rb index f42bd06554dd..f7cea0c46325 100644 --- a/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_pb.rb +++ b/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_pb.rb @@ -11,6 +11,7 @@ require 'google/api/routing_pb' require 'google/bigtable/v2/data_pb' require 'google/bigtable/v2/request_stats_pb' +require 'google/bigtable/v2/session_pb' require 'google/bigtable/v2/types_pb' require 'google/protobuf/duration_pb' require 'google/protobuf/timestamp_pb' @@ -18,7 +19,7 @@ require 'google/rpc/status_pb' -descriptor_data = "\n!google/bigtable/v2/bigtable.proto\x12\x12google.bigtable.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x18google/api/routing.proto\x1a\x1dgoogle/bigtable/v2/data.proto\x1a&google/bigtable/v2/request_stats.proto\x1a\x1egoogle/bigtable/v2/types.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x17google/rpc/status.proto\"\xcc\x04\n\x0fReadRowsRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\t \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12U\n\x16materialized_view_name\x18\x0b \x01(\tB5\xe0\x41\x01\xfa\x41/\n-bigtableadmin.googleapis.com/MaterializedView\x12\x16\n\x0e\x61pp_profile_id\x18\x05 \x01(\t\x12(\n\x04rows\x18\x02 \x01(\x0b\x32\x1a.google.bigtable.v2.RowSet\x12-\n\x06\x66ilter\x18\x03 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\x12\x12\n\nrows_limit\x18\x04 \x01(\x03\x12P\n\x12request_stats_view\x18\x06 \x01(\x0e\x32\x34.google.bigtable.v2.ReadRowsRequest.RequestStatsView\x12\x10\n\x08reversed\x18\x07 \x01(\x08\"f\n\x10RequestStatsView\x12\"\n\x1eREQUEST_STATS_VIEW_UNSPECIFIED\x10\x00\x12\x16\n\x12REQUEST_STATS_NONE\x10\x01\x12\x16\n\x12REQUEST_STATS_FULL\x10\x02\"\xb1\x03\n\x10ReadRowsResponse\x12>\n\x06\x63hunks\x18\x01 \x03(\x0b\x32..google.bigtable.v2.ReadRowsResponse.CellChunk\x12\x1c\n\x14last_scanned_row_key\x18\x02 \x01(\x0c\x12\x37\n\rrequest_stats\x18\x03 \x01(\x0b\x32 .google.bigtable.v2.RequestStats\x1a\x85\x02\n\tCellChunk\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x31\n\x0b\x66\x61mily_name\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12.\n\tqualifier\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x18\n\x10timestamp_micros\x18\x04 \x01(\x03\x12\x0e\n\x06labels\x18\x05 \x03(\t\x12\r\n\x05value\x18\x06 \x01(\x0c\x12\x12\n\nvalue_size\x18\x07 \x01(\x05\x12\x13\n\treset_row\x18\x08 \x01(\x08H\x00\x12\x14\n\ncommit_row\x18\t \x01(\x08H\x00\x42\x0c\n\nrow_status\"\x98\x02\n\x14SampleRowKeysRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x04 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12U\n\x16materialized_view_name\x18\x05 \x01(\tB5\xe0\x41\x01\xfa\x41/\n-bigtableadmin.googleapis.com/MaterializedView\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\">\n\x15SampleRowKeysResponse\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x14\n\x0coffset_bytes\x18\x02 \x01(\x03\"\xbf\x02\n\x10MutateRowRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x06 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x04 \x01(\t\x12\x14\n\x07row_key\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\x12\x34\n\tmutations\x18\x03 \x03(\x0b\x32\x1c.google.bigtable.v2.MutationB\x03\xe0\x41\x02\x12\x34\n\x0bidempotency\x18\x08 \x01(\x0b\x32\x1f.google.bigtable.v2.Idempotency\"\x13\n\x11MutateRowResponse\"\x88\x03\n\x11MutateRowsRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x05 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x03 \x01(\t\x12\x41\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.google.bigtable.v2.MutateRowsRequest.EntryB\x03\xe0\x41\x02\x1a\x84\x01\n\x05\x45ntry\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x34\n\tmutations\x18\x02 \x03(\x0b\x32\x1c.google.bigtable.v2.MutationB\x03\xe0\x41\x02\x12\x34\n\x0bidempotency\x18\x03 \x01(\x0b\x32\x1f.google.bigtable.v2.Idempotency\"\xe4\x01\n\x12MutateRowsResponse\x12=\n\x07\x65ntries\x18\x01 \x03(\x0b\x32,.google.bigtable.v2.MutateRowsResponse.Entry\x12?\n\x0frate_limit_info\x18\x03 \x01(\x0b\x32!.google.bigtable.v2.RateLimitInfoH\x00\x88\x01\x01\x1a:\n\x05\x45ntry\x12\r\n\x05index\x18\x01 \x01(\x03\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.StatusB\x12\n\x10_rate_limit_info\"J\n\rRateLimitInfo\x12)\n\x06period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0e\n\x06\x66\x61\x63tor\x18\x02 \x01(\x01\"\x81\x03\n\x18\x43heckAndMutateRowRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\t \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x07 \x01(\t\x12\x14\n\x07row_key\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\x12\x37\n\x10predicate_filter\x18\x06 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\x12\x34\n\x0etrue_mutations\x18\x04 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\x12\x35\n\x0f\x66\x61lse_mutations\x18\x05 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\"6\n\x19\x43heckAndMutateRowResponse\x12\x19\n\x11predicate_matched\x18\x01 \x01(\x08\"i\n\x12PingAndWarmRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\"\x15\n\x13PingAndWarmResponse\"\x99\x02\n\x19ReadModifyWriteRowRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x06 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x04 \x01(\t\x12\x14\n\x07row_key\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\x12;\n\x05rules\x18\x03 \x03(\x0b\x32\'.google.bigtable.v2.ReadModifyWriteRuleB\x03\xe0\x41\x02\"B\n\x1aReadModifyWriteRowResponse\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.google.bigtable.v2.Row\"\x86\x01\n,GenerateInitialChangeStreamPartitionsRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\"g\n-GenerateInitialChangeStreamPartitionsResponse\x12\x36\n\tpartition\x18\x01 \x01(\x0b\x32#.google.bigtable.v2.StreamPartition\"\x9b\x03\n\x17ReadChangeStreamRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\x12\x36\n\tpartition\x18\x03 \x01(\x0b\x32#.google.bigtable.v2.StreamPartition\x12\x30\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12K\n\x13\x63ontinuation_tokens\x18\x06 \x01(\x0b\x32,.google.bigtable.v2.StreamContinuationTokensH\x00\x12,\n\x08\x65nd_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12heartbeat_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0c\n\nstart_from\"\xa9\n\n\x18ReadChangeStreamResponse\x12N\n\x0b\x64\x61ta_change\x18\x01 \x01(\x0b\x32\x37.google.bigtable.v2.ReadChangeStreamResponse.DataChangeH\x00\x12K\n\theartbeat\x18\x02 \x01(\x0b\x32\x36.google.bigtable.v2.ReadChangeStreamResponse.HeartbeatH\x00\x12P\n\x0c\x63lose_stream\x18\x03 \x01(\x0b\x32\x38.google.bigtable.v2.ReadChangeStreamResponse.CloseStreamH\x00\x1a\xf4\x01\n\rMutationChunk\x12X\n\nchunk_info\x18\x01 \x01(\x0b\x32\x44.google.bigtable.v2.ReadChangeStreamResponse.MutationChunk.ChunkInfo\x12.\n\x08mutation\x18\x02 \x01(\x0b\x32\x1c.google.bigtable.v2.Mutation\x1aY\n\tChunkInfo\x12\x1a\n\x12\x63hunked_value_size\x18\x01 \x01(\x05\x12\x1c\n\x14\x63hunked_value_offset\x18\x02 \x01(\x05\x12\x12\n\nlast_chunk\x18\x03 \x01(\x08\x1a\xc6\x03\n\nDataChange\x12J\n\x04type\x18\x01 \x01(\x0e\x32<.google.bigtable.v2.ReadChangeStreamResponse.DataChange.Type\x12\x19\n\x11source_cluster_id\x18\x02 \x01(\t\x12\x0f\n\x07row_key\x18\x03 \x01(\x0c\x12\x34\n\x10\x63ommit_timestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ntiebreaker\x18\x05 \x01(\x05\x12J\n\x06\x63hunks\x18\x06 \x03(\x0b\x32:.google.bigtable.v2.ReadChangeStreamResponse.MutationChunk\x12\x0c\n\x04\x64one\x18\x08 \x01(\x08\x12\r\n\x05token\x18\t \x01(\t\x12;\n\x17\x65stimated_low_watermark\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"P\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04USER\x10\x01\x12\x16\n\x12GARBAGE_COLLECTION\x10\x02\x12\x10\n\x0c\x43ONTINUATION\x10\x03\x1a\x91\x01\n\tHeartbeat\x12G\n\x12\x63ontinuation_token\x18\x01 \x01(\x0b\x32+.google.bigtable.v2.StreamContinuationToken\x12;\n\x17\x65stimated_low_watermark\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\xb8\x01\n\x0b\x43loseStream\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12H\n\x13\x63ontinuation_tokens\x18\x02 \x03(\x0b\x32+.google.bigtable.v2.StreamContinuationToken\x12;\n\x0enew_partitions\x18\x03 \x03(\x0b\x32#.google.bigtable.v2.StreamPartitionB\x0f\n\rstream_record\"\xa1\x03\n\x13\x45xecuteQueryRequest\x12\x44\n\rinstance_name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x1b\n\x0e\x61pp_profile_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x05query\x18\x03 \x01(\tB\x05\x18\x01\xe0\x41\x02\x12\x16\n\x0eprepared_query\x18\t \x01(\x0c\x12;\n\x0cproto_format\x18\x04 \x01(\x0b\x32\x1f.google.bigtable.v2.ProtoFormatB\x02\x18\x01H\x00\x12\x19\n\x0cresume_token\x18\x08 \x01(\x0c\x42\x03\xe0\x41\x01\x12H\n\x06params\x18\x07 \x03(\x0b\x32\x33.google.bigtable.v2.ExecuteQueryRequest.ParamsEntryB\x03\xe0\x41\x02\x1aH\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.google.bigtable.v2.Value:\x02\x38\x01\x42\r\n\x0b\x64\x61ta_format\"\x96\x01\n\x14\x45xecuteQueryResponse\x12\x39\n\x08metadata\x18\x01 \x01(\x0b\x32%.google.bigtable.v2.ResultSetMetadataH\x00\x12\x37\n\x07results\x18\x02 \x01(\x0b\x32$.google.bigtable.v2.PartialResultSetH\x00\x42\n\n\x08response\"\xf4\x02\n\x13PrepareQueryRequest\x12\x44\n\rinstance_name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x1b\n\x0e\x61pp_profile_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05query\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x37\n\x0cproto_format\x18\x04 \x01(\x0b\x32\x1f.google.bigtable.v2.ProtoFormatH\x00\x12Q\n\x0bparam_types\x18\x06 \x03(\x0b\x32\x37.google.bigtable.v2.PrepareQueryRequest.ParamTypesEntryB\x03\xe0\x41\x02\x1aK\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.google.bigtable.v2.Type:\x02\x38\x01\x42\r\n\x0b\x64\x61ta_format\"\x98\x01\n\x14PrepareQueryResponse\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32%.google.bigtable.v2.ResultSetMetadata\x12\x16\n\x0eprepared_query\x18\x02 \x01(\x0c\x12/\n\x0bvalid_until\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp2\xdb\'\n\x08\x42igtable\x12\xd5\x04\n\x08ReadRows\x12#.google.bigtable.v2.ReadRowsRequest\x1a$.google.bigtable.v2.ReadRowsResponse\"\xfb\x03\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02\xf1\x01\"9/v2/{table_name=projects/*/instances/*/tables/*}:readRows:\x01*ZZ\"U/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:readRows:\x01*ZU\"P/v2/{materialized_view_name=projects/*/instances/*/materializedViews/*}:readRows:\x01*\x8a\xd3\xe4\x93\x02\xd3\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12:\n\x16materialized_view_name\x12 {name=projects/*/instances/*}/**0\x01\x12\xea\x04\n\rSampleRowKeys\x12(.google.bigtable.v2.SampleRowKeysRequest\x1a).google.bigtable.v2.SampleRowKeysResponse\"\x81\x04\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02\xf7\x01\x12>/v2/{table_name=projects/*/instances/*/tables/*}:sampleRowKeysZ\\\x12Z/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:sampleRowKeysZW\x12U/v2/{materialized_view_name=projects/*/instances/*/materializedViews/*}:sampleRowKeys\x8a\xd3\xe4\x93\x02\xd3\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12:\n\x16materialized_view_name\x12 {name=projects/*/instances/*}/**0\x01\x12\xe9\x03\n\tMutateRow\x12$.google.bigtable.v2.MutateRowRequest\x1a%.google.bigtable.v2.MutateRowResponse\"\x8e\x03\xda\x41\x1ctable_name,row_key,mutations\xda\x41+table_name,row_key,mutations,app_profile_id\x82\xd3\xe4\x93\x02\x9c\x01\":/v2/{table_name=projects/*/instances/*/tables/*}:mutateRow:\x01*Z[\"V/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:mutateRow:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12\xdc\x03\n\nMutateRows\x12%.google.bigtable.v2.MutateRowsRequest\x1a&.google.bigtable.v2.MutateRowsResponse\"\xfc\x02\xda\x41\x12table_name,entries\xda\x41!table_name,entries,app_profile_id\x82\xd3\xe4\x93\x02\x9e\x01\";/v2/{table_name=projects/*/instances/*/tables/*}:mutateRows:\x01*Z\\\"W/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:mutateRows:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**0\x01\x12\xdd\x04\n\x11\x43heckAndMutateRow\x12,.google.bigtable.v2.CheckAndMutateRowRequest\x1a-.google.bigtable.v2.CheckAndMutateRowResponse\"\xea\x03\xda\x41\x42table_name,row_key,predicate_filter,true_mutations,false_mutations\xda\x41Qtable_name,row_key,predicate_filter,true_mutations,false_mutations,app_profile_id\x82\xd3\xe4\x93\x02\xac\x01\"B/v2/{table_name=projects/*/instances/*/tables/*}:checkAndMutateRow:\x01*Zc\"^/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:checkAndMutateRow:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12\xee\x01\n\x0bPingAndWarm\x12&.google.bigtable.v2.PingAndWarmRequest\x1a\'.google.bigtable.v2.PingAndWarmResponse\"\x8d\x01\xda\x41\x04name\xda\x41\x13name,app_profile_id\x82\xd3\xe4\x93\x02+\"&/v2/{name=projects/*/instances/*}:ping:\x01*\x8a\xd3\xe4\x93\x02\x39\x12%\n\x04name\x12\x1d{name=projects/*/instances/*}\x12\x10\n\x0e\x61pp_profile_id\x12\x8e\x04\n\x12ReadModifyWriteRow\x12-.google.bigtable.v2.ReadModifyWriteRowRequest\x1a..google.bigtable.v2.ReadModifyWriteRowResponse\"\x98\x03\xda\x41\x18table_name,row_key,rules\xda\x41\'table_name,row_key,rules,app_profile_id\x82\xd3\xe4\x93\x02\xae\x01\"C/v2/{table_name=projects/*/instances/*/tables/*}:readModifyWriteRow:\x01*Zd\"_/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:readModifyWriteRow:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12\xbb\x02\n%GenerateInitialChangeStreamPartitions\x12@.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest\x1a\x41.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse\"\x8a\x01\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02[\"V/v2/{table_name=projects/*/instances/*/tables/*}:generateInitialChangeStreamPartitions:\x01*0\x01\x12\xe6\x01\n\x10ReadChangeStream\x12+.google.bigtable.v2.ReadChangeStreamRequest\x1a,.google.bigtable.v2.ReadChangeStreamResponse\"u\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02\x46\"A/v2/{table_name=projects/*/instances/*/tables/*}:readChangeStream:\x01*0\x01\x12\xa9\x02\n\x0cPrepareQuery\x12\'.google.bigtable.v2.PrepareQueryRequest\x1a(.google.bigtable.v2.PrepareQueryResponse\"\xc5\x01\xda\x41\x13instance_name,query\xda\x41\"instance_name,query,app_profile_id\x82\xd3\xe4\x93\x02<\"7/v2/{instance_name=projects/*/instances/*}:prepareQuery:\x01*\x8a\xd3\xe4\x93\x02\x42\x12.\n\rinstance_name\x12\x1d{name=projects/*/instances/*}\x12\x10\n\x0e\x61pp_profile_id\x12\xab\x02\n\x0c\x45xecuteQuery\x12\'.google.bigtable.v2.ExecuteQueryRequest\x1a(.google.bigtable.v2.ExecuteQueryResponse\"\xc5\x01\xda\x41\x13instance_name,query\xda\x41\"instance_name,query,app_profile_id\x82\xd3\xe4\x93\x02<\"7/v2/{instance_name=projects/*/instances/*}:executeQuery:\x01*\x8a\xd3\xe4\x93\x02\x42\x12.\n\rinstance_name\x12\x1d{name=projects/*/instances/*}\x12\x10\n\x0e\x61pp_profile_id0\x01\x1a\xdb\x02\xca\x41\x17\x62igtable.googleapis.com\xd2\x41\xbd\x02https://www.googleapis.com/auth/bigtable.data,https://www.googleapis.com/auth/bigtable.data.readonly,https://www.googleapis.com/auth/cloud-bigtable.data,https://www.googleapis.com/auth/cloud-bigtable.data.readonly,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-onlyB\xf5\x04\n\x16\x63om.google.bigtable.v2B\rBigtableProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2\xea\x41P\n%bigtableadmin.googleapis.com/Instance\x12\'projects/{project}/instances/{instance}\xea\x41\\\n\"bigtableadmin.googleapis.com/Table\x12\x36projects/{project}/instances/{instance}/tables/{table}\xea\x41\x87\x01\n+bigtableadmin.googleapis.com/AuthorizedView\x12Xprojects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}\xea\x41~\n-bigtableadmin.googleapis.com/MaterializedView\x12Mprojects/{project}/instances/{instance}/materializedViews/{materialized_view}b\x06proto3" +descriptor_data = "\n!google/bigtable/v2/bigtable.proto\x12\x12google.bigtable.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x18google/api/routing.proto\x1a\x1dgoogle/bigtable/v2/data.proto\x1a&google/bigtable/v2/request_stats.proto\x1a google/bigtable/v2/session.proto\x1a\x1egoogle/bigtable/v2/types.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x17google/rpc/status.proto\"\xcc\x04\n\x0fReadRowsRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\t \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12U\n\x16materialized_view_name\x18\x0b \x01(\tB5\xe0\x41\x01\xfa\x41/\n-bigtableadmin.googleapis.com/MaterializedView\x12\x16\n\x0e\x61pp_profile_id\x18\x05 \x01(\t\x12(\n\x04rows\x18\x02 \x01(\x0b\x32\x1a.google.bigtable.v2.RowSet\x12-\n\x06\x66ilter\x18\x03 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\x12\x12\n\nrows_limit\x18\x04 \x01(\x03\x12P\n\x12request_stats_view\x18\x06 \x01(\x0e\x32\x34.google.bigtable.v2.ReadRowsRequest.RequestStatsView\x12\x10\n\x08reversed\x18\x07 \x01(\x08\"f\n\x10RequestStatsView\x12\"\n\x1eREQUEST_STATS_VIEW_UNSPECIFIED\x10\x00\x12\x16\n\x12REQUEST_STATS_NONE\x10\x01\x12\x16\n\x12REQUEST_STATS_FULL\x10\x02\"\xb1\x03\n\x10ReadRowsResponse\x12>\n\x06\x63hunks\x18\x01 \x03(\x0b\x32..google.bigtable.v2.ReadRowsResponse.CellChunk\x12\x1c\n\x14last_scanned_row_key\x18\x02 \x01(\x0c\x12\x37\n\rrequest_stats\x18\x03 \x01(\x0b\x32 .google.bigtable.v2.RequestStats\x1a\x85\x02\n\tCellChunk\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x31\n\x0b\x66\x61mily_name\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12.\n\tqualifier\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x18\n\x10timestamp_micros\x18\x04 \x01(\x03\x12\x0e\n\x06labels\x18\x05 \x03(\t\x12\r\n\x05value\x18\x06 \x01(\x0c\x12\x12\n\nvalue_size\x18\x07 \x01(\x05\x12\x13\n\treset_row\x18\x08 \x01(\x08H\x00\x12\x14\n\ncommit_row\x18\t \x01(\x08H\x00\x42\x0c\n\nrow_status\"\x98\x02\n\x14SampleRowKeysRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x04 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12U\n\x16materialized_view_name\x18\x05 \x01(\tB5\xe0\x41\x01\xfa\x41/\n-bigtableadmin.googleapis.com/MaterializedView\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\">\n\x15SampleRowKeysResponse\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x14\n\x0coffset_bytes\x18\x02 \x01(\x03\"\xbf\x02\n\x10MutateRowRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x06 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x04 \x01(\t\x12\x14\n\x07row_key\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\x12\x34\n\tmutations\x18\x03 \x03(\x0b\x32\x1c.google.bigtable.v2.MutationB\x03\xe0\x41\x02\x12\x34\n\x0bidempotency\x18\x08 \x01(\x0b\x32\x1f.google.bigtable.v2.Idempotency\"\x13\n\x11MutateRowResponse\"\x88\x03\n\x11MutateRowsRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x05 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x03 \x01(\t\x12\x41\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.google.bigtable.v2.MutateRowsRequest.EntryB\x03\xe0\x41\x02\x1a\x84\x01\n\x05\x45ntry\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x34\n\tmutations\x18\x02 \x03(\x0b\x32\x1c.google.bigtable.v2.MutationB\x03\xe0\x41\x02\x12\x34\n\x0bidempotency\x18\x03 \x01(\x0b\x32\x1f.google.bigtable.v2.Idempotency\"\xe4\x01\n\x12MutateRowsResponse\x12=\n\x07\x65ntries\x18\x01 \x03(\x0b\x32,.google.bigtable.v2.MutateRowsResponse.Entry\x12?\n\x0frate_limit_info\x18\x03 \x01(\x0b\x32!.google.bigtable.v2.RateLimitInfoH\x00\x88\x01\x01\x1a:\n\x05\x45ntry\x12\r\n\x05index\x18\x01 \x01(\x03\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.StatusB\x12\n\x10_rate_limit_info\"J\n\rRateLimitInfo\x12)\n\x06period\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0e\n\x06\x66\x61\x63tor\x18\x02 \x01(\x01\"\x81\x03\n\x18\x43heckAndMutateRowRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\t \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x07 \x01(\t\x12\x14\n\x07row_key\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\x12\x37\n\x10predicate_filter\x18\x06 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\x12\x34\n\x0etrue_mutations\x18\x04 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\x12\x35\n\x0f\x66\x61lse_mutations\x18\x05 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\"6\n\x19\x43heckAndMutateRowResponse\x12\x19\n\x11predicate_matched\x18\x01 \x01(\x08\"i\n\x12PingAndWarmRequest\x12;\n\x04name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\"\x15\n\x13PingAndWarmResponse\"\x99\x02\n\x19ReadModifyWriteRowRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x01\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12Q\n\x14\x61uthorized_view_name\x18\x06 \x01(\tB3\xe0\x41\x01\xfa\x41-\n+bigtableadmin.googleapis.com/AuthorizedView\x12\x16\n\x0e\x61pp_profile_id\x18\x04 \x01(\t\x12\x14\n\x07row_key\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x02\x12;\n\x05rules\x18\x03 \x03(\x0b\x32\'.google.bigtable.v2.ReadModifyWriteRuleB\x03\xe0\x41\x02\"B\n\x1aReadModifyWriteRowResponse\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.google.bigtable.v2.Row\"\x86\x01\n,GenerateInitialChangeStreamPartitionsRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\"g\n-GenerateInitialChangeStreamPartitionsResponse\x12\x36\n\tpartition\x18\x01 \x01(\x0b\x32#.google.bigtable.v2.StreamPartition\"\x9b\x03\n\x17ReadChangeStreamRequest\x12>\n\ntable_name\x18\x01 \x01(\tB*\xe0\x41\x02\xfa\x41$\n\"bigtableadmin.googleapis.com/Table\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\x12\x36\n\tpartition\x18\x03 \x01(\x0b\x32#.google.bigtable.v2.StreamPartition\x12\x30\n\nstart_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12K\n\x13\x63ontinuation_tokens\x18\x06 \x01(\x0b\x32,.google.bigtable.v2.StreamContinuationTokensH\x00\x12,\n\x08\x65nd_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x35\n\x12heartbeat_duration\x18\x07 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0c\n\nstart_from\"\xa9\n\n\x18ReadChangeStreamResponse\x12N\n\x0b\x64\x61ta_change\x18\x01 \x01(\x0b\x32\x37.google.bigtable.v2.ReadChangeStreamResponse.DataChangeH\x00\x12K\n\theartbeat\x18\x02 \x01(\x0b\x32\x36.google.bigtable.v2.ReadChangeStreamResponse.HeartbeatH\x00\x12P\n\x0c\x63lose_stream\x18\x03 \x01(\x0b\x32\x38.google.bigtable.v2.ReadChangeStreamResponse.CloseStreamH\x00\x1a\xf4\x01\n\rMutationChunk\x12X\n\nchunk_info\x18\x01 \x01(\x0b\x32\x44.google.bigtable.v2.ReadChangeStreamResponse.MutationChunk.ChunkInfo\x12.\n\x08mutation\x18\x02 \x01(\x0b\x32\x1c.google.bigtable.v2.Mutation\x1aY\n\tChunkInfo\x12\x1a\n\x12\x63hunked_value_size\x18\x01 \x01(\x05\x12\x1c\n\x14\x63hunked_value_offset\x18\x02 \x01(\x05\x12\x12\n\nlast_chunk\x18\x03 \x01(\x08\x1a\xc6\x03\n\nDataChange\x12J\n\x04type\x18\x01 \x01(\x0e\x32<.google.bigtable.v2.ReadChangeStreamResponse.DataChange.Type\x12\x19\n\x11source_cluster_id\x18\x02 \x01(\t\x12\x0f\n\x07row_key\x18\x03 \x01(\x0c\x12\x34\n\x10\x63ommit_timestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x12\n\ntiebreaker\x18\x05 \x01(\x05\x12J\n\x06\x63hunks\x18\x06 \x03(\x0b\x32:.google.bigtable.v2.ReadChangeStreamResponse.MutationChunk\x12\x0c\n\x04\x64one\x18\x08 \x01(\x08\x12\r\n\x05token\x18\t \x01(\t\x12;\n\x17\x65stimated_low_watermark\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"P\n\x04Type\x12\x14\n\x10TYPE_UNSPECIFIED\x10\x00\x12\x08\n\x04USER\x10\x01\x12\x16\n\x12GARBAGE_COLLECTION\x10\x02\x12\x10\n\x0c\x43ONTINUATION\x10\x03\x1a\x91\x01\n\tHeartbeat\x12G\n\x12\x63ontinuation_token\x18\x01 \x01(\x0b\x32+.google.bigtable.v2.StreamContinuationToken\x12;\n\x17\x65stimated_low_watermark\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x1a\xb8\x01\n\x0b\x43loseStream\x12\"\n\x06status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12H\n\x13\x63ontinuation_tokens\x18\x02 \x03(\x0b\x32+.google.bigtable.v2.StreamContinuationToken\x12;\n\x0enew_partitions\x18\x03 \x03(\x0b\x32#.google.bigtable.v2.StreamPartitionB\x0f\n\rstream_record\"\xa1\x03\n\x13\x45xecuteQueryRequest\x12\x44\n\rinstance_name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x1b\n\x0e\x61pp_profile_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x05query\x18\x03 \x01(\tB\x05\x18\x01\xe0\x41\x02\x12\x16\n\x0eprepared_query\x18\t \x01(\x0c\x12;\n\x0cproto_format\x18\x04 \x01(\x0b\x32\x1f.google.bigtable.v2.ProtoFormatB\x02\x18\x01H\x00\x12\x19\n\x0cresume_token\x18\x08 \x01(\x0c\x42\x03\xe0\x41\x01\x12H\n\x06params\x18\x07 \x03(\x0b\x32\x33.google.bigtable.v2.ExecuteQueryRequest.ParamsEntryB\x03\xe0\x41\x02\x1aH\n\x0bParamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x19.google.bigtable.v2.Value:\x02\x38\x01\x42\r\n\x0b\x64\x61ta_format\"\x96\x01\n\x14\x45xecuteQueryResponse\x12\x39\n\x08metadata\x18\x01 \x01(\x0b\x32%.google.bigtable.v2.ResultSetMetadataH\x00\x12\x37\n\x07results\x18\x02 \x01(\x0b\x32$.google.bigtable.v2.PartialResultSetH\x00\x42\n\n\x08response\"\xf4\x02\n\x13PrepareQueryRequest\x12\x44\n\rinstance_name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x1b\n\x0e\x61pp_profile_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05query\x18\x03 \x01(\tB\x03\xe0\x41\x02\x12\x37\n\x0cproto_format\x18\x04 \x01(\x0b\x32\x1f.google.bigtable.v2.ProtoFormatH\x00\x12Q\n\x0bparam_types\x18\x06 \x03(\x0b\x32\x37.google.bigtable.v2.PrepareQueryRequest.ParamTypesEntryB\x03\xe0\x41\x02\x1aK\n\x0fParamTypesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\'\n\x05value\x18\x02 \x01(\x0b\x32\x18.google.bigtable.v2.Type:\x02\x38\x01\x42\r\n\x0b\x64\x61ta_format\"\x98\x01\n\x14PrepareQueryResponse\x12\x37\n\x08metadata\x18\x01 \x01(\x0b\x32%.google.bigtable.v2.ResultSetMetadata\x12\x16\n\x0eprepared_query\x18\x02 \x01(\x0c\x12/\n\x0bvalid_until\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp2\x8d+\n\x08\x42igtable\x12\xd5\x04\n\x08ReadRows\x12#.google.bigtable.v2.ReadRowsRequest\x1a$.google.bigtable.v2.ReadRowsResponse\"\xfb\x03\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02\xf1\x01\"9/v2/{table_name=projects/*/instances/*/tables/*}:readRows:\x01*ZZ\"U/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:readRows:\x01*ZU\"P/v2/{materialized_view_name=projects/*/instances/*/materializedViews/*}:readRows:\x01*\x8a\xd3\xe4\x93\x02\xd3\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12:\n\x16materialized_view_name\x12 {name=projects/*/instances/*}/**0\x01\x12\xea\x04\n\rSampleRowKeys\x12(.google.bigtable.v2.SampleRowKeysRequest\x1a).google.bigtable.v2.SampleRowKeysResponse\"\x81\x04\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02\xf7\x01\x12>/v2/{table_name=projects/*/instances/*/tables/*}:sampleRowKeysZ\\\x12Z/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:sampleRowKeysZW\x12U/v2/{materialized_view_name=projects/*/instances/*/materializedViews/*}:sampleRowKeys\x8a\xd3\xe4\x93\x02\xd3\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12:\n\x16materialized_view_name\x12 {name=projects/*/instances/*}/**0\x01\x12\xe9\x03\n\tMutateRow\x12$.google.bigtable.v2.MutateRowRequest\x1a%.google.bigtable.v2.MutateRowResponse\"\x8e\x03\xda\x41\x1ctable_name,row_key,mutations\xda\x41+table_name,row_key,mutations,app_profile_id\x82\xd3\xe4\x93\x02\x9c\x01\":/v2/{table_name=projects/*/instances/*/tables/*}:mutateRow:\x01*Z[\"V/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:mutateRow:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12\xdc\x03\n\nMutateRows\x12%.google.bigtable.v2.MutateRowsRequest\x1a&.google.bigtable.v2.MutateRowsResponse\"\xfc\x02\xda\x41\x12table_name,entries\xda\x41!table_name,entries,app_profile_id\x82\xd3\xe4\x93\x02\x9e\x01\";/v2/{table_name=projects/*/instances/*/tables/*}:mutateRows:\x01*Z\\\"W/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:mutateRows:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**0\x01\x12\xdd\x04\n\x11\x43heckAndMutateRow\x12,.google.bigtable.v2.CheckAndMutateRowRequest\x1a-.google.bigtable.v2.CheckAndMutateRowResponse\"\xea\x03\xda\x41\x42table_name,row_key,predicate_filter,true_mutations,false_mutations\xda\x41Qtable_name,row_key,predicate_filter,true_mutations,false_mutations,app_profile_id\x82\xd3\xe4\x93\x02\xac\x01\"B/v2/{table_name=projects/*/instances/*/tables/*}:checkAndMutateRow:\x01*Zc\"^/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:checkAndMutateRow:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12\xee\x01\n\x0bPingAndWarm\x12&.google.bigtable.v2.PingAndWarmRequest\x1a\'.google.bigtable.v2.PingAndWarmResponse\"\x8d\x01\xda\x41\x04name\xda\x41\x13name,app_profile_id\x82\xd3\xe4\x93\x02+\"&/v2/{name=projects/*/instances/*}:ping:\x01*\x8a\xd3\xe4\x93\x02\x39\x12%\n\x04name\x12\x1d{name=projects/*/instances/*}\x12\x10\n\x0e\x61pp_profile_id\x12\x8e\x04\n\x12ReadModifyWriteRow\x12-.google.bigtable.v2.ReadModifyWriteRowRequest\x1a..google.bigtable.v2.ReadModifyWriteRowResponse\"\x98\x03\xda\x41\x18table_name,row_key,rules\xda\x41\'table_name,row_key,rules,app_profile_id\x82\xd3\xe4\x93\x02\xae\x01\"C/v2/{table_name=projects/*/instances/*/tables/*}:readModifyWriteRow:\x01*Zd\"_/v2/{authorized_view_name=projects/*/instances/*/tables/*/authorizedViews/*}:readModifyWriteRow:\x01*\x8a\xd3\xe4\x93\x02\x97\x01\x12:\n\ntable_name\x12,{table_name=projects/*/instances/*/tables/*}\x12\x10\n\x0e\x61pp_profile_id\x12G\n\x14\x61uthorized_view_name\x12/{table_name=projects/*/instances/*/tables/*}/**\x12\xbb\x02\n%GenerateInitialChangeStreamPartitions\x12@.google.bigtable.v2.GenerateInitialChangeStreamPartitionsRequest\x1a\x41.google.bigtable.v2.GenerateInitialChangeStreamPartitionsResponse\"\x8a\x01\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02[\"V/v2/{table_name=projects/*/instances/*/tables/*}:generateInitialChangeStreamPartitions:\x01*0\x01\x12\xe6\x01\n\x10ReadChangeStream\x12+.google.bigtable.v2.ReadChangeStreamRequest\x1a,.google.bigtable.v2.ReadChangeStreamResponse\"u\xda\x41\ntable_name\xda\x41\x19table_name,app_profile_id\x82\xd3\xe4\x93\x02\x46\"A/v2/{table_name=projects/*/instances/*/tables/*}:readChangeStream:\x01*0\x01\x12\xa9\x02\n\x0cPrepareQuery\x12\'.google.bigtable.v2.PrepareQueryRequest\x1a(.google.bigtable.v2.PrepareQueryResponse\"\xc5\x01\xda\x41\x13instance_name,query\xda\x41\"instance_name,query,app_profile_id\x82\xd3\xe4\x93\x02<\"7/v2/{instance_name=projects/*/instances/*}:prepareQuery:\x01*\x8a\xd3\xe4\x93\x02\x42\x12.\n\rinstance_name\x12\x1d{name=projects/*/instances/*}\x12\x10\n\x0e\x61pp_profile_id\x12\xab\x02\n\x0c\x45xecuteQuery\x12\'.google.bigtable.v2.ExecuteQueryRequest\x1a(.google.bigtable.v2.ExecuteQueryResponse\"\xc5\x01\xda\x41\x13instance_name,query\xda\x41\"instance_name,query,app_profile_id\x82\xd3\xe4\x93\x02<\"7/v2/{instance_name=projects/*/instances/*}:executeQuery:\x01*\x8a\xd3\xe4\x93\x02\x42\x12.\n\rinstance_name\x12\x1d{name=projects/*/instances/*}\x12\x10\n\x0e\x61pp_profile_id0\x01\x12v\n\x16GetClientConfiguration\x12\x31.google.bigtable.v2.GetClientConfigurationRequest\x1a\'.google.bigtable.v2.ClientConfiguration\"\x00\x12`\n\tOpenTable\x12\".google.bigtable.v2.SessionRequest\x1a#.google.bigtable.v2.SessionResponse\"\x06\xa0\xd0\xa5\x8e\x04\x01(\x01\x30\x01\x12i\n\x12OpenAuthorizedView\x12\".google.bigtable.v2.SessionRequest\x1a#.google.bigtable.v2.SessionResponse\"\x06\xa0\xd0\xa5\x8e\x04\x02(\x01\x30\x01\x12k\n\x14OpenMaterializedView\x12\".google.bigtable.v2.SessionRequest\x1a#.google.bigtable.v2.SessionResponse\"\x06\xa0\xd0\xa5\x8e\x04\x03(\x01\x30\x01\x1a\xdb\x02\xca\x41\x17\x62igtable.googleapis.com\xd2\x41\xbd\x02https://www.googleapis.com/auth/bigtable.data,https://www.googleapis.com/auth/bigtable.data.readonly,https://www.googleapis.com/auth/cloud-bigtable.data,https://www.googleapis.com/auth/cloud-bigtable.data.readonly,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/cloud-platform.read-onlyB\xf5\x04\n\x16\x63om.google.bigtable.v2B\rBigtableProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2\xea\x41P\n%bigtableadmin.googleapis.com/Instance\x12\'projects/{project}/instances/{instance}\xea\x41\\\n\"bigtableadmin.googleapis.com/Table\x12\x36projects/{project}/instances/{instance}/tables/{table}\xea\x41\x87\x01\n+bigtableadmin.googleapis.com/AuthorizedView\x12Xprojects/{project}/instances/{instance}/tables/{table}/authorizedViews/{authorized_view}\xea\x41~\n-bigtableadmin.googleapis.com/MaterializedView\x12Mprojects/{project}/instances/{instance}/materializedViews/{materialized_view}b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_services_pb.rb b/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_services_pb.rb index a439e312ddcb..6c79dd9c2c3a 100644 --- a/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_services_pb.rb +++ b/google-cloud-bigtable-v2/lib/google/bigtable/v2/bigtable_services_pb.rb @@ -76,6 +76,22 @@ class Service rpc :PrepareQuery, ::Google::Cloud::Bigtable::V2::PrepareQueryRequest, ::Google::Cloud::Bigtable::V2::PrepareQueryResponse # Executes a SQL query against a particular Bigtable instance. rpc :ExecuteQuery, ::Google::Cloud::Bigtable::V2::ExecuteQueryRequest, stream(::Google::Cloud::Bigtable::V2::ExecuteQueryResponse) + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + rpc :GetClientConfiguration, ::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest, ::Google::Cloud::Bigtable::V2::ClientConfiguration + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + rpc :OpenTable, stream(::Google::Cloud::Bigtable::V2::SessionRequest), stream(::Google::Cloud::Bigtable::V2::SessionResponse) + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + rpc :OpenAuthorizedView, stream(::Google::Cloud::Bigtable::V2::SessionRequest), stream(::Google::Cloud::Bigtable::V2::SessionResponse) + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + rpc :OpenMaterializedView, stream(::Google::Cloud::Bigtable::V2::SessionRequest), stream(::Google::Cloud::Bigtable::V2::SessionResponse) end Stub = Service.rpc_stub_class diff --git a/google-cloud-bigtable-v2/lib/google/bigtable/v2/feature_flags_pb.rb b/google-cloud-bigtable-v2/lib/google/bigtable/v2/feature_flags_pb.rb index 9ac6658f8006..c5c50da67dac 100644 --- a/google-cloud-bigtable-v2/lib/google/bigtable/v2/feature_flags_pb.rb +++ b/google-cloud-bigtable-v2/lib/google/bigtable/v2/feature_flags_pb.rb @@ -5,7 +5,7 @@ require 'google/protobuf' -descriptor_data = "\n&google/bigtable/v2/feature_flags.proto\x12\x12google.bigtable.v2\"\xb1\x02\n\x0c\x46\x65\x61tureFlags\x12\x15\n\rreverse_scans\x18\x01 \x01(\x08\x12\x1e\n\x16mutate_rows_rate_limit\x18\x03 \x01(\x08\x12\x1f\n\x17mutate_rows_rate_limit2\x18\x05 \x01(\x08\x12\"\n\x1alast_scanned_row_responses\x18\x04 \x01(\x08\x12\x16\n\x0erouting_cookie\x18\x06 \x01(\x08\x12\x12\n\nretry_info\x18\x07 \x01(\x08\x12#\n\x1b\x63lient_side_metrics_enabled\x18\x08 \x01(\x08\x12 \n\x18traffic_director_enabled\x18\t \x01(\x08\x12\x1f\n\x17\x64irect_access_requested\x18\n \x01(\x08\x12\x11\n\tpeer_info\x18\x0b \x01(\x08\x42\xbb\x01\n\x16\x63om.google.bigtable.v2B\x11\x46\x65\x61tureFlagsProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2b\x06proto3" +descriptor_data = "\n&google/bigtable/v2/feature_flags.proto\x12\x12google.bigtable.v2\"\xe9\x02\n\x0c\x46\x65\x61tureFlags\x12\x15\n\rreverse_scans\x18\x01 \x01(\x08\x12\x1e\n\x16mutate_rows_rate_limit\x18\x03 \x01(\x08\x12\x1f\n\x17mutate_rows_rate_limit2\x18\x05 \x01(\x08\x12\"\n\x1alast_scanned_row_responses\x18\x04 \x01(\x08\x12\x16\n\x0erouting_cookie\x18\x06 \x01(\x08\x12\x12\n\nretry_info\x18\x07 \x01(\x08\x12#\n\x1b\x63lient_side_metrics_enabled\x18\x08 \x01(\x08\x12 \n\x18traffic_director_enabled\x18\t \x01(\x08\x12\x1f\n\x17\x64irect_access_requested\x18\n \x01(\x08\x12\x11\n\tpeer_info\x18\x0b \x01(\x08\x12\x1b\n\x13sessions_compatible\x18\x0c \x01(\x08\x12\x19\n\x11sessions_required\x18\r \x01(\x08\x42\xbb\x01\n\x16\x63om.google.bigtable.v2B\x11\x46\x65\x61tureFlagsProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/google-cloud-bigtable-v2/lib/google/bigtable/v2/peer_info_pb.rb b/google-cloud-bigtable-v2/lib/google/bigtable/v2/peer_info_pb.rb index 8d46d3c4d318..28f5bff56e72 100644 --- a/google-cloud-bigtable-v2/lib/google/bigtable/v2/peer_info_pb.rb +++ b/google-cloud-bigtable-v2/lib/google/bigtable/v2/peer_info_pb.rb @@ -5,7 +5,7 @@ require 'google/protobuf' -descriptor_data = "\n\"google/bigtable/v2/peer_info.proto\x12\x12google.bigtable.v2\"\xfa\x03\n\x08PeerInfo\x12\x1a\n\x12google_frontend_id\x18\x01 \x01(\x03\x12\x1f\n\x17\x61pplication_frontend_id\x18\x02 \x01(\x03\x12!\n\x19\x61pplication_frontend_zone\x18\x03 \x01(\t\x12$\n\x1c\x61pplication_frontend_subzone\x18\x04 \x01(\t\x12\x42\n\x0etransport_type\x18\x05 \x01(\x0e\x32*.google.bigtable.v2.PeerInfo.TransportType\"\xa3\x02\n\rTransportType\x12\x1a\n\x16TRANSPORT_TYPE_UNKNOWN\x10\x00\x12\x1b\n\x17TRANSPORT_TYPE_EXTERNAL\x10\x01\x12\x1d\n\x19TRANSPORT_TYPE_CLOUD_PATH\x10\x02\x12 \n\x1cTRANSPORT_TYPE_DIRECT_ACCESS\x10\x03\x12\"\n\x1eTRANSPORT_TYPE_SESSION_UNKNOWN\x10\x04\x12#\n\x1fTRANSPORT_TYPE_SESSION_EXTERNAL\x10\x05\x12%\n!TRANSPORT_TYPE_SESSION_CLOUD_PATH\x10\x06\x12(\n$TRANSPORT_TYPE_SESSION_DIRECT_ACCESS\x10\x07\x42\xb7\x01\n\x16\x63om.google.bigtable.v2B\rPeerInfoProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2b\x06proto3" +descriptor_data = "\n\"google/bigtable/v2/peer_info.proto\x12\x12google.bigtable.v2\"\xa3\x04\n\x08PeerInfo\x12\x1a\n\x12google_frontend_id\x18\x01 \x01(\x03\x12\x1f\n\x17\x61pplication_frontend_id\x18\x02 \x01(\x03\x12#\n\x1b\x61pplication_frontend_region\x18\x06 \x01(\t\x12%\n\x19\x61pplication_frontend_zone\x18\x03 \x01(\tB\x02\x18\x01\x12$\n\x1c\x61pplication_frontend_subzone\x18\x04 \x01(\t\x12\x42\n\x0etransport_type\x18\x05 \x01(\x0e\x32*.google.bigtable.v2.PeerInfo.TransportType\"\xa3\x02\n\rTransportType\x12\x1a\n\x16TRANSPORT_TYPE_UNKNOWN\x10\x00\x12\x1b\n\x17TRANSPORT_TYPE_EXTERNAL\x10\x01\x12\x1d\n\x19TRANSPORT_TYPE_CLOUD_PATH\x10\x02\x12 \n\x1cTRANSPORT_TYPE_DIRECT_ACCESS\x10\x03\x12\"\n\x1eTRANSPORT_TYPE_SESSION_UNKNOWN\x10\x04\x12#\n\x1fTRANSPORT_TYPE_SESSION_EXTERNAL\x10\x05\x12%\n!TRANSPORT_TYPE_SESSION_CLOUD_PATH\x10\x06\x12(\n$TRANSPORT_TYPE_SESSION_DIRECT_ACCESS\x10\x07\x42\xb7\x01\n\x16\x63om.google.bigtable.v2B\rPeerInfoProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) diff --git a/google-cloud-bigtable-v2/lib/google/bigtable/v2/session_pb.rb b/google-cloud-bigtable-v2/lib/google/bigtable/v2/session_pb.rb new file mode 100644 index 000000000000..b841bcb44a67 --- /dev/null +++ b/google-cloud-bigtable-v2/lib/google/bigtable/v2/session_pb.rb @@ -0,0 +1,84 @@ +# frozen_string_literal: true +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: google/bigtable/v2/session.proto + +require 'google/protobuf' + +require 'google/api/field_behavior_pb' +require 'google/api/resource_pb' +require 'google/bigtable/v2/data_pb' +require 'google/bigtable/v2/feature_flags_pb' +require 'google/bigtable/v2/request_stats_pb' +require 'google/protobuf/descriptor_pb' +require 'google/protobuf/duration_pb' +require 'google/protobuf/timestamp_pb' +require 'google/rpc/error_details_pb' +require 'google/rpc/status_pb' + + +descriptor_data = "\n google/bigtable/v2/session.proto\x12\x12google.bigtable.v2\x1a\x1fgoogle/api/field_behavior.proto\x1a\x19google/api/resource.proto\x1a\x1dgoogle/bigtable/v2/data.proto\x1a&google/bigtable/v2/feature_flags.proto\x1a&google/bigtable/v2/request_stats.proto\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/rpc/error_details.proto\x1a\x17google/rpc/status.proto\"\x82\x01\n\x1dGetClientConfigurationRequest\x12\x44\n\rinstance_name\x18\x01 \x01(\tB-\xe0\x41\x02\xfa\x41\'\n%bigtableadmin.googleapis.com/Instance\x12\x1b\n\x0e\x61pp_profile_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\xee\x02\n\x14LoadBalancingOptions\x12Q\n\x0fleast_in_flight\x18\x01 \x01(\x0b\x32\x36.google.bigtable.v2.LoadBalancingOptions.LeastInFlightH\x00\x12\x46\n\tpeak_ewma\x18\x02 \x01(\x0b\x32\x31.google.bigtable.v2.LoadBalancingOptions.PeakEwmaH\x00\x12\x41\n\x06random\x18\x04 \x01(\x0b\x32/.google.bigtable.v2.LoadBalancingOptions.RandomH\x00\x1a+\n\rLeastInFlight\x12\x1a\n\x12random_subset_size\x18\x01 \x01(\x03\x1a&\n\x08PeakEwma\x12\x1a\n\x12random_subset_size\x18\x01 \x01(\x03\x1a\x08\n\x06RandomB\x19\n\x17load_balancing_strategy\"\xbc\n\n\x1aSessionClientConfiguration\x12\x14\n\x0csession_load\x18\x01 \x01(\x02\x12L\n\x16load_balancing_options\x18\x02 \x01(\x0b\x32(.google.bigtable.v2.LoadBalancingOptionsB\x02\x18\x01\x12\x66\n\x15\x63hannel_configuration\x18\x03 \x01(\x0b\x32G.google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration\x12k\n\x1asession_pool_configuration\x18\x04 \x01(\x0b\x32G.google.bigtable.v2.SessionClientConfiguration.SessionPoolConfiguration\x1a\xfe\x04\n\x18\x43hannelPoolConfiguration\x12\x18\n\x10min_server_count\x18\x01 \x01(\x05\x12\x18\n\x10max_server_count\x18\x02 \x01(\x05\x12 \n\x18per_server_session_count\x18\x03 \x01(\x05\x12\x87\x01\n\x1b\x64irect_access_with_fallback\x18\x04 \x01(\x0b\x32`.google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration.DirectAccessWithFallbackH\x00\x12v\n\x12\x64irect_access_only\x18\x05 \x01(\x0b\x32X.google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration.DirectAccessOnlyH\x00\x12p\n\x0f\x63loud_path_only\x18\x06 \x01(\x0b\x32U.google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration.CloudPathOnlyH\x00\x1ak\n\x18\x44irectAccessWithFallback\x12\x1c\n\x14\x65rror_rate_threshold\x18\x01 \x01(\x02\x12\x31\n\x0e\x63heck_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x12\n\x10\x44irectAccessOnly\x1a\x0f\n\rCloudPathOnlyB\x06\n\x04mode\x1a\xe3\x02\n\x18SessionPoolConfiguration\x12\x10\n\x08headroom\x18\x01 \x01(\x02\x12\x19\n\x11min_session_count\x18\x02 \x01(\x05\x12\x19\n\x11max_session_count\x18\x03 \x01(\x05\x12 \n\x18new_session_queue_length\x18\x04 \x01(\x05\x12#\n\x1bnew_session_creation_budget\x18\x05 \x01(\x05\x12?\n\x1cnew_session_creation_penalty\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12-\n%consecutive_session_failure_threshold\x18\x08 \x01(\x05\x12H\n\x16load_balancing_options\x18\t \x01(\x0b\x32(.google.bigtable.v2.LoadBalancingOptions\"\xad\x01\n\x16TelemetryConfiguration\x12I\n\x0f\x64\x65\x62ug_tag_level\x18\x01 \x01(\x0e\x32\x30.google.bigtable.v2.TelemetryConfiguration.Level\"H\n\x05Level\x12\x15\n\x11LEVEL_UNSPECIFIED\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\x01\x12\x08\n\x04INFO\x10\x02\x12\x08\n\x04WARN\x10\x03\x12\t\n\x05\x45RROR\x10\x04\"\x8f\x04\n\x13\x43lientConfiguration\x12M\n\x15session_configuration\x18\x02 \x01(\x0b\x32..google.bigtable.v2.SessionClientConfiguration\x12\x16\n\x0cstop_polling\x18\x03 \x01(\x08H\x00\x12\x39\n\x10polling_interval\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x02\x18\x01H\x00\x12]\n\x15polling_configuration\x18\x05 \x01(\x0b\x32<.google.bigtable.v2.ClientConfiguration.PollingConfigurationH\x00\x12K\n\x17telemetry_configuration\x18\x06 \x01(\x0b\x32*.google.bigtable.v2.TelemetryConfiguration\x1a\x9e\x01\n\x14PollingConfiguration\x12\x33\n\x10polling_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11validity_duration\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1b\n\x13max_rpc_retry_count\x18\x06 \x01(\x05\x42\t\n\x07polling\"\xdb\x01\n\x0eSessionRequest\x12>\n\x0copen_session\x18\x01 \x01(\x0b\x32&.google.bigtable.v2.OpenSessionRequestH\x00\x12@\n\rclose_session\x18\x02 \x01(\x0b\x32\'.google.bigtable.v2.CloseSessionRequestH\x00\x12<\n\x0bvirtual_rpc\x18\x03 \x01(\x0b\x32%.google.bigtable.v2.VirtualRpcRequestH\x00\x42\t\n\x07payload\"\xdc\x03\n\x0fSessionResponse\x12?\n\x0copen_session\x18\x01 \x01(\x0b\x32\'.google.bigtable.v2.OpenSessionResponseH\x00\x12=\n\x0bvirtual_rpc\x18\x02 \x01(\x0b\x32&.google.bigtable.v2.VirtualRpcResponseH\x00\x12\x32\n\x05\x65rror\x18\x03 \x01(\x0b\x32!.google.bigtable.v2.ErrorResponseH\x00\x12K\n\x12session_parameters\x18\x04 \x01(\x0b\x32-.google.bigtable.v2.SessionParametersResponseH\x00\x12:\n\theartbeat\x18\x05 \x01(\x0b\x32%.google.bigtable.v2.HeartbeatResponseH\x00\x12\x35\n\x07go_away\x18\x06 \x01(\x0b\x32\".google.bigtable.v2.GoAwayResponseH\x00\x12J\n\x16session_refresh_config\x18\x07 \x01(\x0b\x32(.google.bigtable.v2.SessionRefreshConfigH\x00\x42\t\n\x07payload\"\xb8\x01\n\x12OpenSessionRequest\x12\x18\n\x10protocol_version\x18\x01 \x01(\x03\x12/\n\x05\x66lags\x18\x02 \x01(\x0b\x32 .google.bigtable.v2.FeatureFlags\x12.\n&consecutive_failed_connection_attempts\x18\x03 \x01(\x03\x12\x16\n\x0erouting_cookie\x18\x04 \x01(\x0c\x12\x0f\n\x07payload\x18\x05 \x01(\x0c\"s\n\x11\x42\x61\x63kendIdentifier\x12\x1a\n\x12google_frontend_id\x18\x01 \x01(\x03\x12\x1f\n\x17\x61pplication_frontend_id\x18\x02 \x01(\x03\x12!\n\x19\x61pplication_frontend_zone\x18\x03 \x01(\t\"^\n\x13OpenSessionResponse\x12\x36\n\x07\x62\x61\x63kend\x18\x02 \x01(\x0b\x32%.google.bigtable.v2.BackendIdentifier\x12\x0f\n\x07payload\x18\x01 \x01(\x0c\"\xdb\x02\n\x13\x43loseSessionRequest\x12J\n\x06reason\x18\x01 \x01(\x0e\x32:.google.bigtable.v2.CloseSessionRequest.CloseSessionReason\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\xe2\x01\n\x12\x43loseSessionReason\x12\x1e\n\x1a\x43LOSE_SESSION_REASON_UNSET\x10\x00\x12\x1f\n\x1b\x43LOSE_SESSION_REASON_GOAWAY\x10\x01\x12\x1e\n\x1a\x43LOSE_SESSION_REASON_ERROR\x10\x02\x12\x1d\n\x19\x43LOSE_SESSION_REASON_USER\x10\x03\x12!\n\x1d\x43LOSE_SESSION_REASON_DOWNSIZE\x10\x04\x12)\n%CLOSE_SESSION_REASON_MISSED_HEARTBEAT\x10\x05\"\xf5\x01\n\x10OpenTableRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\x12\x43\n\npermission\x18\x03 \x01(\x0e\x32/.google.bigtable.v2.OpenTableRequest.Permission\"h\n\nPermission\x12\x14\n\x10PERMISSION_UNSET\x10\x00\x12\x13\n\x0fPERMISSION_READ\x10\x01\x12\x14\n\x10PERMISSION_WRITE\x10\x02\x12\x19\n\x15PERMISSION_READ_WRITE\x10\x03:\x06\xd0\xc2\xed\x91\x04\x01\"\x1b\n\x11OpenTableResponse:\x06\xd0\xc2\xed\x91\x04\x01\"\x91\x02\n\x19OpenAuthorizedViewRequest\x12\x1c\n\x14\x61uthorized_view_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\x12L\n\npermission\x18\x03 \x01(\x0e\x32\x38.google.bigtable.v2.OpenAuthorizedViewRequest.Permission\"h\n\nPermission\x12\x14\n\x10PERMISSION_UNSET\x10\x00\x12\x13\n\x0fPERMISSION_READ\x10\x01\x12\x14\n\x10PERMISSION_WRITE\x10\x02\x12\x19\n\x15PERMISSION_READ_WRITE\x10\x03:\x06\xd0\xc2\xed\x91\x04\x02\"$\n\x1aOpenAuthorizedViewResponse:\x06\xd0\xc2\xed\x91\x04\x02\"\xe6\x01\n\x1bOpenMaterializedViewRequest\x12\x1e\n\x16materialized_view_name\x18\x01 \x01(\t\x12\x16\n\x0e\x61pp_profile_id\x18\x02 \x01(\t\x12N\n\npermission\x18\x03 \x01(\x0e\x32:.google.bigtable.v2.OpenMaterializedViewRequest.Permission\"7\n\nPermission\x12\x14\n\x10PERMISSION_UNSET\x10\x00\x12\x13\n\x0fPERMISSION_READ\x10\x01:\x06\xd0\xc2\xed\x91\x04\x03\"&\n\x1cOpenMaterializedViewResponse:\x06\xd0\xc2\xed\x91\x04\x03\"\x8f\x02\n\x11VirtualRpcRequest\x12\x0e\n\x06rpc_id\x18\x01 \x01(\x03\x12+\n\x08\x64\x65\x61\x64line\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\x08metadata\x18\x03 \x01(\x0b\x32..google.bigtable.v2.VirtualRpcRequest.Metadata\x12\x0f\n\x07payload\x18\x04 \x01(\x0c\x1aj\n\x08Metadata\x12\x16\n\x0e\x61ttempt_number\x18\x01 \x01(\x03\x12\x31\n\rattempt_start\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x13\n\x0btraceparent\x18\x03 \x01(\t\"9\n\x12\x43lusterInformation\x12\x12\n\ncluster_id\x18\x01 \x01(\t\x12\x0f\n\x07zone_id\x18\x02 \x01(\t\"I\n\x13SessionRequestStats\x12\x32\n\x0f\x62\x61\x63kend_latency\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\xab\x01\n\x12VirtualRpcResponse\x12\x0e\n\x06rpc_id\x18\x01 \x01(\x03\x12<\n\x0c\x63luster_info\x18\x02 \x01(\x0b\x32&.google.bigtable.v2.ClusterInformation\x12\x36\n\x05stats\x18\x04 \x01(\x0b\x32\'.google.bigtable.v2.SessionRequestStats\x12\x0f\n\x07payload\x18\x03 \x01(\x0c\"\xac\x01\n\rErrorResponse\x12\x0e\n\x06rpc_id\x18\x01 \x01(\x03\x12<\n\x0c\x63luster_info\x18\x02 \x01(\x0b\x32&.google.bigtable.v2.ClusterInformation\x12\"\n\x06status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\x12)\n\nretry_info\x18\x04 \x01(\x0b\x32\x15.google.rpc.RetryInfo\"\xa4\x01\n\x0cTableRequest\x12=\n\x08read_row\x18\x01 \x01(\x0b\x32).google.bigtable.v2.SessionReadRowRequestH\x00\x12\x41\n\nmutate_row\x18\x02 \x01(\x0b\x32+.google.bigtable.v2.SessionMutateRowRequestH\x00:\x07\xaa\xed\xed\x91\x04\x01\x01\x42\t\n\x07payload\"\xa7\x01\n\rTableResponse\x12>\n\x08read_row\x18\x01 \x01(\x0b\x32*.google.bigtable.v2.SessionReadRowResponseH\x00\x12\x42\n\nmutate_row\x18\x02 \x01(\x0b\x32,.google.bigtable.v2.SessionMutateRowResponseH\x00:\x07\xaa\xed\xed\x91\x04\x01\x01\x42\t\n\x07payload\"\xad\x01\n\x15\x41uthorizedViewRequest\x12=\n\x08read_row\x18\x01 \x01(\x0b\x32).google.bigtable.v2.SessionReadRowRequestH\x00\x12\x41\n\nmutate_row\x18\x02 \x01(\x0b\x32+.google.bigtable.v2.SessionMutateRowRequestH\x00:\x07\xaa\xed\xed\x91\x04\x01\x02\x42\t\n\x07payload\"\xb0\x01\n\x16\x41uthorizedViewResponse\x12>\n\x08read_row\x18\x01 \x01(\x0b\x32*.google.bigtable.v2.SessionReadRowResponseH\x00\x12\x42\n\nmutate_row\x18\x02 \x01(\x0b\x32,.google.bigtable.v2.SessionMutateRowResponseH\x00:\x07\xaa\xed\xed\x91\x04\x01\x02\x42\t\n\x07payload\"l\n\x17MaterializedViewRequest\x12=\n\x08read_row\x18\x01 \x01(\x0b\x32).google.bigtable.v2.SessionReadRowRequestH\x00:\x07\xaa\xed\xed\x91\x04\x01\x03\x42\t\n\x07payload\"n\n\x18MaterializedViewResponse\x12>\n\x08read_row\x18\x01 \x01(\x0b\x32*.google.bigtable.v2.SessionReadRowResponseH\x00:\x07\xaa\xed\xed\x91\x04\x01\x03\x42\t\n\x07payload\"S\n\x15SessionReadRowRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12-\n\x06\x66ilter\x18\x02 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\"o\n\x16SessionReadRowResponse\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.google.bigtable.v2.Row\x12/\n\x05stats\x18\x02 \x01(\x0b\x32 .google.bigtable.v2.RequestStats\"W\n\x17SessionMutateRowRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12/\n\tmutations\x18\x02 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\"\x1a\n\x18SessionMutateRowResponse\"J\n\x19SessionParametersResponse\x12-\n\nkeep_alive\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\"\x13\n\x11HeartbeatResponse\"S\n\x0eGoAwayResponse\x12\x0e\n\x06reason\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x1c\n\x14last_rpc_id_admitted\x18\x03 \x01(\x03\"\xda\x01\n\x14SessionRefreshConfig\x12\x46\n\x16optimized_open_request\x18\x01 \x01(\x0b\x32&.google.bigtable.v2.OpenSessionRequest\x12H\n\x08metadata\x18\x02 \x03(\x0b\x32\x31.google.bigtable.v2.SessionRefreshConfig.MetadataB\x03\xe0\x41\x03\x1a\x30\n\x08Metadata\x12\x10\n\x03key\x18\x01 \x01(\tB\x03\xe0\x41\x03\x12\x12\n\x05value\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x03*\xa3\x01\n\x0bSessionType\x12\x16\n\x12SESSION_TYPE_UNSET\x10\x00\x12\x16\n\x12SESSION_TYPE_TABLE\x10\x01\x12 \n\x1cSESSION_TYPE_AUTHORIZED_VIEW\x10\x02\x12\"\n\x1eSESSION_TYPE_MATERIALIZED_VIEW\x10\x03\x12\x1e\n\x11SESSION_TYPE_TEST\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01:^\n\x11open_session_type\x12\x1f.google.protobuf.MessageOptions\x18\xaa\xd8\x9d\x42 \x01(\x0e\x32\x1f.google.bigtable.v2.SessionType:^\n\x11vrpc_session_type\x12\x1f.google.protobuf.MessageOptions\x18\xd5\xdd\x9d\x42 \x03(\x0e\x32\x1f.google.bigtable.v2.SessionType:\\\n\x10rpc_session_type\x12\x1e.google.protobuf.MethodOptions\x18\x84\xda\xe4\x41 \x01(\x0e\x32\x1f.google.bigtable.v2.SessionTypeB\xb6\x01\n\x16\x63om.google.bigtable.v2B\x0cSessionProtoP\x01Z8cloud.google.com/go/bigtable/apiv2/bigtablepb;bigtablepb\xaa\x02\x18Google.Cloud.Bigtable.V2\xca\x02\x18Google\\Cloud\\Bigtable\\V2\xea\x02\x1bGoogle::Cloud::Bigtable::V2b\x06proto3" + +pool = ::Google::Protobuf::DescriptorPool.generated_pool +pool.add_serialized_file(descriptor_data) + +module Google + module Cloud + module Bigtable + module V2 + GetClientConfigurationRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.GetClientConfigurationRequest").msgclass + LoadBalancingOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.LoadBalancingOptions").msgclass + LoadBalancingOptions::LeastInFlight = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.LoadBalancingOptions.LeastInFlight").msgclass + LoadBalancingOptions::PeakEwma = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.LoadBalancingOptions.PeakEwma").msgclass + LoadBalancingOptions::Random = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.LoadBalancingOptions.Random").msgclass + SessionClientConfiguration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionClientConfiguration").msgclass + SessionClientConfiguration::ChannelPoolConfiguration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration").msgclass + SessionClientConfiguration::ChannelPoolConfiguration::DirectAccessWithFallback = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration.DirectAccessWithFallback").msgclass + SessionClientConfiguration::ChannelPoolConfiguration::DirectAccessOnly = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration.DirectAccessOnly").msgclass + SessionClientConfiguration::ChannelPoolConfiguration::CloudPathOnly = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionClientConfiguration.ChannelPoolConfiguration.CloudPathOnly").msgclass + SessionClientConfiguration::SessionPoolConfiguration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionClientConfiguration.SessionPoolConfiguration").msgclass + TelemetryConfiguration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.TelemetryConfiguration").msgclass + TelemetryConfiguration::Level = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.TelemetryConfiguration.Level").enummodule + ClientConfiguration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.ClientConfiguration").msgclass + ClientConfiguration::PollingConfiguration = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.ClientConfiguration.PollingConfiguration").msgclass + SessionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionRequest").msgclass + SessionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionResponse").msgclass + OpenSessionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenSessionRequest").msgclass + BackendIdentifier = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.BackendIdentifier").msgclass + OpenSessionResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenSessionResponse").msgclass + CloseSessionRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.CloseSessionRequest").msgclass + CloseSessionRequest::CloseSessionReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.CloseSessionRequest.CloseSessionReason").enummodule + OpenTableRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenTableRequest").msgclass + OpenTableRequest::Permission = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenTableRequest.Permission").enummodule + OpenTableResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenTableResponse").msgclass + OpenAuthorizedViewRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenAuthorizedViewRequest").msgclass + OpenAuthorizedViewRequest::Permission = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenAuthorizedViewRequest.Permission").enummodule + OpenAuthorizedViewResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenAuthorizedViewResponse").msgclass + OpenMaterializedViewRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenMaterializedViewRequest").msgclass + OpenMaterializedViewRequest::Permission = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenMaterializedViewRequest.Permission").enummodule + OpenMaterializedViewResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.OpenMaterializedViewResponse").msgclass + VirtualRpcRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.VirtualRpcRequest").msgclass + VirtualRpcRequest::Metadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.VirtualRpcRequest.Metadata").msgclass + ClusterInformation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.ClusterInformation").msgclass + SessionRequestStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionRequestStats").msgclass + VirtualRpcResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.VirtualRpcResponse").msgclass + ErrorResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.ErrorResponse").msgclass + TableRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.TableRequest").msgclass + TableResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.TableResponse").msgclass + AuthorizedViewRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.AuthorizedViewRequest").msgclass + AuthorizedViewResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.AuthorizedViewResponse").msgclass + MaterializedViewRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.MaterializedViewRequest").msgclass + MaterializedViewResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.MaterializedViewResponse").msgclass + SessionReadRowRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionReadRowRequest").msgclass + SessionReadRowResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionReadRowResponse").msgclass + SessionMutateRowRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionMutateRowRequest").msgclass + SessionMutateRowResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionMutateRowResponse").msgclass + SessionParametersResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionParametersResponse").msgclass + HeartbeatResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.HeartbeatResponse").msgclass + GoAwayResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.GoAwayResponse").msgclass + SessionRefreshConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionRefreshConfig").msgclass + SessionRefreshConfig::Metadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionRefreshConfig.Metadata").msgclass + SessionType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.bigtable.v2.SessionType").enummodule + end + end + end +end diff --git a/google-cloud-bigtable-v2/lib/google/cloud/bigtable/v2/bigtable/client.rb b/google-cloud-bigtable-v2/lib/google/cloud/bigtable/v2/bigtable/client.rb index a7dc7d863a8b..4fa96af08b3d 100644 --- a/google-cloud-bigtable-v2/lib/google/cloud/bigtable/v2/bigtable/client.rb +++ b/google-cloud-bigtable-v2/lib/google/cloud/bigtable/v2/bigtable/client.rb @@ -1544,6 +1544,333 @@ def execute_query request, options = nil raise ::Google::Cloud::Error.from_error(e) end + ## + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + # + # @overload get_client_configuration(request, options = nil) + # Pass arguments to `get_client_configuration` via a request object, either of type + # {::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest} or an equivalent Hash. + # + # @param request [::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload get_client_configuration(instance_name: nil, app_profile_id: nil) + # Pass arguments to `get_client_configuration` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param instance_name [::String] + # Required. The unique name of the instance for which the client will target + # with Data API requests. + # + # Values are of the form `projects//instances/` + # @param app_profile_id [::String] + # Optional. The name of the AppProfile which will be used by the client when + # sending requests in the Data API. + # + # If not specified, the `default` application profile will be used. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Google::Cloud::Bigtable::V2::ClientConfiguration] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Google::Cloud::Bigtable::V2::ClientConfiguration] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/bigtable/v2" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Cloud::Bigtable::V2::GetClientConfigurationRequest.new + # + # # Call the get_client_configuration method. + # result = client.get_client_configuration request + # + # # The returned object is of type Google::Cloud::Bigtable::V2::ClientConfiguration. + # p result + # + def get_client_configuration request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.get_client_configuration.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Bigtable::V2::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.get_client_configuration.timeout, + metadata: metadata, + retry_policy: @config.rpcs.get_client_configuration.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @bigtable_stub.call_rpc :get_client_configuration, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + # + # @param request [::Gapic::StreamInput, ::Enumerable<::Google::Cloud::Bigtable::V2::SessionRequest, ::Hash>] + # An enumerable of {::Google::Cloud::Bigtable::V2::SessionRequest} instances. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Enumerable<::Google::Cloud::Bigtable::V2::SessionResponse>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Enumerable<::Google::Cloud::Bigtable::V2::SessionResponse>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/bigtable/v2" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + # + # # Create an input stream. + # input = Gapic::StreamInput.new + # + # # Call the open_table method to start streaming. + # output = client.open_table input + # + # # Send requests on the stream. For each request object, set fields by + # # passing keyword arguments. Be sure to close the stream when done. + # input << Google::Cloud::Bigtable::V2::SessionRequest.new + # input << Google::Cloud::Bigtable::V2::SessionRequest.new + # input.close + # + # # The returned object is a streamed enumerable yielding elements of type + # # ::Google::Cloud::Bigtable::V2::SessionResponse + # output.each do |current_response| + # p current_response + # end + # + def open_table request, options = nil + unless request.is_a? ::Enumerable + raise ::ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum + request = request.to_enum + end + + request = request.lazy.map do |req| + ::Gapic::Protobuf.coerce req, to: ::Google::Cloud::Bigtable::V2::SessionRequest + end + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.open_table.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Bigtable::V2::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.open_table.timeout, + metadata: metadata, + retry_policy: @config.rpcs.open_table.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @bigtable_stub.call_rpc :open_table, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + # + # @param request [::Gapic::StreamInput, ::Enumerable<::Google::Cloud::Bigtable::V2::SessionRequest, ::Hash>] + # An enumerable of {::Google::Cloud::Bigtable::V2::SessionRequest} instances. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Enumerable<::Google::Cloud::Bigtable::V2::SessionResponse>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Enumerable<::Google::Cloud::Bigtable::V2::SessionResponse>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/bigtable/v2" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + # + # # Create an input stream. + # input = Gapic::StreamInput.new + # + # # Call the open_authorized_view method to start streaming. + # output = client.open_authorized_view input + # + # # Send requests on the stream. For each request object, set fields by + # # passing keyword arguments. Be sure to close the stream when done. + # input << Google::Cloud::Bigtable::V2::SessionRequest.new + # input << Google::Cloud::Bigtable::V2::SessionRequest.new + # input.close + # + # # The returned object is a streamed enumerable yielding elements of type + # # ::Google::Cloud::Bigtable::V2::SessionResponse + # output.each do |current_response| + # p current_response + # end + # + def open_authorized_view request, options = nil + unless request.is_a? ::Enumerable + raise ::ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum + request = request.to_enum + end + + request = request.lazy.map do |req| + ::Gapic::Protobuf.coerce req, to: ::Google::Cloud::Bigtable::V2::SessionRequest + end + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.open_authorized_view.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Bigtable::V2::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.open_authorized_view.timeout, + metadata: metadata, + retry_policy: @config.rpcs.open_authorized_view.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @bigtable_stub.call_rpc :open_authorized_view, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # This RPC is only intended to be used by the official Cloud Bigtable client + # libraries to implement the Bigtable Session based protocol. It is subject + # to change without notice. + # + # @param request [::Gapic::StreamInput, ::Enumerable<::Google::Cloud::Bigtable::V2::SessionRequest, ::Hash>] + # An enumerable of {::Google::Cloud::Bigtable::V2::SessionRequest} instances. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Enumerable<::Google::Cloud::Bigtable::V2::SessionResponse>] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Enumerable<::Google::Cloud::Bigtable::V2::SessionResponse>] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/bigtable/v2" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + # + # # Create an input stream. + # input = Gapic::StreamInput.new + # + # # Call the open_materialized_view method to start streaming. + # output = client.open_materialized_view input + # + # # Send requests on the stream. For each request object, set fields by + # # passing keyword arguments. Be sure to close the stream when done. + # input << Google::Cloud::Bigtable::V2::SessionRequest.new + # input << Google::Cloud::Bigtable::V2::SessionRequest.new + # input.close + # + # # The returned object is a streamed enumerable yielding elements of type + # # ::Google::Cloud::Bigtable::V2::SessionResponse + # output.each do |current_response| + # p current_response + # end + # + def open_materialized_view request, options = nil + unless request.is_a? ::Enumerable + raise ::ArgumentError, "request must be an Enumerable" unless request.respond_to? :to_enum + request = request.to_enum + end + + request = request.lazy.map do |req| + ::Gapic::Protobuf.coerce req, to: ::Google::Cloud::Bigtable::V2::SessionRequest + end + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.open_materialized_view.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::Bigtable::V2::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + options.apply_defaults timeout: @config.rpcs.open_materialized_view.timeout, + metadata: metadata, + retry_policy: @config.rpcs.open_materialized_view.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @bigtable_stub.call_rpc :open_materialized_view, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + ## # Configuration class for the Bigtable API. # @@ -1782,6 +2109,26 @@ class Rpcs # @return [::Gapic::Config::Method] # attr_reader :execute_query + ## + # RPC-specific configuration for `get_client_configuration` + # @return [::Gapic::Config::Method] + # + attr_reader :get_client_configuration + ## + # RPC-specific configuration for `open_table` + # @return [::Gapic::Config::Method] + # + attr_reader :open_table + ## + # RPC-specific configuration for `open_authorized_view` + # @return [::Gapic::Config::Method] + # + attr_reader :open_authorized_view + ## + # RPC-specific configuration for `open_materialized_view` + # @return [::Gapic::Config::Method] + # + attr_reader :open_materialized_view # @private def initialize parent_rpcs = nil @@ -1807,6 +2154,14 @@ def initialize parent_rpcs = nil @prepare_query = ::Gapic::Config::Method.new prepare_query_config execute_query_config = parent_rpcs.execute_query if parent_rpcs.respond_to? :execute_query @execute_query = ::Gapic::Config::Method.new execute_query_config + get_client_configuration_config = parent_rpcs.get_client_configuration if parent_rpcs.respond_to? :get_client_configuration + @get_client_configuration = ::Gapic::Config::Method.new get_client_configuration_config + open_table_config = parent_rpcs.open_table if parent_rpcs.respond_to? :open_table + @open_table = ::Gapic::Config::Method.new open_table_config + open_authorized_view_config = parent_rpcs.open_authorized_view if parent_rpcs.respond_to? :open_authorized_view + @open_authorized_view = ::Gapic::Config::Method.new open_authorized_view_config + open_materialized_view_config = parent_rpcs.open_materialized_view if parent_rpcs.respond_to? :open_materialized_view + @open_materialized_view = ::Gapic::Config::Method.new open_materialized_view_config yield self if block_given? end diff --git a/google-cloud-bigtable-v2/proto_docs/google/api/client.rb b/google-cloud-bigtable-v2/proto_docs/google/api/client.rb index 8f4ca4b4d6e5..e62ceba4577a 100644 --- a/google-cloud-bigtable-v2/proto_docs/google/api/client.rb +++ b/google-cloud-bigtable-v2/proto_docs/google/api/client.rb @@ -31,6 +31,8 @@ module Api # @!attribute [rw] selective_gapic_generation # @return [::Google::Api::SelectiveGapicGeneration] # Configuration for which RPCs should be generated in the GAPIC client. + # + # Note: This field should not be used in most cases. class CommonLanguageSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -141,9 +143,10 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # library_package: com.google.cloud.pubsub.v1 + # publishing: + # library_settings: + # java_settings: + # library_package: com.google.cloud.pubsub.v1 # @!attribute [rw] service_class_names # @return [::Google::Protobuf::Map{::String => ::String}] # Configure the Java class name to use instead of the service's for its @@ -155,11 +158,11 @@ class Publishing # # Example of a YAML configuration:: # - # publishing: - # java_settings: - # service_class_names: - # - google.pubsub.v1.Publisher: TopicAdmin - # - google.pubsub.v1.Subscriber: SubscriptionAdmin + # publishing: + # java_settings: + # service_class_names: + # - google.pubsub.v1.Publisher: TopicAdmin + # - google.pubsub.v1.Subscriber: SubscriptionAdmin # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. @@ -190,6 +193,20 @@ class CppSettings # @!attribute [rw] common # @return [::Google::Api::CommonLanguageSettings] # Some settings. + # @!attribute [rw] library_package + # @return [::String] + # The package name to use in Php. Clobbers the php_namespace option + # set in the protobuf. This should be used **only** by APIs + # who have already set the language_settings.php.package_name" field + # in gapic.yaml. API teams should use the protobuf php_namespace option + # where possible. + # + # Example of a YAML configuration:: + # + # publishing: + # library_settings: + # php_settings: + # library_package: Google\Cloud\PubSub\V1 class PhpSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -318,10 +335,12 @@ class RubySettings # service names and values are the name to be used for the service client # and call options. # - # publishing: - # go_settings: - # renamed_services: - # Publisher: TopicAdmin + # Example: + # + # publishing: + # go_settings: + # renamed_services: + # Publisher: TopicAdmin class GoSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -344,10 +363,10 @@ class RenamedServicesEntry # # Example: # - # publishing: - # method_settings: - # - selector: google.storage.control.v2.StorageControl.CreateFolder - # # method settings for CreateFolder... + # publishing: + # method_settings: + # - selector: google.storage.control.v2.StorageControl.CreateFolder + # # method settings for CreateFolder... # @!attribute [rw] long_running # @return [::Google::Api::MethodSettings::LongRunning] # Describes settings to use for long-running operations when generating @@ -356,14 +375,14 @@ class RenamedServicesEntry # # Example of a YAML configuration:: # - # publishing: - # method_settings: - # - selector: google.cloud.speech.v2.Speech.BatchRecognize - # long_running: - # initial_poll_delay: 60s # 1 minute - # poll_delay_multiplier: 1.5 - # max_poll_delay: 360s # 6 minutes - # total_poll_timeout: 54000s # 90 minutes + # publishing: + # method_settings: + # - selector: google.cloud.speech.v2.Speech.BatchRecognize + # long_running: + # initial_poll_delay: 60s # 1 minute + # poll_delay_multiplier: 1.5 + # max_poll_delay: 360s # 6 minutes + # total_poll_timeout: 54000s # 90 minutes # @!attribute [rw] auto_populated_fields # @return [::Array<::String>] # List of top-level fields of the request message, that should be @@ -372,11 +391,24 @@ class RenamedServicesEntry # # Example of a YAML configuration: # - # publishing: - # method_settings: - # - selector: google.example.v1.ExampleService.CreateExample - # auto_populated_fields: - # - request_id + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.CreateExample + # auto_populated_fields: + # - request_id + # @!attribute [rw] batching + # @return [::Google::Api::BatchingConfigProto] + # Batching configuration for an API method in client libraries. + # + # Example of a YAML configuration: + # + # publishing: + # method_settings: + # - selector: google.example.v1.ExampleService.BatchCreateExample + # batching: + # element_count_threshold: 1000 + # request_byte_threshold: 100000000 + # delay_threshold_millis: 10 class MethodSettings include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -411,6 +443,8 @@ class LongRunning # This message is used to configure the generation of a subset of the RPCs in # a service for client libraries. + # + # Note: This feature should not be used in most cases. # @!attribute [rw] methods # @return [::Array<::String>] # An allowlist of the fully qualified names of RPCs that should be included @@ -428,6 +462,77 @@ class SelectiveGapicGeneration extend ::Google::Protobuf::MessageExts::ClassMethods end + # `BatchingConfigProto` defines the batching configuration for an API method. + # @!attribute [rw] thresholds + # @return [::Google::Api::BatchingSettingsProto] + # The thresholds which trigger a batched request to be sent. + # @!attribute [rw] batch_descriptor + # @return [::Google::Api::BatchingDescriptorProto] + # The request and response fields used in batching. + class BatchingConfigProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingSettingsProto` specifies a set of batching thresholds, each of + # which acts as a trigger to send a batch of messages as a request. At least + # one threshold must be positive nonzero. + # @!attribute [rw] element_count_threshold + # @return [::Integer] + # The number of elements of a field collected into a batch which, if + # exceeded, causes the batch to be sent. + # @!attribute [rw] request_byte_threshold + # @return [::Integer] + # The aggregated size of the batched field which, if exceeded, causes the + # batch to be sent. This size is computed by aggregating the sizes of the + # request field to be batched, not of the entire request message. + # @!attribute [rw] delay_threshold + # @return [::Google::Protobuf::Duration] + # The duration after which a batch should be sent, starting from the addition + # of the first message to that batch. + # @!attribute [rw] element_count_limit + # @return [::Integer] + # The maximum number of elements collected in a batch that could be accepted + # by server. + # @!attribute [rw] request_byte_limit + # @return [::Integer] + # The maximum size of the request that could be accepted by server. + # @!attribute [rw] flow_control_element_limit + # @return [::Integer] + # The maximum number of elements allowed by flow control. + # @!attribute [rw] flow_control_byte_limit + # @return [::Integer] + # The maximum size of data allowed by flow control. + # @!attribute [rw] flow_control_limit_exceeded_behavior + # @return [::Google::Api::FlowControlLimitExceededBehaviorProto] + # The behavior to take when the flow control limit is exceeded. + class BatchingSettingsProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # `BatchingDescriptorProto` specifies the fields of the request message to be + # used for batching, and, optionally, the fields of the response message to be + # used for demultiplexing. + # @!attribute [rw] batched_field + # @return [::String] + # The repeated field in the request message to be aggregated by batching. + # @!attribute [rw] discriminator_fields + # @return [::Array<::String>] + # A list of the fields in the request message. Two requests will be batched + # together only if the values of every field specified in + # `request_discriminator_fields` is equal between the two requests. + # @!attribute [rw] subresponse_field + # @return [::String] + # Optional. When present, indicates the field in the response message to be + # used to demultiplex the response into multiple response messages, in + # correspondence with the multiple request messages originally batched + # together. + class BatchingDescriptorProto + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # The organization for which the client libraries are being published. # Affects the url where generated docs are published, etc. module ClientLibraryOrganization @@ -469,5 +574,20 @@ module ClientLibraryDestination # Publish the library to package managers like nuget.org and npmjs.com. PACKAGE_MANAGER = 20 end + + # The behavior to take when the flow control limit is exceeded. + module FlowControlLimitExceededBehaviorProto + # Default behavior, system-defined. + UNSET_BEHAVIOR = 0 + + # Stop operation, raise error. + THROW_EXCEPTION = 1 + + # Pause operation until limit clears. + BLOCK = 2 + + # Continue operation, disregard limit. + IGNORE = 3 + end end end diff --git a/google-cloud-bigtable-v2/proto_docs/google/api/routing.rb b/google-cloud-bigtable-v2/proto_docs/google/api/routing.rb index 3cc2ed9c4d8b..5a211ede7ee1 100644 --- a/google-cloud-bigtable-v2/proto_docs/google/api/routing.rb +++ b/google-cloud-bigtable-v2/proto_docs/google/api/routing.rb @@ -49,9 +49,13 @@ module Api # app_profile_id: profiles/prof_qux # } # - # The routing header consists of one or multiple key-value pairs. Every key - # and value must be percent-encoded, and joined together in the format of - # `key1=value1&key2=value2`. + # The routing header consists of one or multiple key-value pairs. The order of + # the key-value pairs is undefined, the order of the `routing_parameters` in + # the `RoutingRule` only matters for the evaluation order of the path + # templates when `field` is the same. See the examples below for more details. + # + # Every key and value in the routing header must be percent-encoded, + # and joined together in the following format: `key1=value1&key2=value2`. # The examples below skip the percent-encoding for readability. # # Example 1 diff --git a/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/feature_flags.rb b/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/feature_flags.rb index 4b3816eb393c..5b1a8e986061 100644 --- a/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/feature_flags.rb +++ b/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/feature_flags.rb @@ -67,6 +67,12 @@ module V2 # @!attribute [rw] peer_info # @return [::Boolean] # If the client can support using BigtablePeerInfo. + # @!attribute [rw] sessions_compatible + # @return [::Boolean] + # Indicates whether the client supports the Bigtable Sessions API. + # @!attribute [rw] sessions_required + # @return [::Boolean] + # Internal flag to force sessions for internal projects. class FeatureFlags include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods diff --git a/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/peer_info.rb b/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/peer_info.rb index 36ea1d997c5a..731952404460 100644 --- a/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/peer_info.rb +++ b/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/peer_info.rb @@ -31,13 +31,18 @@ module V2 # @return [::Integer] # An opaque identifier for the application frontend which serviced this # request. + # @!attribute [rw] application_frontend_region + # @return [::String] + # The Cloud region of the application frontend that served this request. # @!attribute [rw] application_frontend_zone + # @deprecated This field is deprecated and may be removed in the next major version update. # @return [::String] # The Cloud zone of the application frontend that served this request. # @!attribute [rw] application_frontend_subzone # @return [::String] # The subzone of the application frontend that served this request, e.g. an - # identifier for where within the zone the application frontend is. + # identifier for where within a zone (within the reported region) the + # application frontend is. # @!attribute [rw] transport_type # @return [::Google::Cloud::Bigtable::V2::PeerInfo::TransportType] class PeerInfo diff --git a/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/session.rb b/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/session.rb new file mode 100644 index 000000000000..f7fb327e6e7d --- /dev/null +++ b/google-cloud-bigtable-v2/proto_docs/google/bigtable/v2/session.rb @@ -0,0 +1,793 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Cloud + module Bigtable + module V2 + # See GetClientConfiguration() RPC in bigtable.proto. Internal usage only. + # @!attribute [rw] instance_name + # @return [::String] + # Required. The unique name of the instance for which the client will target + # with Data API requests. + # + # Values are of the form `projects//instances/` + # @!attribute [rw] app_profile_id + # @return [::String] + # Optional. The name of the AppProfile which will be used by the client when + # sending requests in the Data API. + # + # If not specified, the `default` application profile will be used. + class GetClientConfigurationRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Configuration for how to balance vRPCs over sessions. Internal usage only. + # @!attribute [rw] least_in_flight + # @return [::Google::Cloud::Bigtable::V2::LoadBalancingOptions::LeastInFlight] + # Note: The following fields are mutually exclusive: `least_in_flight`, `peak_ewma`, `random`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] peak_ewma + # @return [::Google::Cloud::Bigtable::V2::LoadBalancingOptions::PeakEwma] + # Note: The following fields are mutually exclusive: `peak_ewma`, `least_in_flight`, `random`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] random + # @return [::Google::Cloud::Bigtable::V2::LoadBalancingOptions::Random] + # Note: The following fields are mutually exclusive: `random`, `least_in_flight`, `peak_ewma`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class LoadBalancingOptions + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Balances vRPCs over backends, preferring to send new vRPCs to AFEs with the + # least number of active vRPCs. + # @!attribute [rw] random_subset_size + # @return [::Integer] + # Of all connected AFEs, the size of the random subset to run the algorithm + # on. Zero implies all connected AFEs. + class LeastInFlight + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Balances vRPCs over backends, by maintaining a moving average of each AFE's + # round-trip time, weighted by the number of outstanding vRPCs, and + # distribute traffic to AFEs where that cost function is smallest. + # + # See: + # https://linkerd.io/2016/03/16/beyond-round-robin-load-balancing-for-latency + # @!attribute [rw] random_subset_size + # @return [::Integer] + # Of all connected AFEs, the size of the random subset to compare costs + # over. Zero implies all connected AFEs. + class PeakEwma + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Balances vRPCs over backends, by randomly selecting a backend. + class Random + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Configuration for the Session API. Internal usage only. + # @!attribute [rw] session_load + # @return [::Float] + # What share of requests should operate on a session, [0, 1]. The rest + # should operate on the old-style API. + # @!attribute [rw] load_balancing_options + # @deprecated This field is deprecated and may be removed in the next major version update. + # @return [::Google::Cloud::Bigtable::V2::LoadBalancingOptions] + # @!attribute [rw] channel_configuration + # @return [::Google::Cloud::Bigtable::V2::SessionClientConfiguration::ChannelPoolConfiguration] + # Configuration for the channel pool. + # @!attribute [rw] session_pool_configuration + # @return [::Google::Cloud::Bigtable::V2::SessionClientConfiguration::SessionPoolConfiguration] + # Configuration for the session pools. + class SessionClientConfiguration + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Configuration for the channel pool. + # @!attribute [rw] min_server_count + # @return [::Integer] + # The minimum number of distcint servers to connect to in the channel pool. + # The client will ensure that the channel pool will have at least this many + # distinct servers, but may have multiple channels connected to the same + # server (e.g. the client may have M channels on N machines, where M > N). + # @!attribute [rw] max_server_count + # @return [::Integer] + # The maximum number of distinct servers to connect to in the channel pool. + # The client will ensure that the channel pool will have at most this many + # distinct servers. + # @!attribute [rw] per_server_session_count + # @return [::Integer] + # Soft maximum for how many sessions are allowed per server. Normally, the + # client will ensure that it does not host more than this count of sessions + # per server, unless there are other limits encountered (e.g. the connected + # servers is already at max_servers). + # @!attribute [rw] direct_access_with_fallback + # @return [::Google::Cloud::Bigtable::V2::SessionClientConfiguration::ChannelPoolConfiguration::DirectAccessWithFallback] + # DirectAccess with a fallback to CloudPath. + # + # Note: The following fields are mutually exclusive: `direct_access_with_fallback`, `direct_access_only`, `cloud_path_only`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] direct_access_only + # @return [::Google::Cloud::Bigtable::V2::SessionClientConfiguration::ChannelPoolConfiguration::DirectAccessOnly] + # DirectAccess only. + # + # Note: The following fields are mutually exclusive: `direct_access_only`, `direct_access_with_fallback`, `cloud_path_only`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] cloud_path_only + # @return [::Google::Cloud::Bigtable::V2::SessionClientConfiguration::ChannelPoolConfiguration::CloudPathOnly] + # CloudPath only. + # + # Note: The following fields are mutually exclusive: `cloud_path_only`, `direct_access_with_fallback`, `direct_access_only`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class ChannelPoolConfiguration + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # A channel mode which allows DirectAccess with a fallback to CloudPath if + # DirectAccess is unavailable. + # @!attribute [rw] error_rate_threshold + # @return [::Float] + # The threshold for errors on DirectAccess to trigger CloudPath fallback. + # The error rate is calculated based on a count of vRPCs with errors + # divided by a total count of vRPCs, over a rolling window of the past + # check_interval. If this ratio exceeds this threshold, the fallback to + # CloudPath is triggered. [0, 1]. + # @!attribute [rw] check_interval + # @return [::Google::Protobuf::Duration] + # The interval to check the error rate over. + class DirectAccessWithFallback + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A channel mode which only allows DirectAccess. + class DirectAccessOnly + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A channel mode which only allows CloudPath. + class CloudPathOnly + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Configuration for the session pools. Session pools are tied to a scope + # like a table, an app profile, and a permission. + # @!attribute [rw] headroom + # @return [::Float] + # Fraction of idle sessions to keep in order to manage an increase in + # requests-in-flight. For example, a headroom of 0.5 will keep enough + # sessions to deal with a 50% increase in QPS. + # @!attribute [rw] min_session_count + # @return [::Integer] + # The minimum number of sessions for a given scope. + # @!attribute [rw] max_session_count + # @return [::Integer] + # The maximum number of sessions for a given scope. + # @!attribute [rw] new_session_queue_length + # @return [::Integer] + # Number of vRPCs that can be queued per starting session. + # @!attribute [rw] new_session_creation_budget + # @return [::Integer] + # How many concurrent session establishments are allowed. The client will + # hold onto a count against this budget whenever it is establishing a new + # session, and release that count once the session is successfully + # established or failed to establish. + # @!attribute [rw] new_session_creation_penalty + # @return [::Google::Protobuf::Duration] + # How long to penalize the creation budget for a failed session creation + # attempt. + # @!attribute [rw] consecutive_session_failure_threshold + # @return [::Integer] + # A threshold for cancelling all pending vRPCs based on how many + # consecutive session establishment errors have been observed. The client + # will eagerly cancel queued vRPCs after this threshold is met to avoid + # them waiting their entire deadlines before terminating (while waiting for + # any session to establish to actually send the vRPC). + # @!attribute [rw] load_balancing_options + # @return [::Google::Cloud::Bigtable::V2::LoadBalancingOptions] + # How to balance vRPC load over connections to AFEs. + # Set only if session_load > 0. + class SessionPoolConfiguration + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Server provided instructions for enabling finer grained observability on + # the client to help diagnose customer issues. Internal usage only. + # @!attribute [rw] debug_tag_level + # @return [::Google::Cloud::Bigtable::V2::TelemetryConfiguration::Level] + # Selector for the debug counters that should be uploaded. + class TelemetryConfiguration + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # The level of detail of telemetry to be sent from the client. + module Level + # Server did not specify a level. Should disable all debug tag counters. + LEVEL_UNSPECIFIED = 0 + + # Enables all debug tag counter levels. + DEBUG = 1 + + # Eables all debug tag counters except for DEBUG. + INFO = 2 + + # Enables all debug tag counters except for DEBUG and INFO. + WARN = 3 + + # Enables only error debug tag counters. + ERROR = 4 + end + end + + # Configuration for the Session API. Internal usage only. + # @!attribute [rw] session_configuration + # @return [::Google::Cloud::Bigtable::V2::SessionClientConfiguration] + # The configuration for Bigtable Sessions. + # @!attribute [rw] stop_polling + # @return [::Boolean] + # If the client should cease to check for new configurations, e.g. a + # backstop to prevent excessive GetClientConfiguration RPCs. + # + # Note: The following fields are mutually exclusive: `stop_polling`, `polling_interval`, `polling_configuration`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] polling_interval + # @deprecated This field is deprecated and may be removed in the next major version update. + # @return [::Google::Protobuf::Duration] + # Deprecated, prerfer polling_configuration. + # + # A duration describing the time between GetClientConfiguration RPCs. + # Only strictly positive values are permissible. + # + # Note: The following fields are mutually exclusive: `polling_interval`, `stop_polling`, `polling_configuration`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] polling_configuration + # @return [::Google::Cloud::Bigtable::V2::ClientConfiguration::PollingConfiguration] + # If the client should continue to check for new configurations. + # + # Note: The following fields are mutually exclusive: `polling_configuration`, `stop_polling`, `polling_interval`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] telemetry_configuration + # @return [::Google::Cloud::Bigtable::V2::TelemetryConfiguration] + # Configuration for telemetry. + class ClientConfiguration + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # @!attribute [rw] polling_interval + # @return [::Google::Protobuf::Duration] + # A duration describing the time between GetClientConfiguration RPCs. + # Only strictly positive values are permissible. + # @!attribute [rw] validity_duration + # @return [::Google::Protobuf::Duration] + # How long the client should consider the configuration it receives from + # GetClientConfiguration valid for. Once this duration has passed, the + # client should consider the configuration invalid and must either: + # - Get a new configuration from GetClientConfiguration + # - Or if it cannot, use a sane default configuration + # + # This duration will be at least as long as the polling interval. + # @!attribute [rw] max_rpc_retry_count + # @return [::Integer] + # Number of times the client should retry a failed + # GetClientConfiguration RPC per polling interval before giving up. + class PollingConfiguration + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Internal usage only. + # @!attribute [rw] open_session + # @return [::Google::Cloud::Bigtable::V2::OpenSessionRequest] + # Note: The following fields are mutually exclusive: `open_session`, `close_session`, `virtual_rpc`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] close_session + # @return [::Google::Cloud::Bigtable::V2::CloseSessionRequest] + # Note: The following fields are mutually exclusive: `close_session`, `open_session`, `virtual_rpc`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] virtual_rpc + # @return [::Google::Cloud::Bigtable::V2::VirtualRpcRequest] + # Note: The following fields are mutually exclusive: `virtual_rpc`, `open_session`, `close_session`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class SessionRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] open_session + # @return [::Google::Cloud::Bigtable::V2::OpenSessionResponse] + # Note: The following fields are mutually exclusive: `open_session`, `virtual_rpc`, `error`, `session_parameters`, `heartbeat`, `go_away`, `session_refresh_config`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] virtual_rpc + # @return [::Google::Cloud::Bigtable::V2::VirtualRpcResponse] + # A vRPC can result in either a successful result or an error. + # Error results are separate to allow for multiple vRPC responses, + # e.g. for streaming calls like scans (post-V1). See Flow Control. + # + # Note: The following fields are mutually exclusive: `virtual_rpc`, `open_session`, `error`, `session_parameters`, `heartbeat`, `go_away`, `session_refresh_config`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] error + # @return [::Google::Cloud::Bigtable::V2::ErrorResponse] + # Note: The following fields are mutually exclusive: `error`, `open_session`, `virtual_rpc`, `session_parameters`, `heartbeat`, `go_away`, `session_refresh_config`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] session_parameters + # @return [::Google::Cloud::Bigtable::V2::SessionParametersResponse] + # Note: The following fields are mutually exclusive: `session_parameters`, `open_session`, `virtual_rpc`, `error`, `heartbeat`, `go_away`, `session_refresh_config`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] heartbeat + # @return [::Google::Cloud::Bigtable::V2::HeartbeatResponse] + # Note: The following fields are mutually exclusive: `heartbeat`, `open_session`, `virtual_rpc`, `error`, `session_parameters`, `go_away`, `session_refresh_config`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] go_away + # @return [::Google::Cloud::Bigtable::V2::GoAwayResponse] + # Note: The following fields are mutually exclusive: `go_away`, `open_session`, `virtual_rpc`, `error`, `session_parameters`, `heartbeat`, `session_refresh_config`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] session_refresh_config + # @return [::Google::Cloud::Bigtable::V2::SessionRefreshConfig] + # Note: The following fields are mutually exclusive: `session_refresh_config`, `open_session`, `virtual_rpc`, `error`, `session_parameters`, `heartbeat`, `go_away`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class SessionResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] protocol_version + # @return [::Integer] + # A version indicator from the client stating its understanding of the + # protocol. This is to disambiguate client behavior amidst changes in + # semantic usage of the API, e.g. if the structure remains the same but + # behavior changes. + # @!attribute [rw] flags + # @return [::Google::Cloud::Bigtable::V2::FeatureFlags] + # Client settings, including a record of + # @!attribute [rw] consecutive_failed_connection_attempts + # @return [::Integer] + # Used for serverside observability. + # @!attribute [rw] routing_cookie + # @return [::String] + # How the request should be routed (if presented as part of a GOAWAY + # from a previous session). Post V1. + # @!attribute [rw] payload + # @return [::String] + # Can be Open\\{Table,AuthorizedView,MaterializedView}Request, + # (or in post-V1, PrepareSqlQueryRequest) + class OpenSessionRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Information about the connected backends from a session client's + # perspective. This information may be used to make choices about session + # re-establishment en-masse for sessions with the same backend identifiers. + # Internal usage only. + # @!attribute [rw] google_frontend_id + # @return [::Integer] + # An opaque identifier for the Google Frontend which serviced this request. + # Only set when not using DirectAccess. + # @!attribute [rw] application_frontend_id + # @return [::Integer] + # An opaque identifier for the application frontend which serviced this + # request. + # @!attribute [rw] application_frontend_zone + # @return [::String] + # The zone of the application frontend that served this request. + class BackendIdentifier + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] backend + # @return [::Google::Cloud::Bigtable::V2::BackendIdentifier] + # Information on the backend(s) that are hosting this session. + # @!attribute [rw] payload + # @return [::String] + # Can be Open\\{Table,AuthorizedView,MaterializedView}Response, + # (or in post-V1, PrepareSqlQueryResponse) + class OpenSessionResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] reason + # @return [::Google::Cloud::Bigtable::V2::CloseSessionRequest::CloseSessionReason] + # @!attribute [rw] description + # @return [::String] + class CloseSessionRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Client-generated reason for terminating the session, including a + # plain-text description of why. + # 'reason' may be used for metrics, while both may be logged (server-side). + module CloseSessionReason + CLOSE_SESSION_REASON_UNSET = 0 + + CLOSE_SESSION_REASON_GOAWAY = 1 + + CLOSE_SESSION_REASON_ERROR = 2 + + CLOSE_SESSION_REASON_USER = 3 + + CLOSE_SESSION_REASON_DOWNSIZE = 4 + + CLOSE_SESSION_REASON_MISSED_HEARTBEAT = 5 + end + end + + # Internal usage only. + # @!attribute [rw] table_name + # @return [::String] + # @!attribute [rw] app_profile_id + # @return [::String] + # @!attribute [rw] permission + # @return [::Google::Cloud::Bigtable::V2::OpenTableRequest::Permission] + class OpenTableRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + module Permission + PERMISSION_UNSET = 0 + + PERMISSION_READ = 1 + + PERMISSION_WRITE = 2 + + PERMISSION_READ_WRITE = 3 + end + end + + # Internal usage only. + class OpenTableResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Open sessions for an AuthorizedView. Internal usage only. + # @!attribute [rw] authorized_view_name + # @return [::String] + # The Authorized view name to read and write from. Values are of the form + # `projects//instances//tables//authorizedViews/`. + # @!attribute [rw] app_profile_id + # @return [::String] + # The app profile id to use for the authorized view sessions. + # @!attribute [rw] permission + # @return [::Google::Cloud::Bigtable::V2::OpenAuthorizedViewRequest::Permission] + # Permission for the session. + class OpenAuthorizedViewRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + module Permission + PERMISSION_UNSET = 0 + + PERMISSION_READ = 1 + + PERMISSION_WRITE = 2 + + PERMISSION_READ_WRITE = 3 + end + end + + # Internal usage only. + class OpenAuthorizedViewResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Open sessions for a MaterializedView. Internal usage only. + # @!attribute [rw] materialized_view_name + # @return [::String] + # The Materialized view name to read and write from. Values are of the form + # `projects//instances//materializedViews/`. + # @!attribute [rw] app_profile_id + # @return [::String] + # The app profile id to use for the materialized view sessions. + # @!attribute [rw] permission + # @return [::Google::Cloud::Bigtable::V2::OpenMaterializedViewRequest::Permission] + # Permission for the session. + class OpenMaterializedViewRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + module Permission + PERMISSION_UNSET = 0 + + PERMISSION_READ = 1 + end + end + + # Internal usage only. + class OpenMaterializedViewResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] rpc_id + # @return [::Integer] + # Client chosen, monotonically increasing identifier for the request. + # Must be unique within a session. + # @!attribute [rw] deadline + # @return [::Google::Protobuf::Duration] + # Attempt deadline. + # + # Note, this may not be needed for V1, TBD (e.g. operation vs attempt + # deadline). + # @!attribute [rw] metadata + # @return [::Google::Cloud::Bigtable::V2::VirtualRpcRequest::Metadata] + # vRPC metadata. + # @!attribute [rw] payload + # @return [::String] + # Could be TableRequest (or in post-V1, SqlRequest) + class VirtualRpcRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Container for all vRPC Metadata. + # @!attribute [rw] attempt_number + # @return [::Integer] + # Track retry attempts for this vRPC at the AFE. + # @!attribute [rw] attempt_start + # @return [::Google::Protobuf::Timestamp] + # Track the client's known start time for the attempt. This is likely not + # easily compared with the server's time due to clock skew. + # @!attribute [rw] traceparent + # @return [::String] + # Link OpenTelemetry traces (e.g. Tapper). This can be used to link + # attempts together for the same logical operation (e.g. in logs / traces). + # + # Note, this may not be needed for V1, TBD. + class Metadata + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Information on which Cluster served a vRPC, e.g. for Client-Side metrics. + # Internal usage only. + # @!attribute [rw] cluster_id + # @return [::String] + # @!attribute [rw] zone_id + # @return [::String] + class ClusterInformation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] backend_latency + # @return [::Google::Protobuf::Duration] + # Backend (critical section) latency for the request. + class SessionRequestStats + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] rpc_id + # @return [::Integer] + # Which vRPC this response is for. + # @!attribute [rw] cluster_info + # @return [::Google::Cloud::Bigtable::V2::ClusterInformation] + # @!attribute [rw] stats + # @return [::Google::Cloud::Bigtable::V2::SessionRequestStats] + # @!attribute [rw] payload + # @return [::String] + # Could be TableResponse (or in post-V1, SqlResponse) + class VirtualRpcResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] rpc_id + # @return [::Integer] + # Which vRPC this response is for. + # @!attribute [rw] cluster_info + # @return [::Google::Cloud::Bigtable::V2::ClusterInformation] + # @!attribute [rw] status + # @return [::Google::Rpc::Status] + # The error from the vRPC and any retry information to consider. + # @!attribute [rw] retry_info + # @return [::Google::Rpc::RetryInfo] + class ErrorResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] read_row + # @return [::Google::Cloud::Bigtable::V2::SessionReadRowRequest] + # Note: The following fields are mutually exclusive: `read_row`, `mutate_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] mutate_row + # @return [::Google::Cloud::Bigtable::V2::SessionMutateRowRequest] + # Note: The following fields are mutually exclusive: `mutate_row`, `read_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class TableRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] read_row + # @return [::Google::Cloud::Bigtable::V2::SessionReadRowResponse] + # Note: The following fields are mutually exclusive: `read_row`, `mutate_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] mutate_row + # @return [::Google::Cloud::Bigtable::V2::SessionMutateRowResponse] + # Note: The following fields are mutually exclusive: `mutate_row`, `read_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class TableResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A request wrapper for operations on an authorized view. Internal usage only. + # @!attribute [rw] read_row + # @return [::Google::Cloud::Bigtable::V2::SessionReadRowRequest] + # Note: The following fields are mutually exclusive: `read_row`, `mutate_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] mutate_row + # @return [::Google::Cloud::Bigtable::V2::SessionMutateRowRequest] + # Note: The following fields are mutually exclusive: `mutate_row`, `read_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class AuthorizedViewRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A response wrapper for operations on an authorized view. Internal usage only. + # @!attribute [rw] read_row + # @return [::Google::Cloud::Bigtable::V2::SessionReadRowResponse] + # Note: The following fields are mutually exclusive: `read_row`, `mutate_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] mutate_row + # @return [::Google::Cloud::Bigtable::V2::SessionMutateRowResponse] + # Note: The following fields are mutually exclusive: `mutate_row`, `read_row`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class AuthorizedViewResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A request wrapper for operations on a materialized view. Internal usage only. + # @!attribute [rw] read_row + # @return [::Google::Cloud::Bigtable::V2::SessionReadRowRequest] + class MaterializedViewRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A response wrapper for operations on a materialized view. Internal usage + # only. + # @!attribute [rw] read_row + # @return [::Google::Cloud::Bigtable::V2::SessionReadRowResponse] + class MaterializedViewResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] filter + # @return [::Google::Cloud::Bigtable::V2::RowFilter] + class SessionReadRowRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] row + # @return [::Google::Cloud::Bigtable::V2::Row] + # @!attribute [rw] stats + # @return [::Google::Cloud::Bigtable::V2::RequestStats] + class SessionReadRowResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] mutations + # @return [::Array<::Google::Cloud::Bigtable::V2::Mutation>] + class SessionMutateRowRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + class SessionMutateRowResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] keep_alive + # @return [::Google::Protobuf::Duration] + # Maximum time between messages that the AFE will send to the client. The + # client may use this information to determine its control-flow in relation + # to pruning black-holed or otherwise non-responsive sessions. Must be set + # and positive. + # + # See also Heartbeats. + class SessionParametersResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + class HeartbeatResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] reason + # @return [::String] + # Server-generated reason for GOAWAY, including a plain-text description of + # why. 'reason' may be used for CSM, while both may be logged. + # @!attribute [rw] description + # @return [::String] + # @!attribute [rw] last_rpc_id_admitted + # @return [::Integer] + # The last vRPC which was admitted by the AFE. The client may expect the + # result from the vRPC on the stream before disconnecting, and should + # retry vRPCs beyond this boundary. + class GoAwayResponse + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Internal usage only. + # @!attribute [rw] optimized_open_request + # @return [::Google::Cloud::Bigtable::V2::OpenSessionRequest] + # An optimized Open request that the session may use on a retry when + # establishing this session again. This can be sent from the AFE to + # avoid certain work e.g. encoding a query plan for BTQL. + # @!attribute [r] metadata + # @return [::Array<::Google::Cloud::Bigtable::V2::SessionRefreshConfig::Metadata>] + # Output only. Any additional metadata to include when reconnecting. + class SessionRefreshConfig + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Any additional metadata to include when reconnecting. Not a `map<>` type as + # this can be a multimap. + # @!attribute [r] key + # @return [::String] + # Output only. The key for the metadata entry. + # @!attribute [r] value + # @return [::String] + # Output only. The value for the metadata entry. + class Metadata + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Supported session types. + module SessionType + SESSION_TYPE_UNSET = 0 + + SESSION_TYPE_TABLE = 1 + + SESSION_TYPE_AUTHORIZED_VIEW = 2 + + SESSION_TYPE_MATERIALIZED_VIEW = 3 + + # For internal protocol testing only. + SESSION_TYPE_TEST = -1 + end + end + end + end +end diff --git a/google-cloud-bigtable-v2/proto_docs/google/rpc/error_details.rb b/google-cloud-bigtable-v2/proto_docs/google/rpc/error_details.rb new file mode 100644 index 000000000000..507d2b54094a --- /dev/null +++ b/google-cloud-bigtable-v2/proto_docs/google/rpc/error_details.rb @@ -0,0 +1,420 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + + +module Google + module Rpc + # Describes the cause of the error with structured details. + # + # Example of an error when contacting the "pubsub.googleapis.com" API when it + # is not enabled: + # + # { "reason": "API_DISABLED" + # "domain": "googleapis.com" + # "metadata": { + # "resource": "projects/123", + # "service": "pubsub.googleapis.com" + # } + # } + # + # This response indicates that the pubsub.googleapis.com API is not enabled. + # + # Example of an error that is returned when attempting to create a Spanner + # instance in a region that is out of stock: + # + # { "reason": "STOCKOUT" + # "domain": "spanner.googleapis.com", + # "metadata": { + # "availableRegions": "us-central1,us-east2" + # } + # } + # @!attribute [rw] reason + # @return [::String] + # The reason of the error. This is a constant value that identifies the + # proximate cause of the error. Error reasons are unique within a particular + # domain of errors. This should be at most 63 characters and match a + # regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, which represents + # UPPER_SNAKE_CASE. + # @!attribute [rw] domain + # @return [::String] + # The logical grouping to which the "reason" belongs. The error domain + # is typically the registered service name of the tool or product that + # generates the error. Example: "pubsub.googleapis.com". If the error is + # generated by some common infrastructure, the error domain must be a + # globally unique value that identifies the infrastructure. For Google API + # infrastructure, the error domain is "googleapis.com". + # @!attribute [rw] metadata + # @return [::Google::Protobuf::Map{::String => ::String}] + # Additional structured details about this error. + # + # Keys must match a regular expression of `[a-z][a-zA-Z0-9-_]+` but should + # ideally be lowerCamelCase. Also, they must be limited to 64 characters in + # length. When identifying the current value of an exceeded limit, the units + # should be contained in the key, not the value. For example, rather than + # `{"instanceLimit": "100/request"}`, should be returned as, + # `{"instanceLimitPerRequest": "100"}`, if the client exceeds the number of + # instances that can be created in a single (batch) request. + class ErrorInfo + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] value + # @return [::String] + class MetadataEntry + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Describes when the clients can retry a failed request. Clients could ignore + # the recommendation here or retry when this information is missing from error + # responses. + # + # It's always recommended that clients should use exponential backoff when + # retrying. + # + # Clients should wait until `retry_delay` amount of time has passed since + # receiving the error response before retrying. If retrying requests also + # fail, clients should use an exponential backoff scheme to gradually increase + # the delay between retries based on `retry_delay`, until either a maximum + # number of retries have been reached or a maximum retry delay cap has been + # reached. + # @!attribute [rw] retry_delay + # @return [::Google::Protobuf::Duration] + # Clients should wait at least this long between retrying the same request. + class RetryInfo + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Describes additional debugging info. + # @!attribute [rw] stack_entries + # @return [::Array<::String>] + # The stack trace entries indicating where the error occurred. + # @!attribute [rw] detail + # @return [::String] + # Additional debugging information provided by the server. + class DebugInfo + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Describes how a quota check failed. + # + # For example if a daily limit was exceeded for the calling project, + # a service could respond with a QuotaFailure detail containing the project + # id and the description of the quota limit that was exceeded. If the + # calling project hasn't enabled the service in the developer console, then + # a service could respond with the project id and set `service_disabled` + # to true. + # + # Also see RetryInfo and Help types for other details about handling a + # quota failure. + # @!attribute [rw] violations + # @return [::Array<::Google::Rpc::QuotaFailure::Violation>] + # Describes all quota violations. + class QuotaFailure + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # A message type used to describe a single quota violation. For example, a + # daily quota or a custom quota that was exceeded. + # @!attribute [rw] subject + # @return [::String] + # The subject on which the quota check failed. + # For example, "clientip:" or "project:". + # @!attribute [rw] description + # @return [::String] + # A description of how the quota check failed. Clients can use this + # description to find more about the quota configuration in the service's + # public documentation, or find the relevant quota limit to adjust through + # developer console. + # + # For example: "Service disabled" or "Daily Limit for read operations + # exceeded". + # @!attribute [rw] api_service + # @return [::String] + # The API Service from which the `QuotaFailure.Violation` orginates. In + # some cases, Quota issues originate from an API Service other than the one + # that was called. In other words, a dependency of the called API Service + # could be the cause of the `QuotaFailure`, and this field would have the + # dependency API service name. + # + # For example, if the called API is Kubernetes Engine API + # (container.googleapis.com), and a quota violation occurs in the + # Kubernetes Engine API itself, this field would be + # "container.googleapis.com". On the other hand, if the quota violation + # occurs when the Kubernetes Engine API creates VMs in the Compute Engine + # API (compute.googleapis.com), this field would be + # "compute.googleapis.com". + # @!attribute [rw] quota_metric + # @return [::String] + # The metric of the violated quota. A quota metric is a named counter to + # measure usage, such as API requests or CPUs. When an activity occurs in a + # service, such as Virtual Machine allocation, one or more quota metrics + # may be affected. + # + # For example, "compute.googleapis.com/cpus_per_vm_family", + # "storage.googleapis.com/internet_egress_bandwidth". + # @!attribute [rw] quota_id + # @return [::String] + # The id of the violated quota. Also know as "limit name", this is the + # unique identifier of a quota in the context of an API service. + # + # For example, "CPUS-PER-VM-FAMILY-per-project-region". + # @!attribute [rw] quota_dimensions + # @return [::Google::Protobuf::Map{::String => ::String}] + # The dimensions of the violated quota. Every non-global quota is enforced + # on a set of dimensions. While quota metric defines what to count, the + # dimensions specify for what aspects the counter should be increased. + # + # For example, the quota "CPUs per region per VM family" enforces a limit + # on the metric "compute.googleapis.com/cpus_per_vm_family" on dimensions + # "region" and "vm_family". And if the violation occurred in region + # "us-central1" and for VM family "n1", the quota_dimensions would be, + # + # { + # "region": "us-central1", + # "vm_family": "n1", + # } + # + # When a quota is enforced globally, the quota_dimensions would always be + # empty. + # @!attribute [rw] quota_value + # @return [::Integer] + # The enforced quota value at the time of the `QuotaFailure`. + # + # For example, if the enforced quota value at the time of the + # `QuotaFailure` on the number of CPUs is "10", then the value of this + # field would reflect this quantity. + # @!attribute [rw] future_quota_value + # @return [::Integer] + # The new quota value being rolled out at the time of the violation. At the + # completion of the rollout, this value will be enforced in place of + # quota_value. If no rollout is in progress at the time of the violation, + # this field is not set. + # + # For example, if at the time of the violation a rollout is in progress + # changing the number of CPUs quota from 10 to 20, 20 would be the value of + # this field. + class Violation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # @!attribute [rw] key + # @return [::String] + # @!attribute [rw] value + # @return [::String] + class QuotaDimensionsEntry + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + end + + # Describes what preconditions have failed. + # + # For example, if an RPC failed because it required the Terms of Service to be + # acknowledged, it could list the terms of service violation in the + # PreconditionFailure message. + # @!attribute [rw] violations + # @return [::Array<::Google::Rpc::PreconditionFailure::Violation>] + # Describes all precondition violations. + class PreconditionFailure + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # A message type used to describe a single precondition failure. + # @!attribute [rw] type + # @return [::String] + # The type of PreconditionFailure. We recommend using a service-specific + # enum type to define the supported precondition violation subjects. For + # example, "TOS" for "Terms of Service violation". + # @!attribute [rw] subject + # @return [::String] + # The subject, relative to the type, that failed. + # For example, "google.com/cloud" relative to the "TOS" type would indicate + # which terms of service is being referenced. + # @!attribute [rw] description + # @return [::String] + # A description of how the precondition failed. Developers can use this + # description to understand how to fix the failure. + # + # For example: "Terms of service not accepted". + class Violation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Describes violations in a client request. This error type focuses on the + # syntactic aspects of the request. + # @!attribute [rw] field_violations + # @return [::Array<::Google::Rpc::BadRequest::FieldViolation>] + # Describes all violations in a client request. + class BadRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # A message type used to describe a single bad request field. + # @!attribute [rw] field + # @return [::String] + # A path that leads to a field in the request body. The value will be a + # sequence of dot-separated identifiers that identify a protocol buffer + # field. + # + # Consider the following: + # + # message CreateContactRequest { + # message EmailAddress { + # enum Type { + # TYPE_UNSPECIFIED = 0; + # HOME = 1; + # WORK = 2; + # } + # + # optional string email = 1; + # repeated EmailType type = 2; + # } + # + # string full_name = 1; + # repeated EmailAddress email_addresses = 2; + # } + # + # In this example, in proto `field` could take one of the following values: + # + # * `full_name` for a violation in the `full_name` value + # * `email_addresses[0].email` for a violation in the `email` field of the + # first `email_addresses` message + # * `email_addresses[2].type[1]` for a violation in the second `type` + # value in the third `email_addresses` message. + # + # In JSON, the same values are represented as: + # + # * `fullName` for a violation in the `fullName` value + # * `emailAddresses[0].email` for a violation in the `email` field of the + # first `emailAddresses` message + # * `emailAddresses[2].type[1]` for a violation in the second `type` + # value in the third `emailAddresses` message. + # @!attribute [rw] description + # @return [::String] + # A description of why the request element is bad. + # @!attribute [rw] reason + # @return [::String] + # The reason of the field-level error. This is a constant value that + # identifies the proximate cause of the field-level error. It should + # uniquely identify the type of the FieldViolation within the scope of the + # google.rpc.ErrorInfo.domain. This should be at most 63 + # characters and match a regular expression of `[A-Z][A-Z0-9_]+[A-Z0-9]`, + # which represents UPPER_SNAKE_CASE. + # @!attribute [rw] localized_message + # @return [::Google::Rpc::LocalizedMessage] + # Provides a localized error message for field-level errors that is safe to + # return to the API consumer. + class FieldViolation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Contains metadata about the request that clients can attach when filing a bug + # or providing other forms of feedback. + # @!attribute [rw] request_id + # @return [::String] + # An opaque string that should only be interpreted by the service generating + # it. For example, it can be used to identify requests in the service's logs. + # @!attribute [rw] serving_data + # @return [::String] + # Any data that was used to serve this request. For example, an encrypted + # stack trace that can be sent back to the service provider for debugging. + class RequestInfo + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Describes the resource that is being accessed. + # @!attribute [rw] resource_type + # @return [::String] + # A name for the type of resource being accessed, e.g. "sql table", + # "cloud storage bucket", "file", "Google calendar"; or the type URL + # of the resource: e.g. "type.googleapis.com/google.pubsub.v1.Topic". + # @!attribute [rw] resource_name + # @return [::String] + # The name of the resource being accessed. For example, a shared calendar + # name: "example.com_4fghdhgsrgh@group.calendar.google.com", if the current + # error is + # [google.rpc.Code.PERMISSION_DENIED][google.rpc.Code.PERMISSION_DENIED]. + # @!attribute [rw] owner + # @return [::String] + # The owner of the resource (optional). + # For example, "user:" or "project:". + # @!attribute [rw] description + # @return [::String] + # Describes what error is encountered when accessing this resource. + # For example, updating a cloud project may require the `writer` permission + # on the developer console project. + class ResourceInfo + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Provides links to documentation or for performing an out of band action. + # + # For example, if a quota check failed with an error indicating the calling + # project hasn't enabled the accessed service, this can contain a URL pointing + # directly to the right place in the developer console to flip the bit. + # @!attribute [rw] links + # @return [::Array<::Google::Rpc::Help::Link>] + # URL(s) pointing to additional information on handling the current error. + class Help + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Describes a URL link. + # @!attribute [rw] description + # @return [::String] + # Describes what the link offers. + # @!attribute [rw] url + # @return [::String] + # The URL of the link. + class Link + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Provides a localized error message that is safe to return to the user + # which can be attached to an RPC error. + # @!attribute [rw] locale + # @return [::String] + # The locale used following the specification defined at + # https://www.rfc-editor.org/rfc/bcp/bcp47.txt. + # Examples are: "en-US", "fr-CH", "es-MX" + # @!attribute [rw] message + # @return [::String] + # The localized error message in the above locale. + class LocalizedMessage + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end +end diff --git a/google-cloud-bigtable-v2/proto_docs/google/type/date.rb b/google-cloud-bigtable-v2/proto_docs/google/type/date.rb index a8b78b5e8ce4..c600f9067762 100644 --- a/google-cloud-bigtable-v2/proto_docs/google/type/date.rb +++ b/google-cloud-bigtable-v2/proto_docs/google/type/date.rb @@ -24,14 +24,17 @@ module Type # date is relative to the Gregorian Calendar. This can represent one of the # following: # - # * A full date, with non-zero year, month, and day values - # * A month and day value, with a zero year, such as an anniversary - # * A year on its own, with zero month and day values - # * A year and month value, with a zero day, such as a credit card expiration - # date + # * A full date, with non-zero year, month, and day values. + # * A month and day, with a zero year (for example, an anniversary). + # * A year on its own, with a zero month and a zero day. + # * A year and month, with a zero day (for example, a credit card expiration + # date). # - # Related types are [google.type.TimeOfDay][google.type.TimeOfDay] and - # `google.protobuf.Timestamp`. + # Related types: + # + # * [google.type.TimeOfDay][google.type.TimeOfDay] + # * [google.type.DateTime][google.type.DateTime] + # * {::Google::Protobuf::Timestamp google.protobuf.Timestamp} # @!attribute [rw] year # @return [::Integer] # Year of the date. Must be from 1 to 9999, or 0 to specify a date without diff --git a/google-cloud-bigtable-v2/snippets/bigtable/get_client_configuration.rb b/google-cloud-bigtable-v2/snippets/bigtable/get_client_configuration.rb new file mode 100644 index 000000000000..091375fae484 --- /dev/null +++ b/google-cloud-bigtable-v2/snippets/bigtable/get_client_configuration.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START bigtable_v2_generated_Bigtable_GetClientConfiguration_sync] +require "google/cloud/bigtable/v2" + +## +# Snippet for the get_client_configuration call in the Bigtable service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::Bigtable::V2::Bigtable::Client#get_client_configuration. +# +def get_client_configuration + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Cloud::Bigtable::V2::GetClientConfigurationRequest.new + + # Call the get_client_configuration method. + result = client.get_client_configuration request + + # The returned object is of type Google::Cloud::Bigtable::V2::ClientConfiguration. + p result +end +# [END bigtable_v2_generated_Bigtable_GetClientConfiguration_sync] diff --git a/google-cloud-bigtable-v2/snippets/bigtable/open_authorized_view.rb b/google-cloud-bigtable-v2/snippets/bigtable/open_authorized_view.rb new file mode 100644 index 000000000000..32fde05205c6 --- /dev/null +++ b/google-cloud-bigtable-v2/snippets/bigtable/open_authorized_view.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START bigtable_v2_generated_Bigtable_OpenAuthorizedView_sync] +require "google/cloud/bigtable/v2" + +## +# Snippet for the open_authorized_view call in the Bigtable service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::Bigtable::V2::Bigtable::Client#open_authorized_view. +# +def open_authorized_view + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + + # Create an input stream. + input = Gapic::StreamInput.new + + # Call the open_authorized_view method to start streaming. + output = client.open_authorized_view input + + # Send requests on the stream. For each request object, set fields by + # passing keyword arguments. Be sure to close the stream when done. + input << Google::Cloud::Bigtable::V2::SessionRequest.new + input << Google::Cloud::Bigtable::V2::SessionRequest.new + input.close + + # The returned object is a streamed enumerable yielding elements of type + # ::Google::Cloud::Bigtable::V2::SessionResponse + output.each do |current_response| + p current_response + end +end +# [END bigtable_v2_generated_Bigtable_OpenAuthorizedView_sync] diff --git a/google-cloud-bigtable-v2/snippets/bigtable/open_materialized_view.rb b/google-cloud-bigtable-v2/snippets/bigtable/open_materialized_view.rb new file mode 100644 index 000000000000..afa99f9e0b5d --- /dev/null +++ b/google-cloud-bigtable-v2/snippets/bigtable/open_materialized_view.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START bigtable_v2_generated_Bigtable_OpenMaterializedView_sync] +require "google/cloud/bigtable/v2" + +## +# Snippet for the open_materialized_view call in the Bigtable service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::Bigtable::V2::Bigtable::Client#open_materialized_view. +# +def open_materialized_view + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + + # Create an input stream. + input = Gapic::StreamInput.new + + # Call the open_materialized_view method to start streaming. + output = client.open_materialized_view input + + # Send requests on the stream. For each request object, set fields by + # passing keyword arguments. Be sure to close the stream when done. + input << Google::Cloud::Bigtable::V2::SessionRequest.new + input << Google::Cloud::Bigtable::V2::SessionRequest.new + input.close + + # The returned object is a streamed enumerable yielding elements of type + # ::Google::Cloud::Bigtable::V2::SessionResponse + output.each do |current_response| + p current_response + end +end +# [END bigtable_v2_generated_Bigtable_OpenMaterializedView_sync] diff --git a/google-cloud-bigtable-v2/snippets/bigtable/open_table.rb b/google-cloud-bigtable-v2/snippets/bigtable/open_table.rb new file mode 100644 index 000000000000..08e582310f40 --- /dev/null +++ b/google-cloud-bigtable-v2/snippets/bigtable/open_table.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +# Copyright 2026 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 +# +# https://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. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START bigtable_v2_generated_Bigtable_OpenTable_sync] +require "google/cloud/bigtable/v2" + +## +# Snippet for the open_table call in the Bigtable service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::Bigtable::V2::Bigtable::Client#open_table. +# +def open_table + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::Bigtable::V2::Bigtable::Client.new + + # Create an input stream. + input = Gapic::StreamInput.new + + # Call the open_table method to start streaming. + output = client.open_table input + + # Send requests on the stream. For each request object, set fields by + # passing keyword arguments. Be sure to close the stream when done. + input << Google::Cloud::Bigtable::V2::SessionRequest.new + input << Google::Cloud::Bigtable::V2::SessionRequest.new + input.close + + # The returned object is a streamed enumerable yielding elements of type + # ::Google::Cloud::Bigtable::V2::SessionResponse + output.each do |current_response| + p current_response + end +end +# [END bigtable_v2_generated_Bigtable_OpenTable_sync] diff --git a/google-cloud-bigtable-v2/snippets/snippet_metadata_google.bigtable.v2.json b/google-cloud-bigtable-v2/snippets/snippet_metadata_google.bigtable.v2.json index 42c5132c547a..1f8913eedc4e 100644 --- a/google-cloud-bigtable-v2/snippets/snippet_metadata_google.bigtable.v2.json +++ b/google-cloud-bigtable-v2/snippets/snippet_metadata_google.bigtable.v2.json @@ -450,6 +450,166 @@ "type": "FULL" } ] + }, + { + "region_tag": "bigtable_v2_generated_Bigtable_GetClientConfiguration_sync", + "title": "Snippet for the get_client_configuration call in the Bigtable service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::Bigtable::V2::Bigtable::Client#get_client_configuration.", + "file": "bigtable/get_client_configuration.rb", + "language": "RUBY", + "client_method": { + "short_name": "get_client_configuration", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client#get_client_configuration", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::Bigtable::V2::ClientConfiguration", + "client": { + "short_name": "Bigtable::Client", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client" + }, + "method": { + "short_name": "GetClientConfiguration", + "full_name": "google.bigtable.v2.Bigtable.GetClientConfiguration", + "service": { + "short_name": "Bigtable", + "full_name": "google.bigtable.v2.Bigtable" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 46, + "type": "FULL" + } + ] + }, + { + "region_tag": "bigtable_v2_generated_Bigtable_OpenTable_sync", + "title": "Snippet for the open_table call in the Bigtable service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::Bigtable::V2::Bigtable::Client#open_table.", + "file": "bigtable/open_table.rb", + "language": "RUBY", + "client_method": { + "short_name": "open_table", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client#open_table", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::Bigtable::V2::SessionRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::Bigtable::V2::SessionResponse", + "client": { + "short_name": "Bigtable::Client", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client" + }, + "method": { + "short_name": "OpenTable", + "full_name": "google.bigtable.v2.Bigtable.OpenTable", + "service": { + "short_name": "Bigtable", + "full_name": "google.bigtable.v2.Bigtable" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 55, + "type": "FULL" + } + ] + }, + { + "region_tag": "bigtable_v2_generated_Bigtable_OpenAuthorizedView_sync", + "title": "Snippet for the open_authorized_view call in the Bigtable service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::Bigtable::V2::Bigtable::Client#open_authorized_view.", + "file": "bigtable/open_authorized_view.rb", + "language": "RUBY", + "client_method": { + "short_name": "open_authorized_view", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client#open_authorized_view", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::Bigtable::V2::SessionRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::Bigtable::V2::SessionResponse", + "client": { + "short_name": "Bigtable::Client", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client" + }, + "method": { + "short_name": "OpenAuthorizedView", + "full_name": "google.bigtable.v2.Bigtable.OpenAuthorizedView", + "service": { + "short_name": "Bigtable", + "full_name": "google.bigtable.v2.Bigtable" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 55, + "type": "FULL" + } + ] + }, + { + "region_tag": "bigtable_v2_generated_Bigtable_OpenMaterializedView_sync", + "title": "Snippet for the open_materialized_view call in the Bigtable service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::Bigtable::V2::Bigtable::Client#open_materialized_view.", + "file": "bigtable/open_materialized_view.rb", + "language": "RUBY", + "client_method": { + "short_name": "open_materialized_view", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client#open_materialized_view", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::Bigtable::V2::SessionRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::Bigtable::V2::SessionResponse", + "client": { + "short_name": "Bigtable::Client", + "full_name": "::Google::Cloud::Bigtable::V2::Bigtable::Client" + }, + "method": { + "short_name": "OpenMaterializedView", + "full_name": "google.bigtable.v2.Bigtable.OpenMaterializedView", + "service": { + "short_name": "Bigtable", + "full_name": "google.bigtable.v2.Bigtable" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 55, + "type": "FULL" + } + ] } ] } \ No newline at end of file diff --git a/google-cloud-bigtable-v2/test/google/cloud/bigtable/v2/bigtable_test.rb b/google-cloud-bigtable-v2/test/google/cloud/bigtable/v2/bigtable_test.rb index 247624863012..8f2ffd4de549 100644 --- a/google-cloud-bigtable-v2/test/google/cloud/bigtable/v2/bigtable_test.rb +++ b/google-cloud-bigtable-v2/test/google/cloud/bigtable/v2/bigtable_test.rb @@ -886,6 +886,333 @@ def test_execute_query end end + def test_get_client_configuration + # Create GRPC objects. + grpc_response = ::Google::Cloud::Bigtable::V2::ClientConfiguration.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + instance_name = "hello world" + app_profile_id = "hello world" + + get_client_configuration_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :get_client_configuration, name + assert_kind_of ::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest, request + assert_equal "hello world", request["instance_name"] + assert_equal "hello world", request["app_profile_id"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, get_client_configuration_client_stub do + # Create client + client = ::Google::Cloud::Bigtable::V2::Bigtable::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + client.get_client_configuration({ instance_name: instance_name, app_profile_id: app_profile_id }) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use named arguments + client.get_client_configuration instance_name: instance_name, app_profile_id: app_profile_id do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object + client.get_client_configuration ::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest.new(instance_name: instance_name, app_profile_id: app_profile_id) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use hash object with options + client.get_client_configuration({ instance_name: instance_name, app_profile_id: app_profile_id }, grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + client.get_client_configuration(::Google::Cloud::Bigtable::V2::GetClientConfigurationRequest.new(instance_name: instance_name, app_profile_id: app_profile_id), grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, get_client_configuration_client_stub.call_rpc_count + end + end + + def test_open_table + # Create GRPC objects. + grpc_response = ::Google::Cloud::Bigtable::V2::SessionResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a bidi streaming method. + open_session = {} + + open_table_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:| + assert_equal :open_table, name + assert_kind_of Enumerable, request + refute_nil options + request + end + + Gapic::ServiceStub.stub :new, open_table_client_stub do + # Create client + client = ::Google::Cloud::Bigtable::V2::Bigtable::Client.new do |config| + config.credentials = grpc_channel + end + + # Use enumerable object with hash and protobuf object. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + enum_input = [request_hash, request_proto].to_enum + client.open_table enum_input do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + + # Use stream input object (from gapic-common). + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + stream_input = Gapic::StreamInput.new + client.open_table stream_input do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + stream_input << request_hash + stream_input << request_proto + stream_input.close + + # Use enumerable object with hash and protobuf object with options. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + enum_input = [request_hash, request_proto].to_enum + client.open_table enum_input, grpc_options do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + + # Use stream input object (from gapic-common) with options. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + stream_input = Gapic::StreamInput.new + client.open_table stream_input, grpc_options do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + stream_input << request_hash + stream_input << request_proto + stream_input.close + + # Verify method calls + assert_equal 4, open_table_client_stub.call_rpc_count + open_table_client_stub.requests.each do |request| + request.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionRequest, r + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::Bigtable::V2::OpenSessionRequest), r["open_session"] + assert_equal :open_session, r.payload + end + end + end + end + + def test_open_authorized_view + # Create GRPC objects. + grpc_response = ::Google::Cloud::Bigtable::V2::SessionResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a bidi streaming method. + open_session = {} + + open_authorized_view_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:| + assert_equal :open_authorized_view, name + assert_kind_of Enumerable, request + refute_nil options + request + end + + Gapic::ServiceStub.stub :new, open_authorized_view_client_stub do + # Create client + client = ::Google::Cloud::Bigtable::V2::Bigtable::Client.new do |config| + config.credentials = grpc_channel + end + + # Use enumerable object with hash and protobuf object. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + enum_input = [request_hash, request_proto].to_enum + client.open_authorized_view enum_input do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + + # Use stream input object (from gapic-common). + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + stream_input = Gapic::StreamInput.new + client.open_authorized_view stream_input do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + stream_input << request_hash + stream_input << request_proto + stream_input.close + + # Use enumerable object with hash and protobuf object with options. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + enum_input = [request_hash, request_proto].to_enum + client.open_authorized_view enum_input, grpc_options do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + + # Use stream input object (from gapic-common) with options. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + stream_input = Gapic::StreamInput.new + client.open_authorized_view stream_input, grpc_options do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + stream_input << request_hash + stream_input << request_proto + stream_input.close + + # Verify method calls + assert_equal 4, open_authorized_view_client_stub.call_rpc_count + open_authorized_view_client_stub.requests.each do |request| + request.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionRequest, r + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::Bigtable::V2::OpenSessionRequest), r["open_session"] + assert_equal :open_session, r.payload + end + end + end + end + + def test_open_materialized_view + # Create GRPC objects. + grpc_response = ::Google::Cloud::Bigtable::V2::SessionResponse.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a bidi streaming method. + open_session = {} + + open_materialized_view_client_stub = ClientStub.new [grpc_response].to_enum, grpc_operation do |name, request, options:| + assert_equal :open_materialized_view, name + assert_kind_of Enumerable, request + refute_nil options + request + end + + Gapic::ServiceStub.stub :new, open_materialized_view_client_stub do + # Create client + client = ::Google::Cloud::Bigtable::V2::Bigtable::Client.new do |config| + config.credentials = grpc_channel + end + + # Use enumerable object with hash and protobuf object. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + enum_input = [request_hash, request_proto].to_enum + client.open_materialized_view enum_input do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + + # Use stream input object (from gapic-common). + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + stream_input = Gapic::StreamInput.new + client.open_materialized_view stream_input do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + stream_input << request_hash + stream_input << request_proto + stream_input.close + + # Use enumerable object with hash and protobuf object with options. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + enum_input = [request_hash, request_proto].to_enum + client.open_materialized_view enum_input, grpc_options do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + + # Use stream input object (from gapic-common) with options. + request_hash = { open_session: open_session } + request_proto = ::Google::Cloud::Bigtable::V2::SessionRequest.new open_session: open_session + stream_input = Gapic::StreamInput.new + client.open_materialized_view stream_input, grpc_options do |response, operation| + assert_kind_of Enumerable, response + response.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionResponse, r + end + assert_equal grpc_operation, operation + end + stream_input << request_hash + stream_input << request_proto + stream_input.close + + # Verify method calls + assert_equal 4, open_materialized_view_client_stub.call_rpc_count + open_materialized_view_client_stub.requests.each do |request| + request.to_a.each do |r| + assert_kind_of ::Google::Cloud::Bigtable::V2::SessionRequest, r + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::Bigtable::V2::OpenSessionRequest), r["open_session"] + assert_equal :open_session, r.payload + end + end + end + end + def test_configure grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure