google-cloud-bigtable 0.6.2 → 0.7.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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +36 -0
  3. data/CONTRIBUTING.md +1 -1
  4. data/lib/google-cloud-bigtable.rb +19 -21
  5. data/lib/google/cloud/bigtable.rb +11 -17
  6. data/lib/google/cloud/bigtable/app_profile.rb +148 -82
  7. data/lib/google/cloud/bigtable/app_profile/job.rb +5 -8
  8. data/lib/google/cloud/bigtable/app_profile/list.rb +11 -5
  9. data/lib/google/cloud/bigtable/chunk_processor.rb +23 -35
  10. data/lib/google/cloud/bigtable/cluster.rb +38 -11
  11. data/lib/google/cloud/bigtable/cluster/job.rb +3 -7
  12. data/lib/google/cloud/bigtable/cluster/list.rb +20 -18
  13. data/lib/google/cloud/bigtable/column_family.rb +22 -229
  14. data/lib/google/cloud/bigtable/column_family_map.rb +426 -0
  15. data/lib/google/cloud/bigtable/column_range.rb +9 -1
  16. data/lib/google/cloud/bigtable/convert.rb +12 -4
  17. data/lib/google/cloud/bigtable/errors.rb +4 -1
  18. data/lib/google/cloud/bigtable/gc_rule.rb +184 -65
  19. data/lib/google/cloud/bigtable/instance.rb +136 -126
  20. data/lib/google/cloud/bigtable/instance/cluster_map.rb +9 -7
  21. data/lib/google/cloud/bigtable/instance/job.rb +4 -3
  22. data/lib/google/cloud/bigtable/instance/list.rb +14 -9
  23. data/lib/google/cloud/bigtable/longrunning_job.rb +6 -0
  24. data/lib/google/cloud/bigtable/mutation_entry.rb +19 -23
  25. data/lib/google/cloud/bigtable/mutation_operations.rb +82 -29
  26. data/lib/google/cloud/bigtable/policy.rb +9 -5
  27. data/lib/google/cloud/bigtable/project.rb +62 -140
  28. data/lib/google/cloud/bigtable/read_modify_write_rule.rb +9 -4
  29. data/lib/google/cloud/bigtable/read_operations.rb +28 -41
  30. data/lib/google/cloud/bigtable/routing_policy.rb +171 -0
  31. data/lib/google/cloud/bigtable/row.rb +18 -7
  32. data/lib/google/cloud/bigtable/row_filter.rb +49 -20
  33. data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +71 -43
  34. data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +4 -1
  35. data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +74 -43
  36. data/lib/google/cloud/bigtable/row_filter/simple_filter.rb +22 -7
  37. data/lib/google/cloud/bigtable/row_range.rb +5 -0
  38. data/lib/google/cloud/bigtable/rows_mutator.rb +14 -17
  39. data/lib/google/cloud/bigtable/rows_reader.rb +18 -14
  40. data/lib/google/cloud/bigtable/sample_row_key.rb +5 -2
  41. data/lib/google/cloud/bigtable/service.rb +161 -242
  42. data/lib/google/cloud/bigtable/status.rb +76 -0
  43. data/lib/google/cloud/bigtable/table.rb +141 -236
  44. data/lib/google/cloud/bigtable/table/cluster_state.rb +7 -1
  45. data/lib/google/cloud/bigtable/table/list.rb +14 -7
  46. data/lib/google/cloud/bigtable/value_range.rb +5 -0
  47. data/lib/google/cloud/bigtable/version.rb +1 -1
  48. metadata +27 -25
  49. data/lib/google/cloud/bigtable/table/column_family_map.rb +0 -70
@@ -20,10 +20,12 @@ require "google/cloud/bigtable/instance/list"
20
20
  require "google/cloud/bigtable/instance/cluster_map"
21
21
  require "google/cloud/bigtable/app_profile"
22
22
  require "google/cloud/bigtable/policy"
23
+ require "google/cloud/bigtable/routing_policy"
23
24
 
24
25
  module Google
25
26
  module Cloud
26
27
  module Bigtable
28
+ ##
27
29
  # # Instance
28
30
  #
29
31
  # Represents a Bigtable instance. Instances are dedicated Bigtable
@@ -40,7 +42,7 @@ module Google
40
42
  #
