google-cloud-bigtable 2.4.1 → 2.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/AUTHENTICATION.md +2 -1
- data/CHANGELOG.md +32 -0
- data/CONTRIBUTING.md +2 -3
- data/OVERVIEW.md +1 -1
- data/lib/google/cloud/bigtable/app_profile.rb +20 -21
- data/lib/google/cloud/bigtable/app_profile/job.rb +4 -4
- data/lib/google/cloud/bigtable/app_profile/list.rb +5 -7
- data/lib/google/cloud/bigtable/backup.rb +83 -32
- data/lib/google/cloud/bigtable/backup/job.rb +8 -8
- data/lib/google/cloud/bigtable/backup/list.rb +9 -11
- data/lib/google/cloud/bigtable/cluster.rb +37 -17
- data/lib/google/cloud/bigtable/cluster/job.rb +2 -2
- data/lib/google/cloud/bigtable/column_family.rb +2 -2
- data/lib/google/cloud/bigtable/column_family_map.rb +14 -14
- data/lib/google/cloud/bigtable/column_range.rb +7 -7
- data/lib/google/cloud/bigtable/encryption_info.rb +118 -0
- data/lib/google/cloud/bigtable/gc_rule.rb +20 -20
- data/lib/google/cloud/bigtable/instance.rb +40 -40
- data/lib/google/cloud/bigtable/instance/cluster_map.rb +61 -21
- data/lib/google/cloud/bigtable/instance/job.rb +4 -4
- data/lib/google/cloud/bigtable/mutation_entry.rb +21 -21
- data/lib/google/cloud/bigtable/mutation_operations.rb +34 -34
- data/lib/google/cloud/bigtable/policy.rb +4 -4
- data/lib/google/cloud/bigtable/project.rb +15 -15
- data/lib/google/cloud/bigtable/read_operations.rb +31 -31
- data/lib/google/cloud/bigtable/routing_policy.rb +6 -6
- data/lib/google/cloud/bigtable/row_filter.rb +28 -28
- data/lib/google/cloud/bigtable/row_filter/chain_filter.rb +30 -29
- data/lib/google/cloud/bigtable/row_filter/condition_filter.rb +6 -6
- data/lib/google/cloud/bigtable/row_filter/interleave_filter.rb +27 -26
- data/lib/google/cloud/bigtable/row_range.rb +18 -18
- data/lib/google/cloud/bigtable/sample_row_key.rb +1 -1
- data/lib/google/cloud/bigtable/service.rb +6 -3
- data/lib/google/cloud/bigtable/status.rb +2 -2
- data/lib/google/cloud/bigtable/table.rb +66 -43
- data/lib/google/cloud/bigtable/table/cluster_state.rb +43 -9
- data/lib/google/cloud/bigtable/table/list.rb +2 -2
- data/lib/google/cloud/bigtable/table/restore_job.rb +12 -12
- data/lib/google/cloud/bigtable/value_range.rb +18 -18
- data/lib/google/cloud/bigtable/version.rb +1 -1
- metadata +4 -3
@@ -49,15 +49,15 @@ module Google
|
|
49
49
|
#
|
50
50
|
# bigtable = Google::Cloud::Bigtable.new
|
51
51
|
#
|
52
|
-
# table = bigtable.create_table
|
53
|
-
# cfm.add
|
54
|
-
# cfm.add
|
52
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
53
|
+
# cfm.add "cf1", gc_rule: Google::Cloud::Bigtable::GcRule.max_versions(5)
|
54
|
+
# cfm.add "cf2", gc_rule: Google::Cloud::Bigtable::GcRule.max_age(600)
|
55
55
|
#
|
56
56
|
# gc_rule = Google::Cloud::Bigtable::GcRule.union(
|
57
57
|
# Google::Cloud::Bigtable::GcRule.max_age(1800),
|
58
58
|
# Google::Cloud::Bigtable::GcRule.max_versions(3)
|
59
59
|
# )
|
60
|
-
# cfm.add
|
60
|
+
# cfm.add "cf3", gc_rule: gc_rule
|
61
61
|
# end
|
62
62
|
#
|
63
63
|
# puts table.column_families["cf1"].gc_rule.max_versions
|
@@ -95,8 +95,8 @@ module Google
|
|
95
95
|
#
|
96
96
|
# bigtable = Google::Cloud::Bigtable.new
|
97
97
|
#
|
98
|
-
# table = bigtable.create_table
|
99
|
-
# cfm.add
|
98
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
99
|
+
# cfm.add "cf1", gc_rule: Google::Cloud::Bigtable::GcRule.max_versions(5)
|
100
100
|
# end
|
101
101
|
#
|
102
102
|
# puts table.column_families["cf1"].gc_rule.max_versions
|
@@ -131,8 +131,8 @@ module Google
|
|
131
131
|
#
|
132
132
|
# bigtable = Google::Cloud::Bigtable.new
|
133
133
|
#
|
134
|
-
# table = bigtable.create_table
|
135
|
-
# cfm.add
|
134
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
135
|
+
# cfm.add "cf1", gc_rule: Google::Cloud::Bigtable::GcRule.max_age(600)
|
136
136
|
# end
|
137
137
|
#
|
138
138
|
# puts table.column_families["cf1"].gc_rule.max_age
|
@@ -162,12 +162,12 @@ module Google
|
|
162
162
|
#
|
163
163
|
# bigtable = Google::Cloud::Bigtable.new
|
164
164
|
#
|
165
|
-
# table = bigtable.create_table
|
165
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
166
166
|
# gc_rule = Google::Cloud::Bigtable::GcRule.intersection(
|
167
167
|
# Google::Cloud::Bigtable::GcRule.max_age(1800),
|
168
168
|
# Google::Cloud::Bigtable::GcRule.max_versions(3)
|
169
169
|
# )
|
170
|
-
# cfm.add
|
170
|
+
# cfm.add "cf1", gc_rule: gc_rule
|
171
171
|
# end
|
172
172
|
#
|
173
173
|
# puts table.column_families["cf1"].gc_rule.intersection
|
@@ -203,12 +203,12 @@ module Google
|
|
203
203
|
#
|
204
204
|
# bigtable = Google::Cloud::Bigtable.new
|
205
205
|
#
|
206
|
-
# table = bigtable.create_table
|
206
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
207
207
|
# gc_rule = Google::Cloud::Bigtable::GcRule.union(
|
208
208
|
# Google::Cloud::Bigtable::GcRule.max_age(1800),
|
209
209
|
# Google::Cloud::Bigtable::GcRule.max_versions(3)
|
210
210
|
# )
|
211
|
-
# cfm.add
|
211
|
+
# cfm.add "cf1", gc_rule: gc_rule
|
212
212
|
# end
|
213
213
|
#
|
214
214
|
# puts table.column_families["cf1"].gc_rule.union
|
@@ -231,8 +231,8 @@ module Google
|
|
231
231
|
#
|
232
232
|
# bigtable = Google::Cloud::Bigtable.new
|
233
233
|
#
|
234
|
-
# table = bigtable.create_table
|
235
|
-
# cfm.add
|
234
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
235
|
+
# cfm.add "cf1", gc_rule: Google::Cloud::Bigtable::GcRule.max_versions(5)
|
236
236
|
# end
|
237
237
|
#
|
238
238
|
def self.max_versions versions
|
@@ -252,8 +252,8 @@ module Google
|
|
252
252
|
#
|
253
253
|
# bigtable = Google::Cloud::Bigtable.new
|
254
254
|
#
|
255
|
-
# table = bigtable.create_table
|
256
|
-
# cfm.add
|
255
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
256
|
+
# cfm.add "cf1", gc_rule: Google::Cloud::Bigtable::GcRule.max_age(600)
|
257
257
|
# end
|
258
258
|
#
|
259
259
|
def self.max_age age
|
@@ -274,12 +274,12 @@ module Google
|
|
274
274
|
#
|
275
275
|
# bigtable = Google::Cloud::Bigtable.new
|
276
276
|
#
|
277
|
-
# table = bigtable.create_table
|
277
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
278
278
|
# gc_rule = Google::Cloud::Bigtable::GcRule.union(
|
279
279
|
# Google::Cloud::Bigtable::GcRule.max_age(1800),
|
280
280
|
# Google::Cloud::Bigtable::GcRule.max_versions(3)
|
281
281
|
# )
|
282
|
-
# cfm.add
|
282
|
+
# cfm.add "cf1", gc_rule: gc_rule
|
283
283
|
# end
|
284
284
|
#
|
285
285
|
def self.union *rules
|
@@ -300,12 +300,12 @@ module Google
|
|
300
300
|
#
|
301
301
|
# bigtable = Google::Cloud::Bigtable.new
|
302
302
|
#
|
303
|
-
# table = bigtable.create_table
|
303
|
+
# table = bigtable.create_table "my-instance", "my-table" do |cfm|
|
304
304
|
# gc_rule = Google::Cloud::Bigtable::GcRule.intersection(
|
305
305
|
# Google::Cloud::Bigtable::GcRule.max_age(1800),
|
306
306
|
# Google::Cloud::Bigtable::GcRule.max_versions(3)
|
307
307
|
# )
|
308
|
-
# cfm.add
|
308
|
+
# cfm.add "cf1", gc_rule: gc_rule
|
309
309
|
# end
|
310
310
|
#
|
311
311
|
def self.intersection *rules
|
@@ -44,9 +44,9 @@ module Google
|
|
44
44
|
# "my-instance",
|
45
45
|
# display_name: "Instance for user data",
|
46
46
|
# type: :DEVELOPMENT,
|
47
|
-
# labels: { "env" => "dev"}
|
47
|
+
# labels: { "env" => "dev" }
|
48
48
|
# ) do |clusters|
|
49
|
-
# clusters.add
|
49
|
+
# clusters.add "test-cluster", "us-east1-b" # nodes not allowed
|
50
50
|
# end
|
51
51
|
#
|
52
52
|
# job.done? #=> false
|
@@ -203,7 +203,7 @@ module Google
|
|
203
203
|
#
|
204
204
|
# bigtable = Google::Cloud::Bigtable.new
|
205
205
|
#
|
206
|
-
# instance = bigtable.instance
|
206
|
+
# instance = bigtable.instance "my-instance"
|
207
207
|
#
|
208
208
|
# instance.development? # true
|
209
209
|
# instance.type = :PRODUCTION
|
@@ -267,7 +267,7 @@ module Google
|
|
267
267
|
#
|
268
268
|
# bigtable = Google::Cloud::Bigtable.new
|
269
269
|
#
|
270
|
-
# instance = bigtable.instance
|
270
|
+
# instance = bigtable.instance "my-instance"
|
271
271
|
# instance.display_name = "My app dev instance" # Set display name
|
272
272
|
# instance.labels = { env: "dev", data: "users" }
|
273
273
|
# job = instance.save
|
@@ -314,7 +314,7 @@ module Google
|
|
314
314
|
#
|
315
315
|
# bigtable = Google::Cloud::Bigtable.new
|
316
316
|
#
|
317
|
-
# instance = bigtable.instance
|
317
|
+
# instance = bigtable.instance "my-instance"
|
318
318
|
# instance.delete
|
319
319
|
#
|
320
320
|
def delete
|
@@ -340,7 +340,7 @@ module Google
|
|
340
340
|
#
|
341
341
|
# bigtable = Google::Cloud::Bigtable.new
|
342
342
|
#
|
343
|
-
# instance = bigtable.instance
|
343
|
+
# instance = bigtable.instance "my-instance"
|
344
344
|
#
|
345
345
|
# instance.clusters.all do |cluster|
|
346
346
|
# puts cluster.cluster_id
|
@@ -366,9 +366,9 @@ module Google
|
|
366
366
|
#
|
367
367
|
# bigtable = Google::Cloud::Bigtable.new
|
368
368
|
#
|
369
|
-
# instance = bigtable.instance
|
369
|
+
# instance = bigtable.instance "my-instance"
|
370
370
|
#
|
371
|
-
# cluster = instance.cluster
|
371
|
+
# cluster = instance.cluster "my-cluster"
|
372
372
|
# puts cluster.cluster_id
|
373
373
|
#
|
374
374
|
def cluster cluster_id
|
@@ -403,7 +403,7 @@ module Google
|
|
403
403
|
#
|
404
404
|
# bigtable = Google::Cloud::Bigtable.new
|
405
405
|
#
|
406
|
-
# instance = bigtable.instance
|
406
|
+
# instance = bigtable.instance "my-instance"
|
407
407
|
# job = instance.create_cluster(
|
408
408
|
# "my-new-cluster",
|
409
409
|
# "us-east-1b",
|
@@ -450,7 +450,7 @@ module Google
|
|
450
450
|
#
|
451
451
|
# bigtable = Google::Cloud::Bigtable.new
|
452
452
|
#
|
453
|
-
# instance = bigtable.instance
|
453
|
+
# instance = bigtable.instance "my-instance"
|
454
454
|
#
|
455
455
|
# # Default name-only view
|
456
456
|
# instance.tables.all do |table|
|
@@ -490,14 +490,14 @@ module Google
|
|
490
490
|
#
|
491
491
|
# bigtable = Google::Cloud::Bigtable.new
|
492
492
|
#
|
493
|
-
# instance = bigtable.instance
|
493
|
+
# instance = bigtable.instance "my-instance"
|
494
494
|
#
|
495
|
-
# table = instance.table
|
495
|
+
# table = instance.table "my-table", perform_lookup: true
|
496
496
|
# puts table.name
|
497
497
|
# puts table.column_families
|
498
498
|
#
|
499
499
|
# # Name-only view
|
500
|
-
# table = instance.table
|
500
|
+
# table = instance.table "my-table", view: :NAME_ONLY, perform_lookup: true
|
501
501
|
# puts table.name
|
502
502
|
#
|
503
503
|
# @example Mutate rows.
|
@@ -505,17 +505,17 @@ module Google
|
|
505
505
|
#
|
506
506
|
# bigtable = Google::Cloud::Bigtable.new
|
507
507
|
#
|
508
|
-
# table = bigtable.table
|
508
|
+
# table = bigtable.table "my-instance", "my-table"
|
509
509
|
#
|
510
|
-
# entry = table.new_mutation_entry
|
510
|
+
# entry = table.new_mutation_entry "user-1"
|
511
511
|
# entry.set_cell(
|
512
512
|
# "cf1",
|
513
513
|
# "field1",
|
514
514
|
# "XYZ",
|
515
|
-
# timestamp: (Time.now.to_f *
|
516
|
-
# ).delete_cells
|
515
|
+
# timestamp: (Time.now.to_f * 1_000_000).round(-3) # microseconds
|
516
|
+
# ).delete_cells "cf2", "field02"
|
517
517
|
#
|
518
|
-
# table.mutate_row
|
518
|
+
# table.mutate_row entry
|
519
519
|
#
|
520
520
|
def table table_id, view: nil, perform_lookup: nil, app_profile_id: nil
|
521
521
|
ensure_service!
|
@@ -581,9 +581,9 @@ module Google
|
|
581
581
|
#
|
582
582
|
# bigtable = Google::Cloud::Bigtable.new
|
583
583
|
#
|
584
|
-
# instance = bigtable.instance
|
584
|
+
# instance = bigtable.instance "my-instance"
|
585
585
|
#
|
586
|
-
# table = instance.create_table
|
586
|
+
# table = instance.create_table "my-table"
|
587
587
|
# puts table.name
|
588
588
|
#
|
589
589
|
# @example Create a table with initial splits and column families.
|
@@ -591,18 +591,18 @@ module Google
|
|
591
591
|
#
|
592
592
|
# bigtable = Google::Cloud::Bigtable.new
|
593
593
|
#
|
594
|
-
# instance = bigtable.instance
|
594
|
+
# instance = bigtable.instance "my-instance"
|
595
595
|
#
|
596
596
|
# initial_splits = ["user-00001", "user-100000", "others"]
|
597
|
-
# table = instance.create_table
|
598
|
-
# cfm.add
|
599
|
-
# cfm.add
|
597
|
+
# table = instance.create_table "my-table", initial_splits: initial_splits do |cfm|
|
598
|
+
# cfm.add "cf1", gc_rule: Google::Cloud::Bigtable::GcRule.max_versions(5)
|
599
|
+
# cfm.add "cf2", gc_rule: Google::Cloud::Bigtable::GcRule.max_age(600)
|
600
600
|
#
|
601
601
|
# gc_rule = Google::Cloud::Bigtable::GcRule.union(
|
602
|
-
#
|
602
|
+
# Google::Cloud::Bigtable::GcRule.max_age(1800),
|
603
603
|
# Google::Cloud::Bigtable::GcRule.max_versions(3)
|
604
604
|
# )
|
605
|
-
# cfm.add
|
605
|
+
# cfm.add "cf3", gc_rule: gc_rule
|
606
606
|
# end
|
607
607
|
#
|
608
608
|
# puts table
|
@@ -660,10 +660,10 @@ module Google
|
|
660
660
|
#
|
661
661
|
# bigtable = Google::Cloud::Bigtable.new
|
662
662
|
#
|
663
|
-
# instance = bigtable.instance
|
663
|
+
# instance = bigtable.instance "my-instance"
|
664
664
|
#
|
665
665
|
# routing_policy = Google::Cloud::Bigtable::AppProfile.single_cluster_routing(
|
666
|
-
# "my-
|
666
|
+
# "my-cluster",
|
667
667
|
# allow_transactional_writes: true
|
668
668
|
# )
|
669
669
|
#
|
@@ -679,7 +679,7 @@ module Google
|
|
679
679
|
#
|
680
680
|
# bigtable = Google::Cloud::Bigtable.new
|
681
681
|
#
|
682
|
-
# instance = bigtable.instance
|
682
|
+
# instance = bigtable.instance "my-instance"
|
683
683
|
#
|
684
684
|
# routing_policy = Google::Cloud::Bigtable::AppProfile.multi_cluster_routing
|
685
685
|
#
|
@@ -695,7 +695,7 @@ module Google
|
|
695
695
|
#
|
696
696
|
# bigtable = Google::Cloud::Bigtable.new
|
697
697
|
#
|
698
|
-
# instance = bigtable.instance
|
698
|
+
# instance = bigtable.instance "my-instance"
|
699
699
|
#
|
700
700
|
# routing_policy = Google::Cloud::Bigtable::AppProfile.multi_cluster_routing
|
701
701
|
#
|
@@ -746,9 +746,9 @@ module Google
|
|
746
746
|
#
|
747
747
|
# bigtable = Google::Cloud::Bigtable.new
|
748
748
|
#
|
749
|
-
# instance = bigtable.instance
|
749
|
+
# instance = bigtable.instance "my-instance"
|
750
750
|
#
|
751
|
-
# app_profile = instance.app_profile
|
751
|
+
# app_profile = instance.app_profile "my-app-profile"
|
752
752
|
#
|
753
753
|
# if app_profile
|
754
754
|
# puts app_profile.name
|
@@ -776,7 +776,7 @@ module Google
|
|
776
776
|
#
|
777
777
|
# bigtable = Google::Cloud::Bigtable.new
|
778
778
|
#
|
779
|
-
# instance = bigtable.instance
|
779
|
+
# instance = bigtable.instance "my-instance"
|
780
780
|
#
|
781
781
|
# instance.app_profiles.all do |app_profile|
|
782
782
|
# puts app_profile.name
|
@@ -808,17 +808,17 @@ module Google
|
|
808
808
|
#
|
809
809
|
# bigtable = Google::Cloud::Bigtable.new
|
810
810
|
#
|
811
|
-
# instance = bigtable.instance
|
811
|
+
# instance = bigtable.instance "my-instance"
|
812
812
|
# policy = instance.policy
|
813
813
|
#
|
814
814
|
# @example Update the policy by passing a block.
|
815
815
|
# require "google/cloud/bigtable"
|
816
816
|
#
|
817
817
|
# bigtable = Google::Cloud::Bigtable.new
|
818
|
-
# instance = bigtable.instance
|
818
|
+
# instance = bigtable.instance "my-instance"
|
819
819
|
#
|
820
820
|
# instance.policy do |p|
|
821
|
-
# p.add
|
821
|
+
# p.add "roles/owner", "user:owner@example.com"
|
822
822
|
# end # 2 API calls
|
823
823
|
#
|
824
824
|
def policy
|
@@ -849,11 +849,11 @@ module Google
|
|
849
849
|
#
|
850
850
|
# bigtable = Google::Cloud::Bigtable.new
|
851
851
|
#
|
852
|
-
# instance = bigtable.instance
|
852
|
+
# instance = bigtable.instance "my-instance"
|
853
853
|
#
|
854
854
|
# policy = instance.policy
|
855
|
-
# policy.add
|
856
|
-
# updated_policy = instance.update_policy
|
855
|
+
# policy.add "roles/owner", "user:owner@example.com"
|
856
|
+
# updated_policy = instance.update_policy policy
|
857
857
|
#
|
858
858
|
# puts updated_policy.roles
|
859
859
|
#
|
@@ -892,7 +892,7 @@ module Google
|
|
892
892
|
#
|
893
893
|
# bigtable = Google::Cloud::Bigtable.new
|
894
894
|
#
|
895
|
-
# instance = bigtable.instance
|
895
|
+
# instance = bigtable.instance "my-instance"
|
896
896
|
#
|
897
897
|
# permissions = instance.test_iam_permissions(
|
898
898
|
# "bigtable.instances.get",
|
@@ -15,28 +15,31 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
|
18
|
+
require "google/cloud/bigtable/admin/v2"
|
19
|
+
|
18
20
|
module Google
|
19
21
|
module Cloud
|
20
22
|
module Bigtable
|
21
23
|
class Instance
|
22
24
|
##
|
23
|
-
# Instance::ClusterMap is a hash with cluster ID keys and cluster configuration values.
|
24
|
-
#
|
25
|
+
# Instance::ClusterMap is a hash with cluster ID keys and cluster configuration values. It is used to create a
|
26
|
+
# cluster.
|
25
27
|
#
|
26
28
|
# @example
|
29
|
+
# require "google/cloud/bigtable"
|
27
30
|
#
|
28
|
-
#
|
31
|
+
# bigtable = Google::Cloud::Bigtable.new
|
29
32
|
#
|
30
|
-
#
|
33
|
+
# job = bigtable.create_instance "my-instance" do |clusters|
|
34
|
+
# clusters.add "test-cluster", "us-east1-b", nodes: 3, storage_type: :SSD
|
35
|
+
# end
|
31
36
|
#
|
32
|
-
#
|
33
|
-
# clusters.add("cluster-2", "us-east1-b")
|
37
|
+
# job.wait_until_done!
|
34
38
|
#
|
35
39
|
class ClusterMap < DelegateClass(::Hash)
|
36
40
|
# @private
|
37
41
|
#
|
38
|
-
# Creates a new Instance::ClusterMap with an hash of Cluster name and
|
39
|
-
# cluster grpc instances.
|
42
|
+
# Creates a new Instance::ClusterMap with an hash of Cluster name and cluster grpc instances.
|
40
43
|
def initialize value = {}
|
41
44
|
super value
|
42
45
|
end
|
@@ -45,24 +48,61 @@ module Google
|
|
45
48
|
# Adds a cluster to the cluster map.
|
46
49
|
#
|
47
50
|
# @param name [String] The unique identifier for the cluster.
|
48
|
-
# @param location [String]
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
# @param
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
# * `:
|
57
|
-
#
|
51
|
+
# @param location [String] The location where this cluster's nodes and storage reside. For best performance,
|
52
|
+
# clients should be located as close as possible to this cluster. Currently only zones are supported.
|
53
|
+
# @param nodes [Integer] Number of nodes for the cluster. When creating an instance of type `:DEVELOPMENT`,
|
54
|
+
# `nodes` must not be set.
|
55
|
+
# @param storage_type [Symbol] The type of storage used by this cluster to serve its parent instance's tables,
|
56
|
+
# unless explicitly overridden. Valid values are:
|
57
|
+
#
|
58
|
+
# * `:SSD` - Flash (SSD) storage should be used.
|
59
|
+
# * `:HDD` - Magnetic drive (HDD) storage should be used.
|
60
|
+
#
|
61
|
+
# If not set then default will set to `:STORAGE_TYPE_UNSPECIFIED`.
|
62
|
+
# @param kms_key [String] The full name of a Cloud KMS encryption key for a CMEK-protected cluster, in the
|
63
|
+
# format `projects/{key_project_id}/locations/{location}/keyRings/{ring_name}/cryptoKeys/{key_name}`.
|
64
|
+
#
|
65
|
+
# The requirements for this key are:
|
66
|
+
#
|
67
|
+
# 1. The Cloud Bigtable service account associated with the project that contains this cluster must be
|
68
|
+
# granted the `cloudkms.cryptoKeyEncrypterDecrypter` role on the CMEK key.
|
69
|
+
# 2. Only regional keys can be used and the region of the CMEK key must match the region of the cluster.
|
70
|
+
# 3. All clusters within an instance must use the same CMEK key.
|
71
|
+
#
|
72
|
+
# @example
|
73
|
+
# require "google/cloud/bigtable"
|
74
|
+
#
|
75
|
+
# bigtable = Google::Cloud::Bigtable.new
|
76
|
+
#
|
77
|
+
# job = bigtable.create_instance "my-instance" do |clusters|
|
78
|
+
# clusters.add "test-cluster", "us-east1-b", nodes: 3, storage_type: :SSD
|
79
|
+
# end
|
80
|
+
#
|
81
|
+
# job.wait_until_done!
|
82
|
+
#
|
83
|
+
# @example With a Cloud KMS encryption key name for a CMEK-protected cluster:
|
84
|
+
# require "google/cloud/bigtable"
|
85
|
+
#
|
86
|
+
# bigtable = Google::Cloud::Bigtable.new
|
87
|
+
#
|
88
|
+
# kms_key_name = "projects/a/locations/b/keyRings/c/cryptoKeys/d"
|
89
|
+
# job = bigtable.create_instance "my-instance" do |clusters|
|
90
|
+
# clusters.add "test-cluster", "us-east1-b", kms_key: kms_key_name
|
91
|
+
# end
|
58
92
|
#
|
59
|
-
#
|
93
|
+
# job.wait_until_done!
|
60
94
|
#
|
61
|
-
def add name, location, nodes: nil, storage_type: nil
|
95
|
+
def add name, location, nodes: nil, storage_type: nil, kms_key: nil
|
96
|
+
if kms_key
|
97
|
+
encryption_config = Google::Cloud::Bigtable::Admin::V2::Cluster::EncryptionConfig.new(
|
98
|
+
kms_key_name: kms_key
|
99
|
+
)
|
100
|
+
end
|
62
101
|
attrs = {
|
63
102
|
serve_nodes: nodes,
|
64
103
|
location: location,
|
65
|
-
default_storage_type: storage_type
|
104
|
+
default_storage_type: storage_type,
|
105
|
+
encryption_config: encryption_config
|
66
106
|
}.delete_if { |_, v| v.nil? }
|
67
107
|
|
68
108
|
self[name] = Google::Cloud::Bigtable::Admin::V2::Cluster.new attrs
|