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,129 @@
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
+ # # ReadModifyWriteRule
22
+ #
23
+ # Specifies an atomic read/modify/write operation on the latest value of the
24
+ # specified column.
25
+ #
26
+ # @example Append value rule
27
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.append(
28
+ # "cf", "field01", "append-xyz"
29
+ # )
30
+ #
31
+ # @example increment value rule
32
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.increment(
33
+ # "cf", "field01", 1
34
+ # )
35
+ #
36
+ class ReadModifyWriteRule
37
+ # @private
38
+ # Create instance of ReadModifyWriteRule
39
+ #
40
+ # @param family [String]
41
+ # The name of the family to which the read/modify/write should be applied.
42
+ # @param qualifier [String]
43
+ # The qualifier of the column to which the read/modify/write should be
44
+ #
45
+ def initialize family, qualifier
46
+ @grpc = Google::Bigtable::V2::ReadModifyWriteRule.new
47
+ @grpc.family_name = family
48
+ @grpc.column_qualifier = qualifier
49
+ end
50
+
51
+ # Create append value rule instance.
52
+ #
53
+ # @param family [String]
54
+ # The name of the family to which the read/modify/write should be applied.
55
+ # @param qualifier [String]
56
+ # The qualifier of the column to which the read/modify/write should be applied.
57
+ # @param value [String]
58
+ # Rule specifying that `append_value` be appended to the existing value.
59
+ # If the targeted cell is unset, it will be treated as containing the empty string.
60
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
61
+ #
62
+ # @example Append value rule
63
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.append(
64
+ # "cf", "field01", "append-xyz"
65
+ # )
66
+ #
67
+ def self.append family, qualifier, value
68
+ rule = new(family, qualifier)
69
+ rule.append(value)
70
+ rule
71
+ end
72
+
73
+ # Create increment amount rule instance.
74
+ #
75
+ # @param family [String]
76
+ # The name of the family to which the read/modify/write should be applied.
77
+ # @param qualifier [String]
78
+ # The qualifier of the column to which the read/modify/write should be applied.
79
+ # @param amount [String]
80
+ # Rule specifying that `increment_amount` be added to the existing value.
81
+ # If the targeted cell is unset, it will be treated as containing a zero.
82
+ # Otherwise, the targeted cell must contain an 8-byte value (interpreted
83
+ # as a 64-bit big-endian signed integer), or the entire request will fail.
84
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
85
+ #
86
+ # @example increment value rule
87
+ # rule = Google::Cloud::Bigtable::ReadModifyWriteRule.increment(
88
+ # "cf", "field01", 1
89
+ # )
90
+ #
91
+ def self.increment family, qualifier, amount
92
+ rule = new(family, qualifier)
93
+ rule.increment(amount)
94
+ rule
95
+ end
96
+
97
+ # Set append value.
98
+ #
99
+ # @param value [String]
100
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
101
+ #
102
+ def append value
103
+ @grpc.append_value = value
104
+ self
105
+ end
106
+
107
+ # Set increment amount.
108
+ #
109
+ # @param amount [Integer]
110
+ # @return [Google::Cloud::Bigtable::ReadModifyWriteRule]
111
+ #
112
+ def increment amount
113
+ @grpc.increment_amount = amount
114
+ self
115
+ end
116
+
117
+ # @private
118
+ #
119
+ # Get gRPC protobuf instance.
120
+ #
121
+ # @return [Google::Bigtable::V2::ReadModifyWriteRule]
122
+ #
123
+ def to_grpc
124
+ @grpc
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,345 @@
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/row"
19
+ require "google/cloud/bigtable/rows_reader"
20
+ require "google/cloud/bigtable/row_range"
21
+ require "google/cloud/bigtable/row_filter"
22
+ require "google/cloud/bigtable/sample_row_key"
23
+
24
+ module Google
25
+ module Cloud
26
+ module Bigtable
27
+ # # ReadOperations
28
+ #
29
+ # Collection of read rows apis.
30
+ #
31
+ # * Sample row key
32
+ # * Read row
33
+ # * Read rows
34
+ #
35
+ module ReadOperations
36
+ # Read sample row keys.
37
+ #
38
+ # Returns a sample of row keys in the table. The returned row keys will
39
+ # delimit contiguous sections of the table of approximately equal size,
40
+ # which can be used to break up the data for distributed tasks like
41
+ # mapreduces.
42
+ #
43
+ # @yieldreturn [Google::Cloud::Bigtable::SampleRowKey]
44
+ # @return [:yields: sample_row_key]
45
+ # Yield block for each processed SampleRowKey.
46
+ #
47
+ # @example
48
+ # require "google/cloud"
49
+ #
50
+ # bigtable = Google::Cloud::Bigtable.new
51
+ # table = bigtable.table("my-instance", "my-table")
52
+ #
53
+ # table.sample_row_keys.each do |sample_row_key|
54
+ # p sample_row_key.key # user00116
55
+ # p sample_row_key.offset # 805306368
56
+ # end
57
+ #
58
+ def sample_row_keys
59
+ return enum_for(:sample_row_keys) unless block_given?
60
+
61
+ response = client.sample_row_keys(
62
+ path,
63
+ app_profile_id: @app_profile_id
64
+ )
65
+ response.each do |grpc|
66
+ yield SampleRowKey.from_grpc(grpc)
67
+ end
68
+ end
69
+
70
+ # Read rows
71
+ #
72
+ # Streams back the contents of all requested rows in key order, optionally
73
+ # applying the same Reader filter to each.
74
+ # `read_rows`, `row_ranges` and `filter` if not specified, reads from all rows.
75
+ #
76
+ # See {Google::Cloud::Bigtable::RowFilter} for filter types.
77
+ #
78
+ # @param keys [Array<String>] List of row keys to be read. Optional.
79
+ # @param ranges [Google::Cloud::Bigtable::RowRange | Array<Google::Cloud::Bigtable::RowRange>]
80
+ # Row ranges array or single range. Optional.
81
+ # @param filter [SimpleFilter, ChainFilter, InterleaveFilter, ConditionFilter]
82
+ # The filter to apply to the contents of the specified row(s). If unset,
83
+ # reads the entries of each row. Optional.
84
+ # @param limit [Integer] Limit number of read rows count. Optional.
85
+ # The read will terminate after committing to N rows' worth of results.
86
+ # The default (zero) is to return all results.
87
+ # @return [Array<Google::Cloud::Bigtable::Row> | :yields: row]
88
+ # Array of row or yield block for each processed row.
89
+ # @example Read with Limit
90
+ # require "google/cloud/bigtable"
91
+ #
92
+ # bigtable = Google::Cloud::Bigtable.new
93
+ # table = bigtable.table("my-instance", "my-table")
94
+ #
95
+ # table.read_rows(limit: 10).each do |row|
96
+ # puts row
97
+ # end
98
+ #
99
+ # @example Read using row keys
100
+ # require "google/cloud/bigtable"
101
+ #
102
+ # bigtable = Google::Cloud::Bigtable.new
103
+ # table = bigtable.table("my-instance", "my-table")
104
+ #
105
+ # table.read_rows(keys: ["user-1", "user-2"]).each do |row|
106
+ # puts row
107
+ # end
108
+ #
109
+ # @example Read using row ranges
110
+ # require "google/cloud/bigtable"
111
+ #
112
+ # bigtable = Google::Cloud::Bigtable.new
113
+ # table = bigtable.table("my-instance", "my-table")
114
+ #
115
+ # range = table.row_range.between("user-1", "user-100")
116
+ #
117
+ # table.read_rows(ranges: range).each do |row|
118
+ # puts row
119
+ # end
120
+ #
121
+ # @example Read using filter
122
+ #
123
+ # require "google/cloud/bigtable"
124
+ #
125
+ # bigtable = Google::Cloud::Bigtable.new
126
+ # table = bigtable.table("my-instance", "my-table")
127
+ #
128
+ # filter = table.filter.key("user-*")
129
+ # # OR
130
+ # # filter = Google::Cloud::Bigtable::RowFilter.key("user-*")
131
+ #
132
+ # table.read_rows(filter: filter).each do |row|
133
+ # puts row
134
+ # end
135
+ #
136
+ # @example Read using filter with limit
137
+ #
138
+ # require "google/cloud/bigtable"
139
+ #
140
+ # bigtable = Google::Cloud::Bigtable.new
141
+ # table = bigtable.table("my-instance", "my-table")
142
+ #
143
+ # filter = table.filter.key("user-*")
144
+ # # OR
145
+ # # filter = Google::Cloud::Bigtable::RowFilter.key("user-*")
146
+ #
147
+ # table.read_rows(filter: filter, limit: 10).each do |row|
148
+ # puts rowow
149
+ # end
150
+ #
151
+ def read_rows \
152
+ keys: nil,
153
+ ranges: nil,
154
+ filter: nil,
155
+ limit: nil,
156
+ &block
157
+ unless block_given?
158
+ return enum_for(
159
+ :read_rows,
160
+ keys: keys,
161
+ ranges: ranges,
162
+ filter: filter,
163
+ limit: limit
164
+ )
165
+ end
166
+ row_set = build_row_set(keys, ranges)
167
+ rows_limit = limit
168
+ rows_filter = filter.to_grpc if filter
169
+ rows_reader = RowsReader.new(self)
170
+
171
+ begin
172
+ rows_reader.read(
173
+ rows: row_set,
174
+ filter: rows_filter,
175
+ rows_limit: rows_limit,
176
+ &block
177
+ )
178
+ rescue *RowsReader::RETRYABLE_ERRORS => e
179
+ rows_reader.retry_count += 1
180
+ unless rows_reader.retryable?
181
+ raise Google::Cloud::Error.from_error(e)
182
+ end
183
+ rows_limit, row_set = rows_reader.retry_options(limit, row_set)
184
+ retry
185
+ end
186
+ end
187
+
188
+ # Read single row by key
189
+ #
190
+ # @param key [String] Row key. Required
191
+ # @param filter [Google::Cloud::Bigtable::RowFilter]
192
+ # The filter to apply to the contents of the specified row. Optional.
193
+ # @return [Google::Cloud::Bigtable::Row]
194
+ #
195
+ # @example Read row
196
+ #
197
+ # require "google/cloud/bigtable"
198
+ #
199
+ # bigtable = Google::Cloud::Bigtable.new
200
+ # table = bigtable.table("my-instance", "my-table")
201
+ #
202
+ # row = table.read_row("user-1")
203
+ #
204
+ # @example Read row
205
+ #
206
+ # require "google/cloud/bigtable"
207
+ #
208
+ # bigtable = Google::Cloud::Bigtable.new
209
+ # table = bigtable.table("my-instance", "my-table")
210
+ #
211
+ # filter = Google::Cloud::Bigtable::RowFilter.cells_per_row(3)
212
+ #
213
+ # row = table.read_row("user-1", filter: filter)
214
+ #
215
+ def read_row key, filter: nil
216
+ read_rows(keys: [key], filter: filter).first
217
+ end
218
+
219
+ # Create new instance of ValueRange.
220
+ #
221
+ # @return [Google::Cloud::Bigtable::ValueRange]
222
+ #
223
+ # @example
224
+ # require "google/cloud/bigtable"
225
+ #
226
+ # bigtable = Google::Cloud::Bigtable.new
227
+ # table = bigtable.table("my-instance", "my-table")
228
+ #
229
+ # range = table.value_range
230
+ # range.from("abc")
231
+ # range.to("xyz")
232
+ #
233
+ # # OR
234
+ # range = table.new_value_range.from("abc").to("xyz")
235
+ #
236
+ # @example With exclusive from range
237
+ # require "google/cloud/bigtable"
238
+ #
239
+ # bigtable = Google::Cloud::Bigtable.new
240
+ # table = bigtable.table("my-instance", "my-table")
241
+ #
242
+ # range = table.new_value_range.from("abc", inclusive: false).to("xyz")
243
+ #
244
+ def new_value_range
245
+ Google::Cloud::Bigtable::ValueRange.new
246
+ end
247
+
248
+ # Get new instance of ColumnRange.
249
+ #
250
+ # @param family [String] Column family name
251
+ # @return [Google::Cloud::Bigtable::ColumnRange]
252
+ #
253
+ # @example
254
+ # require "google/cloud/bigtable"
255
+ #
256
+ # bigtable = Google::Cloud::Bigtable.new
257
+ # table = bigtable.table("my-instance", "my-table")
258
+ #
259
+ # range = table.column_range("test-family")
260
+ # range.from("abc")
261
+ # range.to("xyz")
262
+ #
263
+ # # OR
264
+ # range = table.new_column_range("test-family").from("key-1").to("key-5")
265
+ #
266
+ # @example With exclusive from range
267
+ # require "google/cloud/bigtable"
268
+ #
269
+ # bigtable = Google::Cloud::Bigtable.new
270
+ # table = bigtable.table("my-instance", "my-table")
271
+ #
272
+ # range = table.new_column_range("test-family").from("key-1", inclusive: false).to("key-5")
273
+ #
274
+ def new_column_range family
275
+ Google::Cloud::Bigtable::ColumnRange.new(family)
276
+ end
277
+
278
+ # Get new instance of RowRange.
279
+ #
280
+ # @return [Google::Cloud::Bigtable::RowRange]
281
+ #
282
+ # @example
283
+ # require "google/cloud/bigtable"
284
+ #
285
+ # bigtable = Google::Cloud::Bigtable.new
286
+ # table = bigtable.table("my-instance", "my-table")
287
+ #
288
+ # range = table.row_range
289
+ # range.from("abc")
290
+ # range.to("xyz")
291
+ #
292
+ # # OR
293
+ # range = table.new_row_range.from("key-1").to("key-5")
294
+ #
295
+ # @example With exclusive from range
296
+ # require "google/cloud/bigtable"
297
+ #
298
+ # bigtable = Google::Cloud::Bigtable.new
299
+ # table = bigtable.table("my-instance", "my-table")
300
+ #
301
+ # range = table.new_row_range.from("key-1", inclusive: false).to("key-5")
302
+ #
303
+ def new_row_range
304
+ Google::Cloud::Bigtable::RowRange.new
305
+ end
306
+
307
+ # Get row filter
308
+ #
309
+ # @return [Google::Cloud::Bigtable::RowRange]
310
+ #
311
+ # @example
312
+ # require "google/cloud/bigtable"
313
+ #
314
+ # bigtable = Google::Cloud::Bigtable.new
315
+ # table = bigtable.table("my-instance", "my-table")
316
+ #
317
+ # filter = table.filter.key("user-*")
318
+ #
319
+ def filter
320
+ Google::Cloud::Bigtable::RowFilter
321
+ end
322
+
323
+ private
324
+
325
+ # Build RowSet object from row keys and ranges
326
+ #
327
+ # @param row_keys [Array<String>]
328
+ # @param row_ranges [Google::Cloud::Bigtable::RowRange | Array<Google::Cloud::Bigtable::RowRange>]
329
+ # @return [Google::Bigtable::V2::RowSet]
330
+ #
331
+ def build_row_set row_keys, row_ranges
332
+ row_set = {}
333
+ row_set[:row_keys] = row_keys if row_keys
334
+
335
+ if row_ranges
336
+ row_ranges = [row_ranges] unless row_ranges.instance_of?(Array)
337
+ row_set[:row_ranges] = row_ranges.map(&:to_grpc)
338
+ end
339
+
340
+ Google::Bigtable::V2::RowSet.new(row_set)
341
+ end
342
+ end
343
+ end
344
+ end
345
+ end