41
43
  # job = bigtable.create_instance(
42
44
  # "my-instance",
43
- # "Instance for user data",
45
+ # display_name: "Instance for user data",
44
46
  # type: :DEVELOPMENT,
45
47
  # labels: { "env" => "dev"}
46
48
  # ) do |clusters|
@@ -72,86 +74,96 @@ module Google
72
74
  @service = service
73
75
  end
74
76
 
77
+ ##
75
78
  # The unique identifier for the project.
76
79
  #
77
80
  # @return [String]
78
-
81
+ #
79
82
  def project_id
80
83
  @grpc.name.split("/")[1]
81
84
  end
82
85
 
86
+ ##
83
87
  # The unique identifier for the instance.
84
88
  #
85
89
  # @return [String]
86
-
90
+ #
87
91
  def instance_id
88
92
  @grpc.name.split("/")[3]
89
93
  end
90
94
 
95
+ ##
91
96
  # The descriptive name for this instance as it appears in UIs. Must be
92
97
  # unique per project and between 4 and 30 characters long.
93
98
  #
94
99
  # @return [String]
95
-
100
+ #
96
101
  def display_name
97
102
  @grpc.display_name
98
103
  end
99
104
 
105
+ ##
100
106
  # Updates the descriptive name for this instance as it appears in UIs.
101
107
  # Can be changed at any time, but should be kept globally unique
102
108
  # to avoid confusion.
103
109
  #
104
110
  # @param value [String] The descriptive name for this instance.
105
-
111
+ #
106
112
  def display_name= value
107
113
  @grpc.display_name = value
108
114
  end
109
115
 
116
+ ##
110
117
  # The full path for the instance resource. Values are of the form
111
118
  # `projects/<project_id>/instances/<instance_id>`.
112
119
  #
113
120
  # @return [String]
114
-
121
+ #
115
122
  def path
116
123
  @grpc.name
117
124
  end
118
125
 
126
+ ##
119
127
  # The current instance state. Possible values are `:CREATING`,
120
128
  # `:READY`, `:STATE_NOT_KNOWN`.
121
129
  #
122
130
  # @return [Symbol]
123
-
131
+ #
124
132
  def state
125
133
  @grpc.state
126
134
  end
127
135
 
136
+ ##
128
137
  # The instance has been successfully created and can serve requests
129
138
  # to its tables.
130
139
  #
131
140
  # @return [Boolean]
132
-
141
+ #
133
142
  def ready?
134
143
  state == :READY
135
144
  end
136
145
 
146
+ ##
137
147
  # The instance is currently being created and may be destroyed if the
138
148
  # creation process encounters an error.
139
149
  #
140
150
  # @return [Boolean]
141
-
151
+ #
142
152
  def creating?
143
153
  state == :CREATING
144
154
  end
145
155
 
156
+ ##
146
157
  # Instance type. Possible values are `:DEVELOPMENT`, `:PRODUCTION`,
147
158
  # `:TYPE_UNSPECIFIED`
148
159
  #
149
160
  # @return [Symbol]
150
-
161
+ #
151
162
  def type
152
163
  @grpc.type
153
164
  end
154
165
 
166
+ ##
155
167
  # The instance is meant for development and testing purposes only; it has
156
168
  # no performance or uptime guarantees and is not covered by SLA.
157
169
  # After a development instance is created, it can be upgraded by
@@ -161,20 +173,22 @@ module Google
161
173
  # not be set.
162
174
  #
163
175
  # @return [Boolean]
164
-
176
+ #
165
177
  def development?
166
178
  type == :DEVELOPMENT
167
179
  end
168
180
 
181
+ ##
169
182
  # An instance meant for production use. `serve_nodes` must be set
170
183
  # on the cluster.
171
184
  #
172
185
  # @return [Boolean]
173
-
186
+ #
174
187
  def production?
175
188
  type == :PRODUCTION
176
189
  end
177
190
 
191
+ ##
178
192
  # Set instance type.
179
193
  #
180
194
  # Valid values are `:DEVELOPMENT`, `:PRODUCTION`.
@@ -184,11 +198,12 @@ module Google
184
198
  # development instance.
185
199
  #
186
200
  # @param instance_type [Symbol]
187
-
201
+ #
188
202
  def type= instance_type
