google-cloud-bigtable 1.2.2 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,6 +21,8 @@ module Google
21
21
  class Table
22
22
  ##
23
23
  # Table::ClusterState is the state of a table's data in a particular cluster.
24
+ #
25
+ # @attr [String] cluster_name The name of the cluster.
24
26
  class ClusterState
25
27
  attr_reader :cluster_name
26
28
 
@@ -39,6 +41,10 @@ module Google
39
41
  # * `:PLANNED_MAINTENANCE` - The table is temporarily unable to serve.
40
42
  # * `:UNPLANNED_MAINTENANCE` - The table is temporarily unable to serve.
41
43
  # * `:READY` - The table can serve.
44
+ # * `:READY_OPTIMIZING` - The table is fully created and ready for use
45
+ # after a restore, and is being optimized for performance. When
46
+ # optimizations are complete, the table will transition to `READY`
47
+ # state.
42
48
  #
43
49
  # @return [Symbol] The state of replication.
44
50
  #
@@ -51,7 +57,7 @@ module Google
51
57
  # over pre-existing data from other clusters before it can begin
52
58
  # receiving live replication updates and serving.
53
59
  #
54
- # @return [Boolean] `true` if the cluster is initializing.
60
+ # @return [Boolean] `true` if the table in this cluster is initializing.
55
61
  #
56
62
  def initializing?
57
63
  replication_state == :INITIALIZING
@@ -61,7 +67,8 @@ module Google
61
67
  # The table is temporarily unable to serve
62
68
  # requests from this cluster due to planned internal maintenance.
63
69
  #
64
- # @return [Boolean] `true` if the cluster is in planned maintenance.
70
+ # @return [Boolean] `true` if the table in this cluster is in planned
71
+ # maintenance.
65
72
  #
66
73
  def planned_maintenance?
67
74
  replication_state == :PLANNED_MAINTENANCE
@@ -71,7 +78,8 @@ module Google
71
78
  # The table is temporarily unable to serve requests from this
72
79
  # cluster due to unplanned or emergency maintenance.
73
80
  #
74
- # @return [Boolean] `true` if the cluster is in unplanned maintenance.
81
+ # @return [Boolean] `true` if the table in this cluster is in unplanned
82
+ # maintenance.
75
83
  #
76
84
  def unplanned_maintenance?
77
85
  replication_state == :UNPLANNED_MAINTENANCE
@@ -82,12 +90,25 @@ module Google
82
90
  # Depending on replication delay, reads may not immediately
83
91
  # reflect the state of the table in other clusters.
84
92
  #
85
- # @return [Boolean] `true` if the cluster is ready.
93
+ # @return [Boolean] `true` if the table in this cluster is ready.
86
94
  #
87
95
  def ready?
88
96
  replication_state == :READY
89
97
  end
90
98
 
99
+ ##
100
+ # The table is fully created and ready for use after a
101
+ # restore, and is being optimized for performance. When
102
+ # optimizations are complete, the table will transition to `READY`
103
+ # state.
104
+ #
105
+ # @return [Boolean] `true` if the table in this cluster is being
106
+ # optimized.
107
+ #
108
+ def ready_optimizing?
109
+ replication_state == :READY_OPTIMIZING
110
+ end
111
+
91
112
  # @private
92
113
  # New Table::ClusterState from a Google::Bigtable::Admin::V2::Table::ClusterState object.
93
114
  # @param grpc [Google::Bigtable::Admin::V2::Table::ClusterState]
@@ -94,7 +94,7 @@ module Google
94
94
  # @yield [table] The block for accessing each table instance.
95
95
  # @yieldparam [Table] table The table instance object.
96
96
  #
97
- # @return [Enumerator]
97
+ # @return [Enumerator,nil] An enumerator is returned if no block is given, otherwise `nil`.
98
98
  #
99
99
  # @example Iterating each table by passing a block:
100
100
  # require "google/cloud/bigtable"
