google-cloud-bigtable 2.7.1 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 67e534271f2a313216bfb3d54e7a5ac84dec994ee4f42da33a81a0ecd9ab1230
4
- data.tar.gz: 6a4e80bf21ded6b239f26a59fbb51997a3f32130454787ff0c15136841ce8c45
3
+ metadata.gz: bf857acc4d00f606d2712fea755ba9f18d8c7d898599144029ff341081549f4c
4
+ data.tar.gz: aed266e0fabdd16d2ac25c21dde0501e4a0e4172a828f7cc5e468ec9b9caa190
5
5
  SHA512:
6
- metadata.gz: 0cd1d97d9bb9663ccb56653cb6de6e60062ad9f9bb2ff8a3c010f12dab27d0ef93fb5ce38c3fefc1830df60857cb2fb26189c6bb6c15c21a53b5149b170f7040
7
- data.tar.gz: d0407fd6d9f71869bc1e3a2897ab83d6de5b65c9c94a14332bb4d557de17c7c9e20cb2c74fd3e005fedb53917db02c098236d96e8aaf2213d101b2760bf0af4c
6
+ metadata.gz: 4f232903645d9d3e5614c862813005f2e35d998e369f6f1b0b949245e3f5a0a8fb5735d57ac3fb721c7b244d2d8e659ae94e7addef250b2fdd6cc01ad76fd6a5
7
+ data.tar.gz: 81cc42b99915c8fc15b42020a2582075bfaf5108420d9e3f8350dbece58da63a620316216fd1459ce34feb6b2d6c2341375b800a3c840ec2d7e1b647a09e1647
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Release History
2
2
 