189
203
  @grpc.type = instance_type
190
204
  end
191
205
 
206
+ ##
192
207
  # Get instance labels.
193
208
  #
194
209
  # Cloud Labels are a flexible and lightweight mechanism for organizing
@@ -205,15 +220,16 @@ module Google
205
220
  # * No more than 64 labels can be associated with a given resource.
206
221
  #
207
222
  # @return [Hash{String=>String}] The label keys and values in a hash.
208
-
223
+ #
209
224
  def labels
210
225
  @grpc.labels
211
226
  end
212
227
 
228
+ ##
213
229
  # Set the Cloud Labels.
214
230
  #
215
231
  # @param labels [Hash{String=>String}] The Cloud Labels.
216
-
232
+ #
217
233
  def labels= labels
218
234
  labels ||= {}
219
235
  @grpc.labels = Google::Protobuf::Map.new(
@@ -222,6 +238,7 @@ module Google
222
238
  )
223
239
  end
224
240
 
241
+ ##
225
242
  # Update instance.
226
243
  #
227
244
  # Updatable attributes are :
@@ -256,26 +273,26 @@ module Google
256
273
  # puts instance.name
257
274
  # puts instance.labels
258
275
  # end
259
-
276
+ #
260
277
  def save
261
278
  ensure_service!
262
- update_mask = Google::Protobuf::FieldMask.new(
263
- paths: %w[labels display_name type]
264
- )
265
- grpc = service.partial_update_instance(@grpc, update_mask)
266
- Instance::Job.from_grpc(grpc, service)
279
+ update_mask = Google::Protobuf::FieldMask.new paths: ["labels", "display_name", "type"]
280
+ grpc = service.partial_update_instance @grpc, update_mask
281
+ Instance::Job.from_grpc grpc, service
267
282
  end
268
283
  alias update save
269
284
 
285
+ ##
270
286
  # Reload instance information.
271
287
  #
272
288
  # @return [Google::Cloud::Bigtable::Instance]
273
-
289
+ #
274
290
  def reload!
275
- @grpc = service.get_instance(instance_id)
291
+ @grpc = service.get_instance instance_id
276
292
  self
277
293
  end
278
294
 
295
+ ##
279
296
  # Permanently deletes the instance from a project.
280
297
  #
281
298
  # @return [Boolean] Returns `true` if the instance was deleted.
@@ -287,13 +304,14 @@ module Google
287
304
  #
288
305
  # instance = bigtable.instance("my-instance")
289
306
  # instance.delete
290
-
307
+ #
291
308
  def delete
292
309
  ensure_service!
293
- service.delete_instance(instance_id)
310
+ service.delete_instance instance_id
294
311
  true
295
312
  end
296
313
 
314
+ ##
297
315
  # Lists information about clusters in an instance.
298
316
  #
299
317
  # See to delete {Google::Cloud::Bigtable::Cluster#delete} and update
@@ -315,13 +333,14 @@ module Google
315
333
  # instance.clusters.all do |cluster|
316
334
  # puts cluster.cluster_id
317
335
  # end
318
-
336
+ #
319
337
  def clusters token: nil
320
338
  ensure_service!
321
- grpc = service.list_clusters(instance_id, token: token)
322
- Cluster::List.from_grpc(grpc, service, instance_id: instance_id)
339
+ grpc = service.list_clusters instance_id, token: token
340
+ Cluster::List.from_grpc grpc, service, instance_id: instance_id
323
341
  end
324
342
 
343
+ ##
325
344
  # Gets cluster information.
326
345
  #
327
346
  # See to delete {Google::Cloud::Bigtable::Cluster#delete} and update
@@ -339,15 +358,16 @@ module Google
339
358
  #
340
359
  # cluster = instance.cluster("my-instance-cluster")
341
360
  # puts cluster.cluster_id
342
-
361
+ #
343
362
  def cluster cluster_id
344
363
  ensure_service!
345
- grpc = service.get_cluster(instance_id, cluster_id)
346
- Cluster.from_grpc(grpc, service)
364
+ grpc = service.get_cluster instance_id, cluster_id
365
+ Cluster.from_grpc grpc, service
347
366
  rescue Google::Cloud::NotFoundError
348
367
  nil
349
368
  end
350
369
 
370
+ ##
351
371
  # Creates a cluster within an instance.
