google-cloud-bigtable 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +10 -0
  3. data/LICENSE +201 -0
  4. data/README.md +65 -0
  5. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_pb.rb +139 -0
  6. data/lib/google/bigtable/admin/v2/bigtable_instance_admin_services_pb.rb +85 -0
  7. data/lib/google/bigtable/admin/v2/bigtable_table_admin_pb.rb +137 -0
  8. data/lib/google/bigtable/admin/v2/bigtable_table_admin_services_pb.rb +117 -0
  9. data/lib/google/bigtable/admin/v2/common_pb.rb +24 -0
  10. data/lib/google/bigtable/admin/v2/instance_pb.rb +72 -0
  11. data/lib/google/bigtable/admin/v2/table_pb.rb +88 -0
  12. data/lib/google/bigtable/v2/bigtable_pb.rb +109 -0
  13. data/lib/google/bigtable/v2/bigtable_services_pb.rb +67 -0
  14. data/lib/google/bigtable/v2/data_pb.rb +155 -0
  15. data/lib/google/cloud/bigtable/admin/credentials.rb +26 -0
  16. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client.rb +1417 -0
  17. data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client_config.json +123 -0
  18. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client.rb +1079 -0
  19. data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client_config.json +109 -0
  20. data/lib/google/cloud/bigtable/admin/v2/credentials.rb +50 -0
  21. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_instance_admin.rb +279 -0
  22. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_table_admin.rb +353 -0
  23. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/instance.rb +194 -0
  24. data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/table.rb +209 -0
  25. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/iam_policy.rb +62 -0
  26. data/lib/google/cloud/bigtable/admin/v2/doc/google/iam/v1/policy.rb +127 -0
  27. data/lib/google/cloud/bigtable/admin/v2/doc/google/longrunning/operations.rb +92 -0
  28. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/any.rb +124 -0
  29. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/duration.rb +90 -0
  30. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/empty.rb +28 -0
  31. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/field_mask.rb +223 -0
  32. data/lib/google/cloud/bigtable/admin/v2/doc/google/protobuf/timestamp.rb +106 -0
  33. data/lib/google/cloud/bigtable/admin/v2/doc/google/rpc/status.rb +83 -0
  34. data/lib/google/cloud/bigtable/admin/v2.rb +200 -0
  35. data/lib/google/cloud/bigtable/admin.rb +196 -0
  36. data/lib/google/cloud/bigtable/app_profile/job.rb +102 -0
  37. data/lib/google/cloud/bigtable/app_profile/list.rb +159 -0
  38. data/lib/google/cloud/bigtable/app_profile.rb +373 -0
  39. data/lib/google/cloud/bigtable/chunk_processor.rb +253 -0
  40. data/lib/google/cloud/bigtable/cluster/job.rb +92 -0
  41. data/lib/google/cloud/bigtable/cluster/list.rb +169 -0
  42. data/lib/google/cloud/bigtable/cluster.rb +264 -0
  43. data/lib/google/cloud/bigtable/column_family.rb +280 -0
  44. data/lib/google/cloud/bigtable/column_range.rb +186 -0
  45. data/lib/google/cloud/bigtable/convert.rb +75 -0
  46. data/lib/google/cloud/bigtable/credentials.rb +24 -0
  47. data/lib/google/cloud/bigtable/errors.rb +35 -0
  48. data/lib/google/cloud/bigtable/gc_rule.rb +215 -0
  49. data/lib/google/cloud/bigtable/instance/cluster_map.rb +70 -0
  50. data/lib/google/cloud/bigtable/instance/job.rb +97 -0
  51. data/lib/google/cloud/bigtable/instance/list.rb +159 -0
  52. data/lib/google/cloud/bigtable/instance.rb +921 -0
  53. data/lib/google/cloud/bigtable/longrunning_job.rb +105 -0
  54. data/lib/google/cloud/bigtable/mutation_entry.rb +244 -0
  55. data/lib/google/cloud/bigtable/mutation_operations.rb +338 -0
  56. data/lib/google/cloud/bigtable/policy.rb +163 -0
  57. data/lib/google/cloud/bigtable/project.rb +580 -0
  58. data/lib/google/cloud/bigtable/read_modify_write_rule.rb +129 -0
  59. data/lib/google/cloud/bigtable/read_operations.rb +345 -0
  60. data/lib/google/cloud/bigtable/row.rb +125 -0
  61. data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +539 -0
  62. data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +108 -0
  63. data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +570 -0
  64. data/lib/google/cloud/bigtable/row_filter/simple_filter.rb +273 -0
  65. data/lib/google/cloud/bigtable/row_filter.rb +593 -0
  66. data/lib/google/cloud/bigtable/row_range.rb +174 -0
  67. data/lib/google/cloud/bigtable/rows_mutator.rb +120 -0
  68. data/lib/google/cloud/bigtable/rows_reader.rb +196 -0
  69. data/lib/google/cloud/bigtable/sample_row_key.rb +82 -0
  70. data/lib/google/cloud/bigtable/service.rb +817 -0
  71. data/lib/google/cloud/bigtable/table/cluster_state.rb +93 -0
  72. data/lib/google/cloud/bigtable/table/column_family_map.rb +68 -0
  73. data/lib/google/cloud/bigtable/table/list.rb +147 -0
  74. data/lib/google/cloud/bigtable/table.rb +676 -0
  75. data/lib/google/cloud/bigtable/v2/bigtable_client.rb +579 -0
  76. data/lib/google/cloud/bigtable/v2/bigtable_client_config.json +65 -0
  77. data/lib/google/cloud/bigtable/v2/credentials.rb +45 -0
  78. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/bigtable.rb +286 -0
  79. data/lib/google/cloud/bigtable/v2/doc/google/bigtable/v2/data.rb +492 -0
  80. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/any.rb +124 -0
  81. data/lib/google/cloud/bigtable/v2/doc/google/protobuf/wrappers.rb +89 -0
  82. data/lib/google/cloud/bigtable/v2/doc/google/rpc/status.rb +83 -0
  83. data/lib/google/cloud/bigtable/v2.rb +132 -0
  84. data/lib/google/cloud/bigtable/value_range.rb +175 -0
  85. data/lib/google/cloud/bigtable/version.rb +22 -0
  86. data/lib/google/cloud/bigtable.rb +223 -0
  87. data/lib/google-cloud-bigtable.rb +167 -0
  88. metadata +283 -0
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2018 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https:#www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ module Google
19
+ module Cloud
20
+ module Bigtable
21
+ # # SampleRowKey
22
+ #
23
+ # Sample row key with byte offset.
24
+ #
25
+ # NOTE:
26
+ # * row_key : Sorted streamed sequence of sample row keys in the table.
27
+ # The table might have contents before the first row key in the list and after
28
+ # the last one, but a key containing the empty string indicates
29
+ # "end of table" and will be the last response given, if present.
30
+ # Note: that row keys in this list may not have ever been written to or read
31
+ # from, and users should therefore not make any assumptions about the row key
32
+ # structure that are specific to their use case.
33
+
34
+ # * offset_bytes : Approximate total storage space used by all rows in the table which precede
35
+ # `row_key`. Buffering the contents of all rows between two subsequent
36
+ # samples would require space roughly equal to the difference in their
37
+ # `offset_bytes` fields.
38
+ #
39
+ # @example
40
+ # require "google/cloud"
41
+ #
42
+ # bigtable = Google::Cloud::Bigtable.new
43
+ #
44
+ # table = bigtable.table("my-instance", "my-table")
45
+ #
46
+ # table.sample_row_keys.each do |r|
47
+ # p r
48
+ # end
49
+ #
50
+ class SampleRowKey
51
+ # @return [String] Sample row key.
52
+ attr_reader :key
53
+
54
+ # @return [Integer] Row offset in bytes.
55
+ attr_reader :offset
56
+
57
+ # @private
58
+ #
59
+ # Create SampleRowKey instance.
60
+ #
61
+ # @param key [String]
62
+ # @param offset [Integer] Row offset in bytes.
63
+ #
64
+ def initialize key, offset
65
+ @key = key
66
+ @offset = offset
67
+ end
68
+
69
+ # @private
70
+ #
71
+ # Creates a new SampleRowKey instance from a
72
+ # Google::Bigtable::V2::SampleRowKey.
73
+ # @param grpc [Google::Bigtable::V2::SampleRowKeysResponse]
74
+ # @return [Google::Cloud::Bigtable::SampleRowKey]
75
+ #
76
+ def self.from_grpc grpc
77
+ new(grpc.row_key, grpc.offset_bytes)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,817 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2018 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+
18
+ require "google/cloud/bigtable/version"
19
+ require "google/cloud/bigtable/errors"
20
+ require "google/cloud/bigtable/credentials"
21
+ require "google/cloud/bigtable/admin/v2/bigtable_instance_admin_client"
22
+ require "google/cloud/bigtable/admin/v2/bigtable_table_admin_client"
23
+ require "google/cloud/bigtable/v2/bigtable_client"
24
+
25
+ module Google
26
+ module Cloud
27
+ module Bigtable
28
+ # @private
29
+ # Represents the gRPC Bigtable service, including all the API methods.
30
+ class Service
31
+ # @private
32
+ attr_accessor :project_id, :credentials, :timeout, :client_config
33
+
34
+ # @private
35
+ # Creates a new Service instance.
36
+ #
37
+ # @param project_id [String] Project identifier
38
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
39
+ # Provides the means for authenticating requests made by the client. This parameter can
40
+ # be many types.
41
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
42
+ # authenticating requests made by this client.
43
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
44
+ # credentials for this client.
45
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
46
+ # credentials for this client.
47
+ # A `GRPC::Core::Channel` will be used to make calls through.
48
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
49
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
50
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
51
+ # metadata for requests, generally, to give OAuth credentials.
52
+ # @param timeout [Integer]
53
+ # The default timeout, in seconds, for calls made through this client.
54
+ # @param client_config [Hash]
55
+ # A Hash for call options for each method.
56
+ # See Google::Gax#construct_settings for the structure of
57
+ # this data. Falls back to the default config if not specified
58
+ # or the specified config is missing data points.
59
+
60
+ def initialize project_id, credentials, timeout: nil, client_config: nil
61
+ @project_id = project_id
62
+ @credentials = credentials
63
+ @timeout = timeout
64
+ @client_config = client_config || {}
65
+ end
66
+
67
+ # Create or return existing instance of instance admin client.
68
+ #
69
+ # @return [Google::Cloud::Bigtable::Admin::V2::BigtableInstanceAdminClient]
70
+
71
+ def instances
72
+ @instances ||= \
73
+ Admin::V2::BigtableInstanceAdminClient.new(
74
+ credentials: credentials,
75
+ timeout: timeout,
76
+ client_config: client_config,
77
+ lib_name: "gccl",
78
+ lib_version: Google::Cloud::Bigtable::VERSION
79
+ )
80
+ end
81
+
82
+ # Create or return existing instance of table admin client.
83
+ #
84
+ # @return [Google::Cloud::Bigtable::Admin::V2::BigtableTableAdminClient]
85
+
86
+ def tables
87
+ @tables ||= \
88
+ Admin::V2::BigtableTableAdminClient.new(
89
+ credentials: credentials,
90
+ timeout: timeout,
91
+ client_config: client_config,
92
+ lib_name: "gccl",
93
+ lib_version: Google::Cloud::Bigtable::VERSION
94
+ )
95
+ end
96
+
97
+ # Create instance of data client.
98
+ #
99
+ # @return [Google::Cloud::Bigtable::V2::BigtableClient]
100
+
101
+ def client
102
+ @client ||= \
103
+ V2::BigtableClient.new(
104
+ credentials: credentials,
105
+ timeout: timeout,
106
+ client_config: client_config,
107
+ lib_name: "gccl",
108
+ lib_version: Google::Cloud::Bigtable::VERSION
109
+ )
110
+ end
111
+
112
+ # Create an instance within a project.
113
+ #
114
+ # @param instance_id [String]
115
+ # The ID to be used when referring to the new instance within its project.
116
+ # e.g., +myinstance+
117
+ # @param instance [Google::Bigtable::Admin::V2::Instance | Hash]
118
+ # @param clusters [Hash{String => Google::Bigtable::Admin::V2::Cluster | Hash}]
119
+ # The clusters to be created within the instance, mapped by desired
120
+ # cluster ID, e.g., just +mycluster+ rather than
121
+ # +projects/myproject/instances/myinstance/clusters/mycluster+.
122
+ # Fields marked +OutputOnly+ must be left blank.
123
+ # Currently exactly one cluster must be specified.
124
+ # A hash of the same form as `Google::Bigtable::Admin::V2::Cluster`
125
+ # can also be provided.
126
+ # @return [Google::Gax::Operation]
127
+
128
+ def create_instance \
129
+ instance_id,
130
+ instance,
131
+ clusters
132
+ execute do
133
+ instances.create_instance(
134
+ project_path,
135
+ instance_id,
136
+ instance,
137
+ clusters
138
+ )
139
+ end
140
+ end
141
+
142
+ # Lists information about instances in a project.
143
+ #
144
+ # @param token [String]
145
+ # The value of +next_page_token+ returned by a previous call.
146
+ # @return [Google::Bigtable::Admin::V2::ListInstancesResponse]
147
+
148
+ def list_instances token: nil
149
+ execute do
150
+ instances.list_instances(
151
+ project_path,
152
+ page_token: token
153
+ )
154
+ end
155
+ end
156
+
157
+ # Gets information about an instance.
158
+ #
159
+ # @param instance_id [String]
160
+ # The unique ID of the requested instance.
161
+ # @return [Google::Bigtable::Admin::V2::Instance]
162
+
163
+ def get_instance instance_id
164
+ execute do
165
+ instances.get_instance(
166
+ instance_path(instance_id)
167
+ )
168
+ end
169
+ end
170
+
171
+ # Partially updates an instance within a project.
172
+ #
173
+ # @param instance [Google::Bigtable::Admin::V2::Instance | Hash]
174
+ # The Instance which will (partially) replace the current value.
175
+ # A hash of the same form as `Google::Bigtable::Admin::V2::Instance`
176
+ # can also be provided.
177
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
178
+ # The subset of Instance fields which should be replaced.
179
+ # Must be explicitly set.
180
+ # A hash of the same form as `Google::Protobuf::FieldMask`
181
+ # can also be provided.
182
+ # @return [Google::Gax::Operation]
183
+
184
+ def partial_update_instance instance, update_mask
185
+ execute do
186
+ instances.partial_update_instance(instance, update_mask)
187
+ end
188
+ end
189
+
190
+ # Delete an instance from a project.
191
+ #
192
+ # @param instance_id [String]
193
+ # The unique Id of the instance to be deleted.
194
+
195
+ def delete_instance instance_id
196
+ execute do
197
+ instances.delete_instance(
198
+ instance_path(instance_id)
199
+ )
200
+ end
201
+ end
202
+
203
+ # Create a cluster within an instance.
204
+ #
205
+ # @param instance_id [String]
206
+ # The unique name of the instance in which to create the new cluster
207
+ # @param cluster_id [String]
208
+ # The ID to be used when referring to the new cluster within its instance,
209
+ # e.g., just +mycluster+
210
+ # @param cluster [Google::Bigtable::Admin::V2::Cluster | Hash]
211
+ # The cluster to be created.
212
+ # Fields marked +OutputOnly+ must be left blank.
213
+ # A hash of the same form as `Google::Bigtable::Admin::V2::Cluster`
214
+ # can also be provided.
215
+ # @return [Google::Gax::Operation]
216
+
217
+ def create_cluster instance_id, cluster_id, cluster
218
+ unless cluster.location == ""
219
+ cluster.location = location_path(cluster.location)
220
+ end
221
+
222
+ execute do
223
+ instances.create_cluster(
224
+ instance_path(instance_id),
225
+ cluster_id,
226
+ cluster
227
+ )
228
+ end
229
+ end
230
+
231
+ # Lists information about clusters in an instance.
232
+ #
233
+ # @param instance_id [String]
234
+ # The unique name of the instance for which a list of clusters is requested.
235
+ # @param token [String]
236
+ # The value of +next_page_token+ returned by a previous call.
237
+ # @return [Google::Bigtable::Admin::V2::ListClustersResponse]
238
+
239
+ def list_clusters instance_id, token: nil
240
+ execute do
241
+ instances.list_clusters(
242
+ instance_path(instance_id),
243
+ page_token: token
244
+ )
245
+ end
246
+ end
247
+
248
+ # Gets information about a cluster.
249
+ #
250
+ # @param instance_id [String]
251
+ # The unique Id of the instance.
252
+ # @param cluster_id [String]
253
+ # The unique Id of the requested cluster.
254
+ # @return [Google::Bigtable::Admin::V2::Cluster]
255
+
256
+ def get_cluster instance_id, cluster_id
257
+ execute do
258
+ instances.get_cluster(
259
+ cluster_path(instance_id, cluster_id)
260
+ )
261
+ end
262
+ end
263
+
264
+ # Updates a cluster within an instance.
265
+ #
266
+ # @param instance_id [String]
267
+ # The unique Id of the instance.
268
+ # @param cluster_id [String]
269
+ # The unique Id of the cluster.
270
+ # @param location [String]
271
+ # The location where this cluster's nodes and storage reside. For best
272
+ # performance, clients should be located as close as possible to this
273
+ # cluster. Currently only zones are supported, so values should be of the
274
+ # form +projects/<project>/locations/<zone>+.
275
+ # @param serve_nodes [Integer]
276
+ # The number of nodes allocated to this cluster. More nodes enable higher
277
+ # throughput and more consistent performance.
278
+ # @return [Google::Gax::Operation]
279
+
280
+ def update_cluster instance_id, cluster_id, location, serve_nodes
281
+ execute do
282
+ instances.update_cluster(
283
+ cluster_path(instance_id, cluster_id),
284
+ location,
285
+ serve_nodes
286
+ )
287
+ end
288
+ end
289
+
290
+ # Deletes a cluster from an instance.
291
+ #
292
+ # @param instance_id [String]
293
+ # The unique Id of the instance in which cluster present.
294
+ # @param cluster_id [String]
295
+ # The unique Id of the cluster to be deleted.
296
+
297
+ def delete_cluster instance_id, cluster_id
298
+ execute do
299
+ instances.delete_cluster(
300
+ cluster_path(instance_id, cluster_id)
301
+ )
302
+ end
303
+ end
304
+
305
+ # Creates a new table in the specified instance.
306
+ # The table can be created with a full set of initial column families,
307
+ # specified in the request.
308
+ #
309
+ # @param instance_id [String]
310
+ # The unique Id of the instance in which to create the table.
311
+ # @param table_id [String]
312
+ # The name by which the new table should be referred to within the parent
313
+ # instance, e.g., +foobar+
314
+ # @param table [Google::Bigtable::Admin::V2::Table | Hash]
315
+ # The Table to create.
316
+ # A hash of the same form as `Google::Bigtable::Admin::V2::Table`
317
+ # can also be provided.
318
+ # @param initial_splits [Array<Google::Bigtable::Admin::V2::CreateTableRequest::Split | Hash>]
319
+ # The optional list of row keys that will be used to initially split the
320
+ # table into several tablets (tablets are similar to HBase regions).
321
+ # Given two split keys, +s1+ and +s2+, three tablets will be created,
322
+ # spanning the key ranges: +[, s1), [s1, s2), [s2, )+.
323
+ #
324
+ # Example:
325
+ #
326
+ # * Row keys := +["a", "apple", "custom", "customer_1", "customer_2",+
327
+ # +"other", "zz"]+
328
+ # * initial_split_keys := +["apple", "customer_1", "customer_2", "other"]+
329
+ # * Key assignment:
330
+ # * Tablet 1 +[, apple) => {"a"}.+
331
+ # * Tablet 2 +[apple, customer_1) => {"apple", "custom"}.+
332
+ # * Tablet 3 +[customer_1, customer_2) => {"customer_1"}.+
333
+ # * Tablet 4 +[customer_2, other) => {"customer_2"}.+
334
+ # * Tablet 5 +[other, ) => {"other", "zz"}.+
335
+ # A hash of the same form as `Google::Bigtable::Admin::V2::CreateTableRequest::Split`
336
+ # can also be provided.
337
+ # @return [Google::Bigtable::Admin::V2::Table]
338
+
339
+ def create_table \
340
+ instance_id,
341
+ table_id,
342
+ table,
343
+ initial_splits: nil
344
+ if initial_splits
345
+ initial_splits = initial_splits.map { |key| { key: key } }
346
+ end
347
+
348
+ execute do
349
+ tables.create_table(
350
+ instance_path(instance_id),
351
+ table_id,
352
+ table,
353
+ initial_splits: initial_splits
354
+ )
355
+ end
356
+ end
357
+
358
+ # Lists all tables served from a specified instance.
359
+ #
360
+ # @param instance_id [String]
361
+ # The unique Id of the instance for which tables should be listed.
362
+ # @param view [Google::Bigtable::Admin::V2::Table::View]
363
+ # The view to be applied to the returned tables' fields.
364
+ # Defaults to +NAME_ONLY+ if unspecified; no others are currently supported.
365
+ # @return [Google::Gax::PagedEnumerable<Google::Bigtable::Admin::V2::Table>]
366
+ # An enumerable of Google::Bigtable::Admin::V2::Table instances.
367
+ # See Google::Gax::PagedEnumerable documentation for other
368
+ # operations such as per-page iteration or access to the response
369
+
370
+ def list_tables instance_id, view: nil
371
+ execute do
372
+ tables.list_tables(
373
+ instance_path(instance_id),
374
+ view: view
375
+ )
376
+ end
377
+ end
378
+
379
+ # Gets metadata information about the specified table.
380
+ #
381
+ # @param instance_id [String]
382
+ # The unique Id of the instance in which table is exists.
383
+ # @param table_id [String]
384
+ # The unique Id of the requested table.
385
+ # @param view [Google::Bigtable::Admin::V2::Table::View]
386
+ # The view to be applied to the returned table's fields.
387
+ # Defaults to +SCHEMA_VIEW+ if unspecified.
388
+ # @return [Google::Bigtable::Admin::V2::Table]
389
+
390
+ def get_table instance_id, table_id, view: nil
391
+ execute do
392
+ tables.get_table(
393
+ table_path(instance_id, table_id),
394
+ view: view
395
+ )
396
+ end
397
+ end
398
+
399
+ # Permanently deletes a specified table and all of its data.
400
+ #
401
+ # @param instance_id [String]
402
+ # The unique Id of the instance in which table is exists.
403
+ # @param table_id [String]
404
+ # The unique Id of the table to be deleted.
405
+
406
+ def delete_table instance_id, table_id
407
+ execute do
408
+ tables.delete_table(
409
+ table_path(instance_id, table_id)
410
+ )
411
+ end
412
+ end
413
+
414
+ # Performs a series of column family modifications on the specified table.
415
+ # Either all or none of the modifications will occur before this method
416
+ # returns, but data requests received prior to that point may see a table
417
+ # where only some modifications have taken effect.
418
+ #
419
+ # @param instance_id [String]
420
+ # The unique Id of the instance in which table is exists.
421
+ # @param table_id [String]
422
+ # The unique Id of the table whose families should be modified.
423
+ # @param modifications [Array<Google::Bigtable::Admin::V2::ModifyColumnFamiliesRequest::Modification | Hash>]
424
+ # Modifications to be atomically applied to the specified table's families.
425
+ # Entries are applied in order, meaning that earlier modifications can be
426
+ # masked by later ones (in the case of repeated updates to the same family,
427
+ # for example).
428
+ # A hash of the same form as `Google::Bigtable::Admin::V2::ModifyColumnFamiliesRequest::Modification`
429
+ # can also be provided.
430
+ # @return [Google::Bigtable::Admin::V2::Table]
431
+
432
+ def modify_column_families instance_id, table_id, modifications
433
+ execute do
434
+ tables.modify_column_families(
435
+ table_path(instance_id, table_id),
436
+ modifications
437
+ )
438
+ end
439
+ end
440
+
441
+ # Generates a consistency token for a Table, which can be used in
442
+ # CheckConsistency to check whether mutations to the table that finished
443
+ # before this call started have been replicated. The tokens will be available
444
+ # for 90 days.
445
+ #
446
+ # @param instance_id [String]
447
+ # The unique Id of the instance in which table is exists.
448
+ # @param table_id [String]
449
+ # The unique Id of the Table for which to create a consistency token.
450
+ # @return [Google::Bigtable::Admin::V2::GenerateConsistencyTokenResponse]
451
+
452
+ def generate_consistency_token instance_id, table_id
453
+ execute do
454
+ tables.generate_consistency_token(
455
+ table_path(instance_id, table_id)
456
+ )
457
+ end
458
+ end
459
+
460
+ # Checks replication consistency based on a consistency token, that is, if
461
+ # replication has caught up based on the conditions specified in the token
462
+ # and the check request.
463
+ #
464
+ # @param instance_id [String]
465
+ # The unique Id of the instance in which table is exists.
466
+ # @param table_id [String]
467
+ # The unique Id of the Table for which to check replication consistency.
468
+ # @param token [String] Consistency token
469
+ # The token created using GenerateConsistencyToken for the Table.
470
+ # @return [Google::Bigtable::Admin::V2::CheckConsistencyResponse]
471
+
472
+ def check_consistency instance_id, table_id, token
473
+ execute do
474
+ tables.check_consistency(
475
+ table_path(instance_id, table_id),
476
+ token
477
+ )
478
+ end
479
+ end
480
+
481
+ # Permanently drop/delete a row range from a specified table. The request can
482
+ # specify whether to delete all rows in a table, or only those that match a
483
+ # particular prefix.
484
+ #
485
+ # @param instance_id [String]
486
+ # The unique Id of the instance in which table is exists.
487
+ # @param table_id [String]
488
+ # The unique Id of the table on which to drop a range of rows.
489
+ # @param row_key_prefix [String]
490
+ # Delete all rows that start with this row key prefix. Prefix cannot be
491
+ # zero length.
492
+ # @param delete_all_data_from_table [true, false]
493
+ # Delete all rows in the table. Setting this to false is a no-op.
494
+ # @param timeout [Integer]
495
+ # Set api call timeout if deadline exceeded exception.
496
+
497
+ def drop_row_range \
498
+ instance_id,
499
+ table_id,
500
+ row_key_prefix: nil,
501
+ delete_all_data_from_table: nil,
502
+ timeout: nil
503
+ call_options = nil
504
+
505
+ # Pass timeout with larger value if drop operation throw error for
506
+ # tiemout time.
507
+ if timeout
508
+ retry_options = Google::Gax::RetryOptions.new(
509
+ [],
510
+ Google::Gax::BackoffSettings.new(0, 0, 0, timeout * 1000, 0, 0, 0)
511
+ )
512
+ call_options = Google::Gax::CallOptions.new(
513
+ retry_options: retry_options
514
+ )
515
+ end
516
+
517
+ execute do
518
+ tables.drop_row_range(
519
+ table_path(instance_id, table_id),
520
+ row_key_prefix: row_key_prefix,
521
+ delete_all_data_from_table: delete_all_data_from_table,
522
+ options: call_options
523
+ )
524
+ end
525
+ end
526
+
527
+ # Creates an app profile within an instance.
528
+ #
529
+ # @param instance_id [String]
530
+ # The unique Id of the instance.
531
+ # @param app_profile_id [String]
532
+ # The ID to be used when referring to the new app profile within its
533
+ # instance, e.g., +myprofile+
534
+ # @param app_profile [Google::Bigtable::Admin::V2::AppProfile | Hash]
535
+ # The app profile to be created.
536
+ # Fields marked +OutputOnly+ will be ignored.
537
+ # A hash of the same form as `Google::Bigtable::Admin::V2::AppProfile`
538
+ # can also be provided.
539
+ # @param ignore_warnings [Boolean]
540
+ # If true, ignore safety checks when creating the app profile.
541
+ # @return [Google::Bigtable::Admin::V2::AppProfile]
542
+
543
+ def create_app_profile \
544
+ instance_id,
545
+ app_profile_id,
546
+ app_profile,
547
+ ignore_warnings: nil
548
+ execute do
549
+ instances.create_app_profile(
550
+ instance_path(instance_id),
551
+ app_profile_id,
552
+ app_profile,
553
+ ignore_warnings: ignore_warnings
554
+ )
555
+ end
556
+ end
557
+
558
+ # Gets information about an app profile.
559
+ #
560
+ # @param instance_id [String]
561
+ # The unique Id of the instance.
562
+ # @param app_profile_id [String]
563
+ # The unique Id of the requested app profile.
564
+ # @return [Google::Bigtable::Admin::V2::AppProfile]
565
+
566
+ def get_app_profile instance_id, app_profile_id
567
+ execute do
568
+ instances.get_app_profile(
569
+ app_profile_path(instance_id, app_profile_id)
570
+ )
571
+ end
572
+ end
573
+
574
+ # Lists information about app profiles in an instance.
575
+ #
576
+ # @param instance_id [String]
577
+ # The unique Id of the instanc
578
+ # @return [Google::Gax::PagedEnumerable<Google::Bigtable::Admin::V2::AppProfile>]
579
+ # An enumerable of Google::Bigtable::Admin::V2::AppProfile instances.
580
+ # See Google::Gax::PagedEnumerable documentation for other
581
+ # operations such as per-page iteration or access to the response
582
+ # object.
583
+ def list_app_profiles instance_id
584
+ execute do
585
+ instances.list_app_profiles(
586
+ instance_path(instance_id)
587
+ )
588
+ end
589
+ end
590
+
591
+ # Updates an app profile within an instance.
592
+ #
593
+ # @param app_profile [Google::Bigtable::Admin::V2::AppProfile | Hash]
594
+ # The app profile which will (partially) replace the current value.
595
+ # A hash of the same form as `Google::Bigtable::Admin::V2::AppProfile`
596
+ # can also be provided.
597
+ # @param update_mask [Google::Protobuf::FieldMask | Hash]
598
+ # The subset of app profile fields which should be replaced.
599
+ # If unset, all fields will be replaced.
600
+ # A hash of the same form as `Google::Protobuf::FieldMask`
601
+ # can also be provided.
602
+ # @param ignore_warnings [Boolean]
603
+ # If true, ignore safety checks when updating the app profile.
604
+ # @return [Google::Longrunning::Operation]
605
+
606
+ def update_app_profile app_profile, update_mask, ignore_warnings: nil
607
+ execute do
608
+ instances.update_app_profile(
609
+ app_profile,
610
+ update_mask,
611
+ ignore_warnings: ignore_warnings
612
+ )
613
+ end
614
+ end
615
+
616
+ # Deletes an app profile from an instance.
617
+ #
618
+ # @param instance_id [String]
619
+ # The unique Id of the instance.
620
+ # @param app_profile_id [String]
621
+ # The unique Id of the app profile to be deleted.
622
+ # @param ignore_warnings [Boolean]
623
+ # If true, ignore safety checks when deleting the app profile.
624
+
625
+ def delete_app_profile instance_id, app_profile_id, ignore_warnings: nil
626
+ execute do
627
+ instances.delete_app_profile(
628
+ app_profile_path(instance_id, app_profile_id),
629
+ ignore_warnings
630
+ )
631
+ end
632
+ end
633
+
634
+ # Gets the access control policy for an instance resource. Returns an empty
635
+ # policy if an instance exists but does not have a policy set.
636
+ #
637
+ # @param instance_id [String]
638
+ # The unique Id of the instance for which the policy is being requested.
639
+ # @return [Google::Iam::V1::Policy]
640
+
641
+ def get_instance_policy instance_id
642
+ execute do
643
+ instances.get_iam_policy(
644
+ instance_path(instance_id)
645
+ )
646
+ end
647
+ end
648
+
649
+ # Sets the access control policy on an instance resource. Replaces any
650
+ # existing policy.
651
+ #
652
+ # @param instance_id [String]
653
+ # The unique Id of the instance for which the policy is being updated.
654
+ # @param policy [Google::Iam::V1::Policy | Hash]
655
+ # REQUIRED: The complete policy to be applied to the +resource+. The size of
656
+ # the policy is limited to a few 10s of KB. An empty policy is a
657
+ # valid policy but certain Cloud Platform services (such as Projects)
658
+ # might reject them.
659
+ # A hash of the same form as `Google::Iam::V1::Policy`
660
+ # can also be provided.
661
+ # @return [Google::Iam::V1::Policy]
662
+
663
+ def set_instance_policy instance_id, policy
664
+ execute do
665
+ instances.set_iam_policy(
666
+ instance_path(instance_id),
667
+ policy
668
+ )
669
+ end
670
+ end
671
+
672
+ # Returns permissions that the caller has on the specified instance resource.
673
+ #
674
+ # @param instance_id [String]
675
+ # The instance Id of instance for which the policy detail is being requested.
676
+ # @param permissions [Array<String>]
677
+ # The set of permissions to check for the +resource+. Permissions with
678
+ # wildcards (such as '*' or 'storage.*') are not allowed. For more
679
+ # information see
680
+ # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
681
+ # @return [Google::Iam::V1::TestIamPermissionsResponse]
682
+
683
+ def test_instance_permissions instance_id, permissions
684
+ execute do
685
+ instances.test_iam_permissions(
686
+ instance_path(instance_id),
687
+ permissions
688
+ )
689
+ end
690
+ end
691
+
692
+ # Execute api call and wrap errors to {Google::Cloud::Error}
693
+ #
694
+ # @raise [Google::Cloud::Error]
695
+
696
+ def execute
697
+ yield
698
+ rescue Google::Gax::GaxError => e
699
+ raise Google::Cloud::Error.from_error(e.cause)
700
+ rescue GRPC::BadStatus => e
701
+ raise Google::Cloud::Error.from_error(e)
702
+ end
703
+
704
+ # Create formatted project path
705
+ #
706
+ # @return [String]
707
+ # Formatted project path
708
+ # +projects/<project>+
709
+
710
+ def project_path
711
+ Admin::V2::BigtableInstanceAdminClient.project_path(project_id)
712
+ end
713
+
714
+ # Create formatted instance path
715
+ #
716
+ # @param instance_id [String]
717
+ # @return [String]
718
+ # Formatted instance path
719
+ # +projects/<project>/instances/[a-z][a-z0-9\\-]+[a-z0-9]+.
720
+
721
+ def instance_path instance_id
722
+ Admin::V2::BigtableInstanceAdminClient.instance_path(
723
+ project_id,
724
+ instance_id
725
+ )
726
+ end
727
+
728
+ # Create formatted cluster path
729
+ #
730
+ # @param instance_id [String]
731
+ # @param cluster_id [String]
732
+ # @return [String]
733
+ # Formatted cluster path
734
+ # +projects/<project>/instances/<instance>/clusters/<cluster>+.
735
+
736
+ def cluster_path instance_id, cluster_id
737
+ Admin::V2::BigtableInstanceAdminClient.cluster_path(
738
+ project_id,
739
+ instance_id,
740
+ cluster_id
741
+ )
742
+ end
743
+
744
+ # Create formatted location path
745
+ #
746
+ # @param location [String]
747
+ # zone name i.e us-east1-b
748
+ # @return [String]
749
+ # Formatted location path
750
+ # +projects/<project_id>/locations/<location>+.
751
+
752
+ def location_path location
753
+ Admin::V2::BigtableInstanceAdminClient.location_path(
754
+ project_id,
755
+ location
756
+ )
757
+ end
758
+
759
+ # Create formatted table path
760
+ #
761
+ # @param table_id [String]
762
+ # @return [String]
763
+ # Formatted table path
764
+ # +projects/<project>/instances/<instance>/tables/<table>+
765
+
766
+ def table_path instance_id, table_id
767
+ Admin::V2::BigtableTableAdminClient.table_path(
768
+ project_id,
769
+ instance_id,
770
+ table_id
771
+ )
772
+ end
773
+
774
+ # Create formatted snapshot path
775
+ #
776
+ # @param instance_id [String]
777
+ # @param cluster_id [String]
778
+ # @param snapshot_id [String]
779
+ # @return [String]
780
+ # Formatted snapshot path
781
+ # +projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/<snapshot>+
782
+
783
+ def snapshot_path instance_id, cluster_id, snapshot_id
784
+ Admin::V2::BigtableTableAdminClient.snapshot_path(
785
+ project_id,
786
+ instance_id,
787
+ cluster_id,
788
+ snapshot_id
789
+ )
790
+ end
791
+
792
+ # Create formatted app profile path
793
+ #
794
+ # @param instance_id [String]
795
+ # @param app_profile_id [String]
796
+ # @return [String]
797
+ # Formatted snapshot path
798
+ # +projects/<project>/instances/<instance>/appProfiles/<app_profile>+
799
+
800
+ def app_profile_path instance_id, app_profile_id
801
+ Admin::V2::BigtableInstanceAdminClient.app_profile_path(
802
+ project_id,
803
+ instance_id,
804
+ app_profile_id
805
+ )
806
+ end
807
+
808
+ # Inspect service object
809
+ # @return [String]
810
+
811
+ def inspect
812
+ "#{self.class}(#{@project_id})"
813
+ end
814
+ end
815
+ end
816
+ end
817
+ end