3
+ ### 2.9.0 (2023-09-14)
4
+
5
+ #### Features
6
+
7
+ * Add support for channel pooling ([#22747](https://github.com/googleapis/google-cloud-ruby/issues/22747))
8
+
9
+ ### 2.8.0 (2023-08-17)
10
+
11
+ #### Features
12
+
13
+ * Added support for copybackup ([#19341](https://github.com/googleapis/google-cloud-ruby/issues/19341))
14
+
3
15
  ### 2.7.1 (2023-06-16)
4
16
 
5
17
  #### Documentation
@@ -109,6 +109,18 @@ module Google
109
109
  @grpc.name
110
110
  end
111
111
 
112
+ ##
113
+ # The name of the backup from which this backup is copied.
114
+ # Value will be empty if its not a copied backup and of the form -
115
+ # `projects/<project>/instances/<instance>/clusters/<cluster>/backups/<source_backup>`
116
+ # if this is a copied backup.
117
+ #
118
+ # @return [String]
119
+ #
120
+ def source_backup
121
+ @grpc.source_backup
122
+ end
123
+
112
124
  ##
113
125
  # The table from which this backup was created.
114
126
  #
@@ -412,6 +424,61 @@ module Google
412
424
  Table::RestoreJob.from_grpc grpc, service
413
425
  end
414
426
 
427
+ ##
428
+ # Creates a copy of the backup at the desired location. Copy of the backup won't be created
429
+ # if the backup is already a copied one.
430
+ #
431
+ # @param dest_project_id [String] Existing project ID. Copy of the backup
432
+ # will be created in this project. Required.
433
+ # @param dest_instance_id [Instance, String] Existing instance ID. Copy
434
+ # of the backup will be created in this instance. Required.
435
+ # @param dest_cluster_id [String] Existing cluster ID. Copy of the backup
436
+ # will be created in this cluster. Required.
437
+ # @param new_backup_id [String] The id of the copy of the backup to be created. This string must
438
+ # be between 1 and 50 characters in length and match the regex
439
+ # `[_a-zA-Z0-9][-_.a-zA-Z0-9]*`. Required.
440
+ # @param expire_time [Time] The expiration time of the copy of the backup, with microseconds
441
+ # granularity that must be at least 6 hours and at most 30 days from the time the request
442
+ # is received. Once the `expire_time` has passed, Cloud Bigtable will delete the backup
443
+ # and free the resources used by the backup. Required.
444
+ #
445
+ # @return [Google::Cloud::Bigtable::Backup::Job] The job representing the long-running, asynchronous
446
+ # processing of a copy backup operation.
447
+ #
448
+ # @example Create a copy of the backup at a specific location
449
+ # require "google/cloud/bigtable"
450
+ #
451
+ # bigtable = Google::Cloud::Bigtable.new
452
+ # instance = bigtable.instance "my-instance"
453
+ # cluster = instance.cluster "my-cluster"
454
+ #
455
+ # backup = cluster.backup "my-backup"
456
+ #
457
+ # job = backup.copy dest_project_id:"my-project-2",
458
+ # dest_instance_id:"my-instance-2",
459
+ # dest_cluster_id:"my-cluster-2",
460
+ # new_backup_id:"my-backup-2",
461
+ # expire_time: Time.now + 60 * 60 * 7
462
+ #
463
+ # job.wait_until_done!
464
+ # job.done? #=> true
465
+ #
466
+ # if job.error?
467
+ # status = job.error
468
+ # else
469
+ # backup = job.backup
470
+ # end
471
+ #
472
+ def copy dest_project_id:, dest_instance_id:, dest_cluster_id:, new_backup_id:, expire_time:
473
+ grpc = service.copy_backup project_id: dest_project_id,
474
+ instance_id: dest_instance_id,
475
+ cluster_id: dest_cluster_id,
476
+ backup_id: new_backup_id,
477
+ source_backup: service.backup_path(instance_id, cluster_id, backup_id),
478
+ expire_time: expire_time
479
+ Backup::Job.from_grpc grpc, service
480
+ end
481
+
415
482
  ##
416
483
  # Updates the backup.
417
484
  #
@@ -17,6 +17,13 @@
17
17
 
18
18
  require "time"
19
19
  require "date"
20
+ require "gapic/protobuf"
21
+ require "gapic/call_options"
22
+ require "gapic/headers"
23
+ require "google/cloud/bigtable/version"
24
+ require "google/cloud/bigtable/v2/version"
25
+ require "google/bigtable/v2/bigtable_pb"
26
+ require "google/cloud/bigtable/admin/v2"
20
27
 
21
28
  module Google
22
29
  module Cloud
@@ -89,6 +96,33 @@ module Google
89
96
  return [value].pack "q>" if value.is_a? Integer
90
97
  value
91
98
  end
99
+
100
+ def ping_and_warm_request table_path, app_profile_id, timeout
101
+ request = {
102
+ name: table_path.split("/").slice(0, 4).join("/"),
103
+ app_profile_id: app_profile_id
104
+ }
105
+ request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::Bigtable::V2::PingAndWarmRequest
106
+
107
+ header_params = {}
108
+ if request.name && %r{^projects/[^/]+/instances/[^/]+/?$}.match?(request.name)
109
+ header_params["name"] = request.name
110
+ end
111
+ if request.app_profile_id && !request.app_profile_id.empty?
112
+ header_params["app_profile_id"] = request.app_profile_id
113
+ end
114
+ request_params_header = URI.encode_www_form header_params
115
+ metadata = {
116
+ "x-goog-request-params": request_params_header,
117
+ "x-goog-api-client":
118
+ ::Gapic::Headers.x_goog_api_client(lib_name: "gccl",
119
+ lib_version: ::Google::Cloud::Bigtable::VERSION,
120
+ gapic_version: ::Google::Cloud::Bigtable::V2::VERSION),
121
+ "google-cloud-resource-prefix": "projects/#{table_path.split('/')[1]}"
122
+ }
123
+ options = ::Gapic::CallOptions.new timeout: timeout, metadata: metadata
124
+ [request, options]
125
+ end
92
126
  end
93
127
  end
94
128
  end
@@ -521,15 +521,12 @@ module Google
521
521
  ensure_service!
522
522
 
523
523
  view ||= :SCHEMA_VIEW
524
- table = if perform_lookup
525
- grpc = service.get_table instance_id, table_id, view: view
526
- Table.from_grpc grpc, service, view: view
527
- else
528
- Table.from_path service.table_path(instance_id, table_id), service
529
- end
530
-
531
- table.app_profile_id = app_profile_id
532
- table
524
+ if perform_lookup
525
+ grpc = service.get_table instance_id, table_id, view: view
526
+ Table.from_grpc grpc, service, view: view, app_profile_id: app_profile_id
527
+ else
528
+ Table.from_path service.table_path(instance_id, table_id), service, app_profile_id: app_profile_id
529
+ end
533
530
  rescue Google::Cloud::NotFoundError
534
531
  nil
535
532
  end
@@ -343,15 +343,12 @@ module Google
343
343
  ensure_service!
344
344
 
345
345
  view ||= :SCHEMA_VIEW
346
- table = if perform_lookup
347
- grpc = service.get_table instance_id, table_id, view: view
348
- Table.from_grpc grpc, service, view: view
349
- else
350
- Table.from_path service.table_path(instance_id, table_id), service
351
- end
352
-
353
- table.app_profile_id = app_profile_id
354
- table
346
+ if perform_lookup
347
+ grpc = service.get_table instance_id, table_id, view: view
348
+ Table.from_grpc grpc, service, view: view, app_profile_id: app_profile_id
349
+ else
350
+ Table.from_path service.table_path(instance_id, table_id), service, app_profile_id: app_profile_id
351
+ end
355
352
  rescue Google::Cloud::NotFoundError
356
353
  nil
357
354
  end
@@ -457,6 +454,67 @@ module Google
457
454
  true
458
455
  end
459
456
 
457
+ ##
458
+ # Creates a copy of the backup at the desired location. Copy of the backup won't be created
459
+ # if the backup is already a copied one.
460
+ #
461
+ # @param dest_project_id [String] Existing project ID. Copy of the backup
462
+ # will be created in this project. Required.
463
+ # @param dest_instance_id [Instance, String] Existing instance ID. Copy
464
+ # of the backup will be created in this instance. Required.
465
+ # @param dest_cluster_id [String] Existing cluster ID. Copy of the backup
466
+ # will be created in this cluster. Required.
467
+ # @param new_backup_id [String] The id of the copy of the backup to be created. This string must
468
+ # be between 1 and 50 characters in length and match the regex
469
+ # `[_a-zA-Z0-9][-_.a-zA-Z0-9]*`. Required.
470
+ # @param source_instance_id [String] Existing instance ID. Backup will be copied from this instance. Required.
471
+ # @param source_cluster_id [String] Existing cluster ID. Backup will be copied from this cluster. Required.
472
+ # @param source_backup_id [Instance, String] Existing backup ID. This backup will be copied. Required.
473
+ # @param expire_time [Time] The expiration time of the copy of the backup, with microseconds
474
+ # granularity that must be at least 6 hours and at most 30 days from the time the request
475
+ # is received. Once the `expire_time` has passed, Cloud Bigtable will delete the backup
476
+ # and free the resources used by the backup. Required.
477
+ #
478
+ # @return [Google::Cloud::Bigtable::Backup::Job] The job representing the long-running, asynchronous
479
+ # processing of a copy backup operation.
480
+ #
481
+ # @example Create a copy of the specified backup at a specific location
482
+ # require "google/cloud/bigtable"
483
+ #
484
+ # bigtable = Google::Cloud::Bigtable.new
485
+ #
486
+ # job = bigtable.copy_backup dest_project_id:"my-project-2",
487
+ # dest_instance_id:"my-instance-2",
488
+ # dest_cluster_id:"my-cluster-2",
489
+ # new_backup_id:"my-backup-2",
490
+ # source_instance_id:"my-instance",
491
+ # source_cluster_id:"my-cluster",
492
+ # source_backup_id:"my-backup",
493
+ # expire_time: Time.now + 60 * 60 * 7
494
+ #
495
+ # job.wait_until_done!
496
+ # job.done? #=> true
497
+ #
498
+ # if job.error?
499
+ # status = job.error
500
+ # else
501
+ # backup = job.backup
502
+ # end
503
+ #
504
+ def copy_backup dest_project_id:, dest_instance_id:, dest_cluster_id:, new_backup_id:,
505
+ source_instance_id:, source_cluster_id:, source_backup_id:, expire_time:
506
+ ensure_service!
507
+ grpc = service.copy_backup project_id: dest_project_id,
508
+ instance_id: dest_instance_id,
509
+ cluster_id: dest_cluster_id,
510
+ backup_id: new_backup_id,
511
+ source_backup: service.backup_path(source_instance_id,
512
+ source_cluster_id,
513
+ source_backup_id),
514
+ expire_time: expire_time
515
+ Backup::Job.from_grpc grpc, service
516
+ end
517
+
460
518
  protected
461
519
 
462
520
  # @private
@@ -20,6 +20,9 @@ require "google/cloud/bigtable/errors"
20
20
  require "google/cloud/bigtable/credentials"
21
21
  require "google/cloud/bigtable/v2"
22
22
  require "google/cloud/bigtable/admin/v2"
23
+ require "google/cloud/bigtable/convert"
24
+ require "gapic/lru_hash"
25
+ require "concurrent"
23
26
 
24
27
  module Google
25
28
  module Cloud
@@ -49,12 +52,17 @@ module Google
49
52
  # @param timeout [Integer]
50
53
  # The default timeout, in seconds, for calls made through this client.
51
54
  #
52
- def initialize project_id, credentials, host: nil, host_admin: nil, timeout: nil
55
+ def initialize project_id, credentials, host: nil, host_admin: nil, timeout: nil,
56
+ channel_selection: nil, channel_count: nil
53
57
  @project_id = project_id
54
58
  @credentials = credentials
55
59
  @host = host
56
60
  @host_admin = host_admin
57
61
  @timeout = timeout
62
+ @channel_selection = channel_selection
63
+ @channel_count = channel_count
64
+ @bigtable_clients = ::Gapic::LruHash.new 10
65
+ @mutex = Mutex.new
58
66
  end
59
67
 
60
68
  def instances
@@ -83,15 +91,15 @@ module Google
83
91
  end
84
92
  attr_accessor :mocked_tables
85
93
 
86
- def client
94
+ def client table_path, app_profile_id
87
95
  return mocked_client if mocked_client
88
- @client ||= V2::Bigtable::Client.new do |config|
89
- config.credentials = credentials if credentials
90
- config.timeout = timeout if timeout
91
- config.endpoint = host if host
92
- config.lib_name = "gccl"
93
- config.lib_version = Google::Cloud::Bigtable::VERSION
94
- config.metadata = { "google-cloud-resource-prefix": "projects/#{@project_id}" }
96
+ table_key = "#{table_path}_#{app_profile_id}"
97
+ @mutex.synchronize do
98
+ if @bigtable_clients.get(table_key).nil?
99
+ bigtable_client = create_bigtable_client table_path, app_profile_id
100
+ @bigtable_clients.put table_key, bigtable_client
101
+ end
102
+ @bigtable_clients.get table_key
95
103
  end
96
104
  end
97
105
  attr_accessor :mocked_client
@@ -649,7 +657,7 @@ module Google
649
657
  end
650
658
 
651
659
  def read_rows instance_id, table_id, app_profile_id: nil, rows: nil, filter: nil, rows_limit: nil
652
- client.read_rows(
660
+ client(table_path(instance_id, table_id), app_profile_id).read_rows(
653
661
  **{
654
662
  table_name: table_path(instance_id, table_id),
655
663
  rows: rows,
@@ -661,11 +669,11 @@ module Google
661
669
  end
662
670
 
663
671
  def sample_row_keys table_name, app_profile_id: nil
664
- client.sample_row_keys table_name: table_name, app_profile_id: app_profile_id
672
+ client(table_name, app_profile_id).sample_row_keys table_name: table_name, app_profile_id: app_profile_id
665
673
  end
666
674
 
667
675
  def mutate_row table_name, row_key, mutations, app_profile_id: nil
668
- client.mutate_row(
676
+ client(table_name, app_profile_id).mutate_row(
669
677
  **{
670
678
  table_name: table_name,
671
679
  app_profile_id: app_profile_id,
@@ -676,7 +684,7 @@ module Google
676
684
  end
677
685
 
678
686
  def mutate_rows table_name, entries, app_profile_id: nil
679
- client.mutate_rows(
687
+ client(table_name, app_profile_id).mutate_rows(
680
688
  **{
681
689
  table_name: table_name,
682
690
  app_profile_id: app_profile_id,
@@ -691,7 +699,7 @@ module Google
691
699
  predicate_filter: nil,
692
700
  true_mutations: nil,
693
701
  false_mutations: nil
694
- client.check_and_mutate_row(
702
+ client(table_name, app_profile_id).check_and_mutate_row(
695
703
  **{
696
704
  table_name: table_name,
697
705
  app_profile_id: app_profile_id,
@@ -704,7 +712,7 @@ module Google
704
712
  end
705
713
 
706
714
  def read_modify_write_row table_name, row_key, rules, app_profile_id: nil
707
- client.read_modify_write_row(
715
+ client(table_name, app_profile_id).read_modify_write_row(
708
716
  **{
709
717
  table_name: table_name,
710
718
  app_profile_id: app_profile_id,
@@ -725,6 +733,19 @@ module Google
725
733
  tables.create_backup parent: cluster_path(instance_id, cluster_id), backup_id: backup_id, backup: backup
726
734
  end
727
735
 
736
+ ##
737
+ # Starts copying the selected backup to the chosen location.
738
+ # The underlying Google::Longrunning::Operation tracks the copying of backup.
739
+ #
740
+ # @return [Gapic::Operation]
741
+ #
742
+ def copy_backup project_id:, instance_id:, cluster_id:, backup_id:, source_backup:, expire_time:
743
+ tables.copy_backup parent: "projects/#{project_id}/instances/#{instance_id}/clusters/#{cluster_id}",
744
+ backup_id: backup_id,
745
+ source_backup: source_backup,
746
+ expire_time: expire_time
747
+ end
748
+
728
749
  ##
729
750
  # @return [Google::Cloud::Bigtable::Admin::V2::Backup]
730
751
  #
@@ -872,6 +893,23 @@ module Google
872
893
  def inspect
873
894
  "#{self.class}(#{@project_id})"
874
895
  end
896
+
897
+ def create_bigtable_client table_path, app_profile_id
898
+ V2::Bigtable::Client.new do |config|
899
+ config.credentials = credentials if credentials
900
+ config.timeout = timeout if timeout
901
+ config.endpoint = host if host
902
+ config.lib_name = "gccl"
903
+ config.lib_version = Google::Cloud::Bigtable::VERSION
904
+ config.metadata = { "google-cloud-resource-prefix": "projects/#{@project_id}" }
905
+ config.channel_pool.channel_selection = @channel_selection
906
+ config.channel_pool.channel_count = @channel_count
907
+ request, options = Convert.ping_and_warm_request table_path, app_profile_id, timeout
908
+ config.channel_pool.on_channel_create = proc do |channel|
909
+ channel.call_rpc :ping_and_warm, request, options: options
910
+ end
911
+ end
912
+ end
875
913
  end
876
914
  end
877
915
  end
@@ -72,11 +72,13 @@ module Google
72
72
  # @private
73
73
  #
74
74
  # Creates a new Table instance.
75
- def initialize grpc, service, view:
75
+ def initialize grpc, service, view:, app_profile_id: nil
76
76
  @grpc = grpc
77
77
  @service = service
78
+ @app_profile_id = app_profile_id
78
79
  raise ArgumentError, "view must not be nil" if view.nil?
79
80
  @loaded_views = Set[view]
81
+ @service.client path, app_profile_id
80
82
  end
81
83
 
82
84
  ##
@@ -659,8 +661,8 @@ module Google
659
661
  # @param view [Symbol] View type.
660
662
  # @return [Google::Cloud::Bigtable::Table]
661
663
  #
662
- def self.from_grpc grpc, service, view:
663
- new grpc, service, view: view
664
+ def self.from_grpc grpc, service, view:, app_profile_id: nil
665
+ new grpc, service, view: view, app_profile_id: app_profile_id
664
666
  end
665
667
 
666
668
  # @private
@@ -672,9 +674,9 @@ module Google
672
674
  # @param service [Google::Cloud::Bigtable::Service]
673
675
  # @return [Google::Cloud::Bigtable::Table]
674
676
  #
675
- def self.from_path path, service
677
+ def self.from_path path, service, app_profile_id: nil
676
678
  grpc = Google::Cloud::Bigtable::Admin::V2::Table.new name: path
677
- new grpc, service, view: :NAME_ONLY
679
+ new grpc, service, view: :NAME_ONLY, app_profile_id: app_profile_id
678
680
  end
679
681
 
680
682
  protected
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Bigtable
19
- VERSION = "2.7.1".freeze
19
+ VERSION = "2.9.0".freeze
20
20
  end
21
21
  end
22
22
  end
@@ -63,6 +63,10 @@ module Google
63
63
  # updater_proc is supplied.
64
64
  # @param timeout [Integer]
65
65
  # The default timeout, in seconds, for calls made through this client. Optional.
66
+ # @param channel_selection [Symbol] The algorithm for selecting a channel from the
67
+ # pool of available channels. This parameter can have the following symbols:
68
+ # * `:least_loaded` selects the channel having least number of concurrent streams.
69
+ # @param channel_count [Integer] The number of channels in the pool.
66
70
  # @return [Google::Cloud::Bigtable::Project]
67
71
  #
68
72
  # @example
@@ -70,19 +74,25 @@ module Google
70
74
  #
71
75
  # client = Google::Cloud::Bigtable.new
72
76
  #
77
+ # rubocop:disable Metrics/CyclomaticComplexity
78
+ # rubocop:disable Metrics/AbcSize
73
79
  def self.new project_id: nil,
74
80
  credentials: nil,
75
81
  emulator_host: nil,
76
82
  scope: nil,
77
83
  endpoint: nil,
78
84
  endpoint_admin: nil,
79
- timeout: nil
80
- project_id ||= default_project_id
81
- scope ||= configure.scope
82
- timeout ||= configure.timeout
85
+ timeout: nil,
86
+ channel_selection: nil,
87
+ channel_count: nil
88
+ project_id ||= default_project_id
89
+ scope ||= configure.scope
90
+ timeout ||= configure.timeout
83
91
  emulator_host ||= configure.emulator_host
84
- endpoint ||= configure.endpoint
92
+ endpoint ||= configure.endpoint
85
93
  endpoint_admin ||= configure.endpoint_admin
94
+ channel_selection ||= configure.channel_selection
95
+ channel_count ||= configure.channel_count
86
96
 
87
97
  return new_with_emulator project_id, emulator_host, timeout if emulator_host
88
98
 
@@ -90,10 +100,15 @@ module Google
90
100
  project_id = resolve_project_id project_id, credentials
91
101
  raise ArgumentError, "project_id is missing" if project_id.empty?
92
102
 
93
- service = Bigtable::Service.new \
94
- project_id, credentials, host: endpoint, host_admin: endpoint_admin, timeout: timeout
103
+ service = Bigtable::Service.new project_id, credentials, host: endpoint,
104
+ host_admin: endpoint_admin, timeout: timeout,
105
+ channel_selection: channel_selection,
106
+ channel_count: channel_count
95
107
  Bigtable::Project.new service
96
108
  end
109
+ # rubocop:enable Metrics/CyclomaticComplexity
110
+ # rubocop:enable Metrics/AbcSize
111
+
97
112
 
98
113
  ##
99
114
  # Configure the Google Cloud Bigtable library.
@@ -116,6 +131,10 @@ module Google
116
131
  # to use the default endpoint.
117
132
  # * `endpoint_admin` - (String) Override of the admin service endpoint
118
133
  # host name, or `nil` to use the default admin endpoint.
134
+ # * `channel_selection` - (Symbol) The algorithm for selecting a channel from the
135
+ # pool of available channels. This parameter can have the following symbols:
136
+ # `:least_loaded` selects the channel having least number of concurrent streams.
137
+ # * `channel_count` - (Integer) The number of channels in the pool.
119
138
  #
120
139
  # @return [Google::Cloud::Config] The configuration object the
121
140
  # Google::Cloud::Bigtable library uses.
@@ -171,4 +171,6 @@ Google::Cloud.configure.add_config! :bigtable do |config|
171
171
  config.add_field! :emulator_host, default_emulator, match: String, allow_nil: true
172
172
  config.add_field! :endpoint, "bigtable.googleapis.com", match: String
173
173
  config.add_field! :endpoint_admin, "bigtableadmin.googleapis.com", match: String
174
+ config.add_field! :channel_selection, :least_loaded, match: Symbol
175
+ config.add_field! :channel_count, 1, match: Integer
174
176
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-bigtable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.1
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Google LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-16 00:00:00.000000000 Z
11
+ date: 2023-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: google-cloud-bigtable-admin-v2
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +44,14 @@ dependencies:
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '0.0'
47
+ version: '0.14'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '0.0'
54
+ version: '0.14'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: google-cloud-core
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -249,7 +263,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
263
  - !ruby/object:Gem::Version
250
264
  version: '0'
251
265
  requirements: []
252
- rubygems_version: 3.4.2
266
+ rubygems_version: 3.4.19
253
267
  signing_key:
254
268
  specification_version: 4
255
269
  summary: API Client library for Cloud Bigtable API