352
372
  #
353
373
  # @param cluster_id [String]
@@ -391,20 +411,21 @@ module Google
391
411
  # else
392
412
  # cluster = job.cluster
393
413
  # end
394
-
414
+ #
395
415
  def create_cluster cluster_id, location, nodes: nil, storage_type: nil
396
416
  ensure_service!
397
417
  attrs = {
398
- serve_nodes: nodes,
418
+ serve_nodes: nodes,
399
419
  default_storage_type: storage_type,
400
- location: location
420
+ location: location
401
421
  }.delete_if { |_, v| v.nil? }
402
422
 
403
- cluster = Google::Bigtable::Admin::V2::Cluster.new(attrs)
404
- grpc = service.create_cluster(instance_id, cluster_id, cluster)
405
- Cluster::Job.from_grpc(grpc, service)
423
+ cluster = Google::Bigtable::Admin::V2::Cluster.new attrs
424
+ grpc = service.create_cluster instance_id, cluster_id, cluster
425
+ Cluster::Job.from_grpc grpc, service
406
426
  end
407
427
 
428
+ ##
408
429
  # List all tables.
409
430
  #
410
431
  # See to delete table {Google::Cloud::Bigtable::Table#delete} and update
@@ -425,18 +446,13 @@ module Google
425
446
  # puts table.name
426
447
  # end
427
448
  #
428
- # # Full view
429
- # instance.tables(view: :FULL).all do |table|
430
- # puts table.name
431
- # puts table.column_families
432
- # end
433
- #
434
449
  def tables
435
450
  ensure_service!
436
- grpc = service.list_tables(instance_id)
437
- Table::List.from_grpc(grpc, service)
451
+ grpc = service.list_tables instance_id
452
+ Table::List.from_grpc grpc, service
438
453
  end
439
454
 
455
+ ##
440
456
  # Get metadata information of table.
441
457
  #
442
458
  # @param view [Symbol]
@@ -495,13 +511,10 @@ module Google
495
511
  ensure_service!
496
512
 
497
513
  table = if perform_lookup
498
- grpc = service.get_table(instance_id, table_id, view: view)
499
- Table.from_grpc(grpc, service, view: view)
514
+ grpc = service.get_table instance_id, table_id, view: view
515
+ Table.from_grpc grpc, service, view: view
500
516
  else
501
- Table.from_path(
502
- service.table_path(instance_id, table_id),
503
- service
504
- )
517
+ Table.from_path service.table_path(instance_id, table_id), service
505
518
  end
506
519
 
507
520
  table.app_profile_id = app_profile_id
@@ -510,7 +523,8 @@ module Google
510
523
  nil
511
524
  end
512
525
 
513
- # Create table
526
+ ##
527
+ # Creates a new table.
514
528
  #
515
529
  # The table can be created with a full set of initial column families,
516
530
  # specified in the request.
@@ -518,9 +532,9 @@ module Google
518
532
  # @param name [String]
519
533
  # The name by which the new table should be referred to within the parent
520
534
  # instance, e.g., `foobar`
521
- # @param column_families [Hash{String => Google::Cloud::Bigtable::ColumnFamily}]
522
- # (See {Google::Cloud::Bigtable::Table::ColumnFamilyMap})
523
- # If passed as an empty, use a code block to add column families.
535
+ # @param column_families [Google::Cloud::Bigtable::ColumnFamilyMap]
536
+ # An object containing the column families for the table, mapped by
537
+ # column family name.
524
538
  # @param granularity [Symbol]
525
539
  # The granularity at which timestamps are stored in this table.
526
540
  # Timestamps not matching the granularity will be rejected.
@@ -544,15 +558,14 @@ module Google
544
558
  # * Tablet 5 : `[other, ) => {"other", "zz"}`
545
559
  # A hash in the form of `Google::Bigtable::Admin::V2::CreateTableRequest::Split`
546
560
  # can also be provided.
547
- # @yield [column_families] A block for adding column_families.
548
- # @yieldparam [Hash{String => Google::Cloud::Bigtable::ColumnFamily}]
549
- # Cluster map of cluster name and cluster object.
550
- # (See {Google::Cloud::Bigtable::Instance::ClusterMap})
551
- # See rules for column families at {Google::Cloud::Bigtable::GcRule})
561
+ # @yield [column_families] A block for adding column families.
562
+ # @yieldparam [Google::Cloud::Bigtable::ColumnFamilyMap] column_families
563
+ # A mutable object containing the column families for the table,
564
+ # mapped by column family name.
552
565
  #