@@ -0,0 +1,117 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ module Google
17
+ module Cloud
18
+ module Bigtable
19
+ class Table
20
+ ##
21
+ # # RestoreJob
22
+ #
23
+ # A resource representing the long-running, asynchronous processing of a backup restore operation. The
24
+ # job can be refreshed to retrieve the table object once the operation has been completed.
25
+ #
26
+ # See {Backup#restore}.
27
+ #
28
+ # @see https://cloud.google.com/bigtable/docs/reference/admin/rpc/google.longrunning#google.longrunning.Operation
29
+ # Long-running Operation
30
+ #
31
+ # @example
32
+ # require "google/cloud/bigtable"
33
+ #
34
+ # bigtable = Google::Cloud::Bigtable.new
35
+ # instance = bigtable.instance("my-instance")
36
+ # cluster = instance.cluster("my-cluster")
37
+ #
38
+ # backup = cluster.backup("my-backup")
39
+ #
40
+ # job = backup.restore("my-new-table")
41
+ #
42
+ # job.wait_until_done!
43
+ # job.done? #=> true
44
+ #
45
+ # if job.error?
46
+ # status = job.error
47
+ # else
48
+ # table = job.table
49
+ # optimized = job.optimize_table_operation_name
50
+ # end
51
+ #
52
+ class RestoreJob < LongrunningJob
53
+ ##
54
+ # The optimize table operation name from operation metadata.
55
+ #
56
+ # @return [String, nil] The optimize table operation name, or `nil` if the optimize table operation is not
57
+ # complete.
58
+ #
59
+ # @example
60
+ # require "google/cloud/bigtable"
61
+ #
62
+ # bigtable = Google::Cloud::Bigtable.new
63
+ # instance = bigtable.instance("my-instance")
64
+ # cluster = instance.cluster("my-cluster")
65
+ #
66
+ # backup = cluster.backup("my-backup")
67
+ #
68
+ # job = backup.restore("my-new-table")
69
+ #
70
+ # job.wait_until_done!
71
+ # job.done? #=> true
72
+ #
73
+ # if job.error?
74
+ # status = job.error
75
+ # else
76
+ # table = job.table
77
+ # optimized = job.optimize_table_operation_name
78
+ # end
79
+ #
80
+ def optimize_table_operation_name
81
+ metadata.optimize_table_operation_name
82
+ end
83
+
84
+ ##
85
+ # Gets the table object from operation results.
86
+ #
87
+ # @return [Google::Cloud::Bigtable::Table, nil] The table instance, or `nil` if the operation is not complete.
88
+ #
89
+ # @example
90
+ # require "google/cloud/bigtable"
91
+ #
92
+ # bigtable = Google::Cloud::Bigtable.new
93
+ # instance = bigtable.instance("my-instance")
94
+ # cluster = instance.cluster("my-cluster")
95
+ #
96
+ # backup = cluster.backup("my-backup")
97
+ #
98
+ # job = backup.restore("my-new-table")
99
+ #
100
+ # job.wait_until_done!
101
+ # job.done? #=> true
102
+ #
103
+ # if job.error?
104
+ # status = job.error
105
+ # else
106
+ # table = job.table
107
+ # optimized = job.optimize_table_operation_name
108
+ # end
109
+ #
110
+ def table
111
+ Table.from_grpc results, service if results
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Bigtable
19
- VERSION = "1.2.2".freeze
19
+ VERSION = "1.3.0".freeze
20
20
  end
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-bigtable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.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: 2020-05-28 00:00:00.000000000 Z
11
+ date: 2020-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-cloud-core
@@ -258,6 +258,9 @@ files:
258
258
  - lib/google/cloud/bigtable/app_profile.rb
259
259
  - lib/google/cloud/bigtable/app_profile/job.rb
260
260
  - lib/google/cloud/bigtable/app_profile/list.rb
261
+ - lib/google/cloud/bigtable/backup.rb
262
+ - lib/google/cloud/bigtable/backup/job.rb
263
+ - lib/google/cloud/bigtable/backup/list.rb
261
264
  - lib/google/cloud/bigtable/chunk_processor.rb
262
265
  - lib/google/cloud/bigtable/cluster.rb
263
266
  - lib/google/cloud/bigtable/cluster/job.rb
@@ -296,6 +299,7 @@ files:
296
299
  - lib/google/cloud/bigtable/table.rb
297
300
  - lib/google/cloud/bigtable/table/cluster_state.rb
298
301
  - lib/google/cloud/bigtable/table/list.rb
302
+ - lib/google/cloud/bigtable/table/restore_job.rb
299
303
  - lib/google/cloud/bigtable/v2.rb
300
304
  - lib/google/cloud/bigtable/v2/bigtable_client.rb
301
305
  - lib/google/cloud/bigtable/v2/bigtable_client_config.json
@@ -326,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
326
330
  - !ruby/object:Gem::Version
327
331
  version: '0'
328
332
  requirements: []
329
- rubygems_version: 3.0.6
333
+ rubygems_version: 3.1.3
330
334
  signing_key:
331
335
  specification_version: 4
332
336
  summary: API Client library for Cloud Bigtable API