553
566
  # @return [Google::Cloud::Bigtable::Table]
554
567
  #
555
- # @example Create table without column families.
568
+ # @example Create a table without column families.
556
569
  # require "google/cloud/bigtable"
557
570
  #
558
571
  # bigtable = Google::Cloud::Bigtable.new
@@ -562,63 +575,61 @@ module Google
562
575
  # table = instance.create_table("my-table")
563
576
  # puts table.name
564
577
  #
565
- # @example Create table with column families and initial splits.
578
+ # @example Create a table with initial splits and column families.
566
579
  # require "google/cloud/bigtable"
567
580
  #
568
581
  # bigtable = Google::Cloud::Bigtable.new
569
582
  #
570
583
  # instance = bigtable.instance("my-instance")
571
584
  #
572
- # table = instance.create_table(my-table") do |column_families|
573
- # column_families.add('cf1', Google::Cloud::Bigtable::GcRule.max_versions(3))
574
- # column_families.add('cf2', Google::Cloud::Bigtable::GcRule.max_age(100))
585
+ # initial_splits = ["user-00001", "user-100000", "others"]
586
+ # table = instance.create_table("my-table", initial_splits: initial_splits) do |cfm|
587
+ # cfm.add('cf1', gc_rule: Google::Cloud::Bigtable::GcRule.max_versions(5))
588
+ # cfm.add('cf2', gc_rule: Google::Cloud::Bigtable::GcRule.max_age(600))
575
589
  #
576
- # gc_rule = Google::Cloud::Bigtable::GcRule.new
577
- # gc_rule.union = [
578
- # Google::Cloud::Bigtable::GcRule.max_versions(3),
590
+ # gc_rule = Google::Cloud::Bigtable::GcRule.union(
579
591
  # Google::Cloud::Bigtable::GcRule.max_age(1800),
580
- # ]
581
- # column_families.add('cf3', gc_rule)
592
+ # Google::Cloud::Bigtable::GcRule.max_versions(3)
593
+ # )
594
+ # cfm.add('cf3', gc_rule: gc_rule)
582
595
  # end
583
596
  #
584
597
  # puts table
585
-
586
- def create_table \
587
- name,
588
- column_families: nil,
589
- granularity: nil,
590
- initial_splits: nil,
591
- &block
598
+ #
599
+ def create_table name, column_families: nil, granularity: nil, initial_splits: nil, &block
592
600
  ensure_service!
593
601
  Table.create(
594
602
  service,
595
603
  instance_id,
596
604
  name,
597
605
  column_families: column_families,
598
- granularity: granularity,
599
- initial_splits: initial_splits,
606
+ granularity: granularity,
607
+ initial_splits: initial_splits,
600
608
  &block
601
609
  )
602
610
  end
603
611
 
612
+ ##
604
613
  # Create app profile for an instance with a routing policy.
605
614
  # Only one routing policy can applied to app profile. The policy can be
606
615
  # multi-cluster routing or single cluster routing.
607
616
  #
608
617
  # @param name [String] Unique Id of the app profile
609
- # @param routing_policy [Google::Bigtable::Admin::V2::AppProfile::SingleClusterRouting | Google::Bigtable::Admin::V2::AppProfile::MultiClusterRoutingUseAny]
610
- # The routing policy for all read/write requests that use this app profile.
611
- # A value must be explicitly set.
618
+ # @param routing_policy [Google::Cloud::Bigtable::RoutingPolicy]
619
+ # The routing policy for all read/write requests that use this app
620
+ # profile. A value must be explicitly set.
612
621
  #
613
622
  # Routing Policies:
614
- # * `multi_cluster_routing` - Read/write requests may be routed to any
615
- # cluster in the instance and will fail over to another cluster in the event
616
- # of transient errors or delays. Choosing this option sacrifices
617
- # read-your-writes consistency to improve availability.
618
- # * `single_cluster_routing` - Unconditionally routes all read/write requests
619
- # to a specific cluster. This option preserves read-your-writes consistency
620
- # but does not improve availability.
621
- # Value contains `cluster_id` and optional field `allow_transactional_writes`.
623
+ # * {Google::Cloud::Bigtable::MultiClusterRoutingUseAny} - Read/write
624
+ # requests may be routed to any cluster in the instance and will
625
+ # fail over to another cluster in the event of transient errors or
626
+ # delays. Choosing this option sacrifices read-your-writes
627
+ # consistency to improve availability.
628
+ # * {Google::Cloud::Bigtable::SingleClusterRouting} - Unconditionally
629
+ # routes all read/write requests to a specific cluster. This option
630
+ # preserves read-your-writes consistency but does not improve
631
+ # availability. Value contains `cluster_id` and optional field
632
+ # `allow_transactional_writes`.
622
633
  # @param description [String] Description of the use case for this app profile
623
634
  # @param etag [String]
624
635
  # Strongly validated etag for optimistic concurrency control. Preserve the
@@ -641,13 +652,13 @@ module Google
641
652
  # instance = bigtable.instance("my-instance")
642
653
  #
643
654
  # routing_policy = Google::Cloud::Bigtable::AppProfile.single_cluster_routing(
644
- # "my-instance-cluster-1"
655
+ # "my-instance-cluster-1",
645
656
  # allow_transactional_writes: true
646
657
  # )
647
658
  #
648
659
  # app_profile = instance.create_app_profile(
649
660
  # "my-app-profile",
650
- # routing_policy: routing_policy,
661
+ # routing_policy,
651
662
  # description: "App profile for user data instance"
652
663
  # )
653
664
  # puts app_profile.name
@@ -684,27 +695,21 @@ module Google
684
695
  # ignore_warnings: true
685
696
  # )
686
697
  # puts app_profile.name
687
-
688
- def create_app_profile \
689
- name,
690
- routing_policy,
691
- description: nil,
692
- etag: nil,
693
- ignore_warnings: false
698
+ #
699
+ def create_app_profile name, routing_policy, description: nil, etag: nil, ignore_warnings: false
694
700
  ensure_service!
695
-
696
- if routing_policy.is_a?(Google::Bigtable::Admin::V2::AppProfile:: \
697
- MultiClusterRoutingUseAny)
698
- multi_cluster_routing = routing_policy
701
+ routing_policy_grpc = routing_policy.to_grpc
702
+ if routing_policy_grpc.is_a? Google::Bigtable::Admin::V2::AppProfile::MultiClusterRoutingUseAny
703
+ multi_cluster_routing = routing_policy_grpc
699
704
  else
700
- single_cluster_routing = routing_policy
705
+ single_cluster_routing = routing_policy_grpc
701
706
  end
702
707
 
703
708
  app_profile_attrs = {
704
709
  multi_cluster_routing_use_any: multi_cluster_routing,
705
- single_cluster_routing: single_cluster_routing,
706
- description: description,
707
- etag: etag
710
+ single_cluster_routing: single_cluster_routing,
711
+ description: description,
712
+ etag: etag
708
713
  }.delete_if { |_, v| v.nil? }
709
714
 
710
715
  grpc = service.create_app_profile(
@@ -713,9 +718,10 @@ module Google
713
718
  Google::Bigtable::Admin::V2::AppProfile.new(app_profile_attrs),
714
719
  ignore_warnings: ignore_warnings
715
720
  )
716
- AppProfile.from_grpc(grpc, service)
721
+ AppProfile.from_grpc grpc, service
717
722
  end
718
723
 
724
+ ##
719
725
  # Get app profile.
720
726
  #
721
727
  # See to delete app_profile {Google::Cloud::Bigtable::AppProfile#delete} and update
@@ -736,15 +742,16 @@ module Google
736
742
  # if app_profile
737
743
  # puts app_profile.name
738
744
  # end
739
-
745
+ #
740
746
  def app_profile app_profile_id
741
747
  ensure_service!
742
- grpc = service.get_app_profile(instance_id, app_profile_id)
743
- AppProfile.from_grpc(grpc, service)
748
+ grpc = service.get_app_profile instance_id, app_profile_id
749
+ AppProfile.from_grpc grpc, service
744
750
  rescue Google::Cloud::NotFoundError
745
751
  nil
746
752
  end
747
753
 
754
+ ##
748
755
  # List all app profiles
749
756
  #
750
757
  # See to delete app_profile {Google::Cloud::Bigtable::AppProfile#delete} and update
@@ -763,13 +770,14 @@ module Google
763
770
  # instance.app_profiles.all do |app_profile|
764
771
  # puts app_profile.name
765
772
  # end
766
-
773
+ #
767
774
  def app_profiles
768
775
  ensure_service!
769
- grpc = service.list_app_profiles(instance_id)
770
- AppProfile::List.from_grpc(grpc, service)
776
+ grpc = service.list_app_profiles instance_id
777
+ AppProfile::List.from_grpc grpc, service
771
778
  end
772
779
 
780
+ ##
773
781
  # Gets the [Cloud IAM](https://cloud.google.com/iam/) access control
774
782
  # policy for this instance.
775
783
  #
@@ -793,7 +801,7 @@ module Google
793
801
  # policy = instance.policy
794
802
  #
795
803
  # @example Update the policy by passing a block:
796
- # require "google/cloud/spanner"
804
+ # require "google/cloud/bigtable"
797
805
  #
798
806
  # bigtable = Google::Cloud::Bigtable.new
799
807
  # instance = bigtable.instance("my-instance")
@@ -801,16 +809,17 @@ module Google
801
809
  # instance.policy do |p|
802
810
  # p.add("roles/owner", "user:owner@example.com")
803
811
  # end # 2 API calls
804
-
812
+ #
805
813
  def policy
806
814
  ensure_service!
807
- grpc = service.get_instance_policy(instance_id)
808
- policy = Policy.from_grpc(grpc)
815
+ grpc = service.get_instance_policy instance_id
816
+ policy = Policy.from_grpc grpc
809
817
  return policy unless block_given?
810
818
  yield policy
811
819
  update_policy policy
812
820
  end
813
821
 
822
+ ##
814
823
  # Updates the [Cloud IAM](https://cloud.google.com/iam/) access control
815
824
  # policy for this instance. The policy should be read from {#policy}.
816
825
  # See {Google::Cloud::Bigtable::Policy} for an explanation of the policy
@@ -836,14 +845,15 @@ module Google
836
845
  # updated_policy = instance.update_policy(policy)
837
846
  #
838
847
  # puts update_policy.roles
839
-
848
+ #
840
849
  def update_policy new_policy
841
850
  ensure_service!
842
- grpc = service.set_instance_policy(instance_id, new_policy.to_grpc)
843
- Policy.from_grpc(grpc)
851
+ grpc = service.set_instance_policy instance_id, new_policy.to_grpc
852
+ Policy.from_grpc grpc
844
853
  end
845
854
  alias policy= update_policy
846
855
 
856
+ ##
847
857
  # Tests the specified permissions against the [Cloud
848
858
  # IAM](https://cloud.google.com/iam/) access control policy.
849
859
  #
@@ -873,13 +883,13 @@ module Google
873
883
  #
874
884
  # instance = bigtable.instance("my-instance")
875
885
  #
876
- # permissions = bigtable.test_permissions(
886
+ # permissions = instance.test_iam_permissions(
877
887
  # "bigtable.instances.get",
878
888
  # "bigtable.instances.update"
879
889
  # )
880
890
  # permissions.include? "bigtable.instances.get" #=> true
881
891
  # permissions.include? "bigtable.instances.update" #=> false
882
-
892
+ #
883
893
  def test_iam_permissions *permissions
884
894
  ensure_service!
885
895
  grpc = service.test_instance_permissions(
@@ -897,9 +907,9 @@ module Google
897
907
  # @param grpc [Google::Bigtable::Admin::V2::Instance]
898
908
  # @param service [Google::Cloud::Bigtable::Service]
899
909
  # @return [Google::Cloud::Bigtable::Instance]
900
-
910
+ #
901
911
  def self.from_grpc grpc, service
902
- new(grpc, service)
912
+ new grpc, service
903
913
  end
904
914
 
905
915
  protected
@@ -908,7 +918,7 @@ module Google
908
918
  #
909
919
  # Raise an error unless an active connection to the service is
910
920
  # available.
911
-
921
+ #
912
922
  def ensure_service!
913
923
  raise "Must have active connection to service" unless service
914
924
  end