google-cloud-bigtable 1.0.2 → 1.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +34 -0
- data/TROUBLESHOOTING.md +2 -8
- data/lib/google/bigtable/admin/v2/bigtable_instance_admin_pb.rb +27 -24
- data/lib/google/bigtable/admin/v2/bigtable_instance_admin_services_pb.rb +60 -57
- data/lib/google/bigtable/admin/v2/bigtable_table_admin_pb.rb +90 -23
- data/lib/google/bigtable/admin/v2/bigtable_table_admin_services_pb.rb +125 -98
- data/lib/google/bigtable/admin/v2/common_pb.rb +9 -4
- data/lib/google/bigtable/admin/v2/instance_pb.rb +12 -11
- data/lib/google/bigtable/admin/v2/table_pb.rb +52 -14
- data/lib/google/bigtable/v2/bigtable_pb.rb +17 -17
- data/lib/google/bigtable/v2/bigtable_services_pb.rb +39 -39
- data/lib/google/bigtable/v2/data_pb.rb +21 -21
- data/lib/google/cloud/bigtable/admin.rb +3 -3
- data/lib/google/cloud/bigtable/admin/v2.rb +4 -3
- data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client.rb +60 -50
- data/lib/google/cloud/bigtable/admin/v2/bigtable_instance_admin_client_config.json +1 -1
- data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client.rb +547 -58
- data/lib/google/cloud/bigtable/admin/v2/bigtable_table_admin_client_config.json +31 -1
- data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_instance_admin.rb +46 -39
- data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/bigtable_table_admin.rb +281 -53
- data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/instance.rb +15 -17
- data/lib/google/cloud/bigtable/admin/v2/doc/google/bigtable/admin/v2/table.rb +119 -26
- data/lib/google/cloud/bigtable/app_profile/list.rb +2 -2
- data/lib/google/cloud/bigtable/backup.rb +324 -0
- data/lib/google/cloud/bigtable/backup/job.rb +87 -0
- data/lib/google/cloud/bigtable/backup/list.rb +167 -0
- data/lib/google/cloud/bigtable/cluster.rb +99 -0
- data/lib/google/cloud/bigtable/cluster/list.rb +1 -1
- data/lib/google/cloud/bigtable/column_family_map.rb +1 -1
- data/lib/google/cloud/bigtable/instance.rb +4 -7
- data/lib/google/cloud/bigtable/instance/list.rb +1 -1
- data/lib/google/cloud/bigtable/longrunning_job.rb +11 -0
- data/lib/google/cloud/bigtable/policy.rb +1 -1
- data/lib/google/cloud/bigtable/service.rb +131 -0
- data/lib/google/cloud/bigtable/table.rb +112 -0
- data/lib/google/cloud/bigtable/table/cluster_state.rb +25 -4
- data/lib/google/cloud/bigtable/table/list.rb +1 -1
- data/lib/google/cloud/bigtable/table/restore_job.rb +117 -0
- data/lib/google/cloud/bigtable/v2.rb +1 -1
- data/lib/google/cloud/bigtable/v2/bigtable_client.rb +3 -0
- data/lib/google/cloud/bigtable/v2/bigtable_client_config.json +7 -7
- data/lib/google/cloud/bigtable/version.rb +1 -1
- metadata +9 -5
@@ -19,16 +19,15 @@ module Google
|
|
19
19
|
module V2
|
20
20
|
# A collection of Bigtable {Google::Bigtable::Admin::V2::Table Tables} and
|
21
21
|
# the resources that serve them.
|
22
|
-
# All tables in an instance are served from
|
23
|
-
# {Google::Bigtable::Admin::V2::Cluster
|
22
|
+
# All tables in an instance are served from all
|
23
|
+
# {Google::Bigtable::Admin::V2::Cluster Clusters} in the instance.
|
24
24
|
# @!attribute [rw] name
|
25
25
|
# @return [String]
|
26
|
-
# (`OutputOnly`)
|
27
26
|
# The unique name of the instance. Values are of the form
|
28
|
-
# `projects
|
27
|
+
# `projects/{project}/instances/[a-z][a-z0-9\\-]+[a-z0-9]`.
|
29
28
|
# @!attribute [rw] display_name
|
30
29
|
# @return [String]
|
31
|
-
# The descriptive name for this instance as it appears in UIs.
|
30
|
+
# Required. The descriptive name for this instance as it appears in UIs.
|
32
31
|
# Can be changed at any time, but should be kept globally unique
|
33
32
|
# to avoid confusion.
|
34
33
|
# @!attribute [rw] state
|
@@ -93,24 +92,22 @@ module Google
|
|
93
92
|
# {Google::Bigtable::Admin::V2::Instance Instance}.
|
94
93
|
# @!attribute [rw] name
|
95
94
|
# @return [String]
|
96
|
-
# (`OutputOnly`)
|
97
95
|
# The unique name of the cluster. Values are of the form
|
98
|
-
# `projects
|
96
|
+
# `projects/{project}/instances/{instance}/clusters/[a-z][-a-z0-9]*`.
|
99
97
|
# @!attribute [rw] location
|
100
98
|
# @return [String]
|
101
99
|
# (`CreationOnly`)
|
102
100
|
# The location where this cluster's nodes and storage reside. For best
|
103
101
|
# performance, clients should be located as close as possible to this
|
104
102
|
# cluster. Currently only zones are supported, so values should be of the
|
105
|
-
# form `projects
|
103
|
+
# form `projects/{project}/locations/{zone}`.
|
106
104
|
# @!attribute [rw] state
|
107
105
|
# @return [Google::Bigtable::Admin::V2::Cluster::State]
|
108
|
-
# (`OutputOnly`)
|
109
106
|
# The current state of the cluster.
|
110
107
|
# @!attribute [rw] serve_nodes
|
111
108
|
# @return [Integer]
|
112
|
-
# The number of nodes allocated to this cluster. More nodes enable
|
113
|
-
# throughput and more consistent performance.
|
109
|
+
# Required. The number of nodes allocated to this cluster. More nodes enable
|
110
|
+
# higher throughput and more consistent performance.
|
114
111
|
# @!attribute [rw] default_storage_type
|
115
112
|
# @return [Google::Bigtable::Admin::V2::StorageType]
|
116
113
|
# (`CreationOnly`)
|
@@ -165,19 +162,20 @@ module Google
|
|
165
162
|
# Optional long form description of the use case for this AppProfile.
|
166
163
|
# @!attribute [rw] multi_cluster_routing_use_any
|
167
164
|
# @return [Google::Bigtable::Admin::V2::AppProfile::MultiClusterRoutingUseAny]
|
168
|
-
# Use a multi-cluster routing policy
|
165
|
+
# Use a multi-cluster routing policy.
|
169
166
|
# @!attribute [rw] single_cluster_routing
|
170
167
|
# @return [Google::Bigtable::Admin::V2::AppProfile::SingleClusterRouting]
|
171
168
|
# Use a single-cluster routing policy.
|
172
169
|
class AppProfile
|
173
|
-
# Read/write requests
|
174
|
-
# fail over to
|
175
|
-
#
|
176
|
-
#
|
170
|
+
# Read/write requests are routed to the nearest cluster in the instance, and
|
171
|
+
# will fail over to the nearest cluster that is available in the event of
|
172
|
+
# transient errors or delays. Clusters in a region are considered
|
173
|
+
# equidistant. Choosing this option sacrifices read-your-writes consistency
|
174
|
+
# to improve availability.
|
177
175
|
class MultiClusterRoutingUseAny; end
|
178
176
|
|
179
177
|
# Unconditionally routes all read/write requests to a specific cluster.
|
180
|
-
# This option preserves read-your-writes consistency
|
178
|
+
# This option preserves read-your-writes consistency but does not improve
|
181
179
|
# availability.
|
182
180
|
# @!attribute [rw] cluster_id
|
183
181
|
# @return [String]
|
@@ -17,18 +17,26 @@ module Google
|
|
17
17
|
module Bigtable
|
18
18
|
module Admin
|
19
19
|
module V2
|
20
|
+
# Information about a table restore.
|
21
|
+
# @!attribute [rw] source_type
|
22
|
+
# @return [Google::Bigtable::Admin::V2::RestoreSourceType]
|
23
|
+
# The type of the restore source.
|
24
|
+
# @!attribute [rw] backup_info
|
25
|
+
# @return [Google::Bigtable::Admin::V2::BackupInfo]
|
26
|
+
# Information about the backup used to restore the table. The backup
|
27
|
+
# may no longer exist.
|
28
|
+
class RestoreInfo; end
|
29
|
+
|
20
30
|
# A collection of user data indexed by row, column, and timestamp.
|
21
31
|
# Each table is served using the resources of its parent cluster.
|
22
32
|
# @!attribute [rw] name
|
23
33
|
# @return [String]
|
24
|
-
#
|
25
|
-
# The unique name of the table. Values are of the form
|
34
|
+
# Output only. The unique name of the table. Values are of the form
|
26
35
|
# `projects/<project>/instances/<instance>/tables/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`.
|
27
36
|
# Views: `NAME_ONLY`, `SCHEMA_VIEW`, `REPLICATION_VIEW`, `FULL`
|
28
37
|
# @!attribute [rw] cluster_states
|
29
38
|
# @return [Hash{String => Google::Bigtable::Admin::V2::Table::ClusterState}]
|
30
|
-
#
|
31
|
-
# Map from cluster ID to per-cluster table state.
|
39
|
+
# Output only. Map from cluster ID to per-cluster table state.
|
32
40
|
# If it could not be determined whether or not the table has data in a
|
33
41
|
# particular cluster (for example, if its zone is unavailable), then
|
34
42
|
# there will be an entry for the cluster with UNKNOWN `replication_status`.
|
@@ -44,13 +52,16 @@ module Google
|
|
44
52
|
# The granularity (i.e. `MILLIS`) at which timestamps are stored in
|
45
53
|
# this table. Timestamps not matching the granularity will be rejected.
|
46
54
|
# If unspecified at creation time, the value will be set to `MILLIS`.
|
47
|
-
# Views: `SCHEMA_VIEW`, `FULL
|
55
|
+
# Views: `SCHEMA_VIEW`, `FULL`.
|
56
|
+
# @!attribute [rw] restore_info
|
57
|
+
# @return [Google::Bigtable::Admin::V2::RestoreInfo]
|
58
|
+
# Output only. If this table was restored from another data source (e.g. a
|
59
|
+
# backup), this field will be populated with information about the restore.
|
48
60
|
class Table
|
49
61
|
# The state of a table's data in a particular cluster.
|
50
62
|
# @!attribute [rw] replication_state
|
51
63
|
# @return [Google::Bigtable::Admin::V2::Table::ClusterState::ReplicationState]
|
52
|
-
#
|
53
|
-
# The state of replication for the table in this cluster.
|
64
|
+
# Output only. The state of replication for the table in this cluster.
|
54
65
|
class ClusterState
|
55
66
|
# Table replication states.
|
56
67
|
module ReplicationState
|
@@ -74,6 +85,11 @@ module Google
|
|
74
85
|
# replication delay, reads may not immediately reflect the state of the
|
75
86
|
# table in other clusters.
|
76
87
|
READY = 4
|
88
|
+
|
89
|
+
# The table is fully created and ready for use after a restore, and is
|
90
|
+
# being optimized for performance. When optimizations are complete, the
|
91
|
+
# table will transition to `READY` state.
|
92
|
+
READY_OPTIMIZING = 5
|
77
93
|
end
|
78
94
|
end
|
79
95
|
|
@@ -99,8 +115,8 @@ module Google
|
|
99
115
|
# Only populates `name` and fields related to the table's schema.
|
100
116
|
SCHEMA_VIEW = 2
|
101
117
|
|
102
|
-
# Only populates `name` and fields related to the table's
|
103
|
-
#
|
118
|
+
# Only populates `name` and fields related to the table's replication
|
119
|
+
# state.
|
104
120
|
REPLICATION_VIEW = 3
|
105
121
|
|
106
122
|
# Populates all fields.
|
@@ -157,38 +173,32 @@ module Google
|
|
157
173
|
# for production use. It is not subject to any SLA or deprecation policy.
|
158
174
|
# @!attribute [rw] name
|
159
175
|
# @return [String]
|
160
|
-
#
|
161
|
-
# The unique name of the snapshot.
|
176
|
+
# Output only. The unique name of the snapshot.
|
162
177
|
# Values are of the form
|
163
178
|
# `projects/<project>/instances/<instance>/clusters/<cluster>/snapshots/<snapshot>`.
|
164
179
|
# @!attribute [rw] source_table
|
165
180
|
# @return [Google::Bigtable::Admin::V2::Table]
|
166
|
-
#
|
167
|
-
# The source table at the time the snapshot was taken.
|
181
|
+
# Output only. The source table at the time the snapshot was taken.
|
168
182
|
# @!attribute [rw] data_size_bytes
|
169
183
|
# @return [Integer]
|
170
|
-
#
|
171
|
-
#
|
172
|
-
#
|
173
|
-
#
|
184
|
+
# Output only. The size of the data in the source table at the time the
|
185
|
+
# snapshot was taken. In some cases, this value may be computed
|
186
|
+
# asynchronously via a background process and a placeholder of 0 will be used
|
187
|
+
# in the meantime.
|
174
188
|
# @!attribute [rw] create_time
|
175
189
|
# @return [Google::Protobuf::Timestamp]
|
176
|
-
#
|
177
|
-
# The time when the snapshot is created.
|
190
|
+
# Output only. The time when the snapshot is created.
|
178
191
|
# @!attribute [rw] delete_time
|
179
192
|
# @return [Google::Protobuf::Timestamp]
|
180
|
-
#
|
181
|
-
#
|
182
|
-
# snapshot can stay active is 365 days. If 'ttl' is not specified,
|
193
|
+
# Output only. The time when the snapshot will be deleted. The maximum amount
|
194
|
+
# of time a snapshot can stay active is 365 days. If 'ttl' is not specified,
|
183
195
|
# the default maximum of 365 days will be used.
|
184
196
|
# @!attribute [rw] state
|
185
197
|
# @return [Google::Bigtable::Admin::V2::Snapshot::State]
|
186
|
-
#
|
187
|
-
# The current state of the snapshot.
|
198
|
+
# Output only. The current state of the snapshot.
|
188
199
|
# @!attribute [rw] description
|
189
200
|
# @return [String]
|
190
|
-
#
|
191
|
-
# Description of the snapshot.
|
201
|
+
# Output only. Description of the snapshot.
|
192
202
|
class Snapshot
|
193
203
|
# Possible states of a snapshot.
|
194
204
|
module State
|
@@ -204,6 +214,89 @@ module Google
|
|
204
214
|
CREATING = 2
|
205
215
|
end
|
206
216
|
end
|
217
|
+
|
218
|
+
# A backup of a Cloud Bigtable table.
|
219
|
+
# @!attribute [rw] name
|
220
|
+
# @return [String]
|
221
|
+
# Output only. A globally unique identifier for the backup which cannot be
|
222
|
+
# changed. Values are of the form
|
223
|
+
# `projects/{project}/instances/{instance}/clusters/{cluster}/
|
224
|
+
# backups/[_a-zA-Z0-9][-_.a-zA-Z0-9]*`
|
225
|
+
# The final segment of the name must be between 1 and 50 characters
|
226
|
+
# in length.
|
227
|
+
#
|
228
|
+
# The backup is stored in the cluster identified by the prefix of the backup
|
229
|
+
# name of the form
|
230
|
+
# `projects/{project}/instances/{instance}/clusters/{cluster}`.
|
231
|
+
# @!attribute [rw] source_table
|
232
|
+
# @return [String]
|
233
|
+
# Required. Immutable. Name of the table from which this backup was created.
|
234
|
+
# This needs to be in the same instance as the backup. Values are of the form
|
235
|
+
# `projects/{project}/instances/{instance}/tables/{source_table}`.
|
236
|
+
# @!attribute [rw] expire_time
|
237
|
+
# @return [Google::Protobuf::Timestamp]
|
238
|
+
# Required. The expiration time of the backup, with microseconds
|
239
|
+
# granularity that must be at least 6 hours and at most 30 days
|
240
|
+
# from the time the request is received. Once the `expire_time`
|
241
|
+
# has passed, Cloud Bigtable will delete the backup and free the
|
242
|
+
# resources used by the backup.
|
243
|
+
# @!attribute [rw] start_time
|
244
|
+
# @return [Google::Protobuf::Timestamp]
|
245
|
+
# Output only. `start_time` is the time that the backup was started
|
246
|
+
# (i.e. approximately the time the
|
247
|
+
# {Google::Bigtable::Admin::V2::BigtableTableAdmin::CreateBackup CreateBackup}
|
248
|
+
# request is received). The row data in this backup will be no older than
|
249
|
+
# this timestamp.
|
250
|
+
# @!attribute [rw] end_time
|
251
|
+
# @return [Google::Protobuf::Timestamp]
|
252
|
+
# Output only. `end_time` is the time that the backup was finished. The row
|
253
|
+
# data in the backup will be no newer than this timestamp.
|
254
|
+
# @!attribute [rw] size_bytes
|
255
|
+
# @return [Integer]
|
256
|
+
# Output only. Size of the backup in bytes.
|
257
|
+
# @!attribute [rw] state
|
258
|
+
# @return [Google::Bigtable::Admin::V2::Backup::State]
|
259
|
+
# Output only. The current state of the backup.
|
260
|
+
class Backup
|
261
|
+
# Indicates the current state of the backup.
|
262
|
+
module State
|
263
|
+
# Not specified.
|
264
|
+
STATE_UNSPECIFIED = 0
|
265
|
+
|
266
|
+
# The pending backup is still being created. Operations on the
|
267
|
+
# backup may fail with `FAILED_PRECONDITION` in this state.
|
268
|
+
CREATING = 1
|
269
|
+
|
270
|
+
# The backup is complete and ready for use.
|
271
|
+
READY = 2
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
# Information about a backup.
|
276
|
+
# @!attribute [rw] backup
|
277
|
+
# @return [String]
|
278
|
+
# Output only. Name of the backup.
|
279
|
+
# @!attribute [rw] start_time
|
280
|
+
# @return [Google::Protobuf::Timestamp]
|
281
|
+
# Output only. The time that the backup was started. Row data in the backup
|
282
|
+
# will be no older than this timestamp.
|
283
|
+
# @!attribute [rw] end_time
|
284
|
+
# @return [Google::Protobuf::Timestamp]
|
285
|
+
# Output only. This time that the backup was finished. Row data in the
|
286
|
+
# backup will be no newer than this timestamp.
|
287
|
+
# @!attribute [rw] source_table
|
288
|
+
# @return [String]
|
289
|
+
# Output only. Name of the table the backup was created from.
|
290
|
+
class BackupInfo; end
|
291
|
+
|
292
|
+
# Indicates the type of the restore source.
|
293
|
+
module RestoreSourceType
|
294
|
+
# No restore associated.
|
295
|
+
RESTORE_SOURCE_TYPE_UNSPECIFIED = 0
|
296
|
+
|
297
|
+
# A backup was used as the source of the restore.
|
298
|
+
BACKUP = 1
|
299
|
+
end
|
207
300
|
end
|
208
301
|
end
|
209
302
|
end
|
@@ -97,7 +97,7 @@ module Google
|
|
97
97
|
# @yield [app_profile] The block for accessing each app profile.
|
98
98
|
# @yieldparam [AppProfile] app_profile The app profile object.
|
99
99
|
#
|
100
|
-
# @return [Enumerator]
|
100
|
+
# @return [Enumerator,nil] An enumerator is returned if no block is given, otherwise `nil`.
|
101
101
|
#
|
102
102
|
# @example Iterating each app profile by passing a block:
|
103
103
|
# require "google/cloud/bigtable"
|
@@ -118,7 +118,7 @@ module Google
|
|
118
118
|
#
|
119
119
|
# instance = bigtable.instance("my-instance")
|
120
120
|
#
|
121
|
-
#
|
121
|
+
# all_app_profile_ids = instance.app_profiles.all.map do |app_profile|
|
122
122
|
# app_profile.name
|
123
123
|
# end
|
124
124
|
#
|
@@ -0,0 +1,324 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2020 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/backup/job"
|
19
|
+
require "google/cloud/bigtable/backup/list"
|
20
|
+
require "google/cloud/bigtable/convert"
|
21
|
+
require "google/cloud/bigtable/table/restore_job"
|
22
|
+
|
23
|
+
|
24
|
+
module Google
|
25
|
+
module Cloud
|
26
|
+
module Bigtable
|
27
|
+
##
|
28
|
+
# # Backup
|
29
|
+
#
|
30
|
+
# A backup of a Cloud Bigtable table. See {Cluster#create_backup}, {Cluster#backup} and {Cluster#backups}.
|
31
|
+
#
|
32
|
+
# @example
|
33
|
+
# require "google/cloud/bigtable"
|
34
|
+
#
|
35
|
+
# bigtable = Google::Cloud::Bigtable.new
|
36
|
+
# instance = bigtable.instance("my-instance")
|
37
|
+
# cluster = instance.cluster("my-cluster")
|
38
|
+
#
|
39
|
+
# backup = cluster.backup("my-backup")
|
40
|
+
#
|
41
|
+
# # Update
|
42
|
+
# backup.expire_time = Time.now + 60 * 60 * 7
|
43
|
+
# backup.save
|
44
|
+
#
|
45
|
+
# # Delete
|
46
|
+
# backup.delete
|
47
|
+
#
|
48
|
+
class Backup
|
49
|
+
# @private
|
50
|
+
# The gRPC Service object.
|
51
|
+
attr_accessor :service
|
52
|
+
|
53
|
+
##
|
54
|
+
# @private A list of attributes that were updated.
|
55
|
+
attr_reader :updates
|
56
|
+
|
57
|
+
# @private
|
58
|
+
#
|
59
|
+
# Creates a new Backup instance.
|
60
|
+
def initialize grpc, service
|
61
|
+
@grpc = grpc
|
62
|
+
@service = service
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# The unique identifier for the project to which the backup belongs.
|
67
|
+
#
|
68
|
+
# @return [String]
|
69
|
+
#
|
70
|
+
def project_id
|
71
|
+
@grpc.name.split("/")[1]
|
72
|
+
end
|
73
|
+
|
74
|
+
##
|
75
|
+
# The unique identifier for the instance to which the backup belongs.
|
76
|
+
#
|
77
|
+
# @return [String]
|
78
|
+
#
|
79
|
+
def instance_id
|
80
|
+
@grpc.name.split("/")[3]
|
81
|
+
end
|
82
|
+
|
83
|
+
##
|
84
|
+
# The unique identifier for the cluster to which the backup belongs.
|
85
|
+
#
|
86
|
+
# @return [String]
|
87
|
+
#
|
88
|
+
def cluster_id
|
89
|
+
@grpc.name.split("/")[5]
|
90
|
+
end
|
91
|
+
|
92
|
+
##
|
93
|
+
# The unique identifier for the backup.
|
94
|
+
#
|
95
|
+
# @return [String]
|
96
|
+
#
|
97
|
+
def backup_id
|
98
|
+
@grpc.name.split("/")[7]
|
99
|
+
end
|
100
|
+
|
101
|
+
##
|
102
|
+
# The unique name of the backup. Value in the form
|
103
|
+
# `projects/<project>/instances/<instance>/clusters/<cluster>/backups/<backup>`.
|
104
|
+
#
|
105
|
+
# @return [String]
|
106
|
+
#
|
107
|
+
def path
|
108
|
+
@grpc.name
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# The table from which this backup was created.
|
113
|
+
#
|
114
|
+
# @param perform_lookup [Boolean] Creates table object without verifying that the table resource exists. Calls
|
115
|
+
# made on this object will raise errors if the table does not exist. Default value is `false`. Optional. Helps
|
116
|
+
# to reduce admin API calls.
|
117
|
+
# @param view [Symbol] Table view type. Default view type is `:SCHEMA_VIEW`. Valid view types are:
|
118
|
+
#
|
119
|
+
# * `:NAME_ONLY` - Only populates `name`.
|
120
|
+
# * `:SCHEMA_VIEW` - Only populates `name` and fields related to the table's schema.
|
121
|
+
# * `:REPLICATION_VIEW` - Only populates `name` and fields related to the table's replication state.
|
122
|
+
# * `:FULL` - Populates all fields.
|
123
|
+
#
|
124
|
+
# @return [Table]
|
125
|
+
#
|
126
|
+
def source_table perform_lookup: nil, view: nil
|
127
|
+
table = Table.from_path @grpc.source_table, service
|
128
|
+
return table.reload! view: view if perform_lookup
|
129
|
+
table
|
130
|
+
end
|
131
|
+
|
132
|
+
##
|
133
|
+
# The expiration time of the backup, with microseconds granularity that must be at least 6 hours and at most 30
|
134
|
+
# days from the time the request is received. Once the expire time has passed, Cloud Bigtable will delete the
|
135
|
+
# backup and free the resources used by the backup.
|
136
|
+
#
|
137
|
+
# @return [Time]
|
138
|
+
#
|
139
|
+
def expire_time
|
140
|
+
Convert.timestamp_to_time @grpc.expire_time
|
141
|
+
end
|
142
|
+
|
143
|
+
##
|
144
|
+
# Sets the expiration time of the backup, with microseconds granularity that must be at least 6 hours and at
|
145
|
+
# most 30 days from the time the request is received. Once the {#expire_time} has passed, Cloud Bigtable will
|
146
|
+
# delete the backup and free the resources used by the backup.
|
147
|
+
#
|
148
|
+
# @param [Time] new_expire_time The new expiration time of the backup.
|
149
|
+
#
|
150
|
+
def expire_time= new_expire_time
|
151
|
+
@grpc.expire_time = Convert.time_to_timestamp new_expire_time
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# The time that the backup was started (i.e. approximately the time the `CreateBackup` request is received). The
|
156
|
+
# row data in this backup will be no older than this timestamp.
|
157
|
+
#
|
158
|
+
# @return [Time]
|
159
|
+
#
|
160
|
+
def start_time
|
161
|
+
Convert.timestamp_to_time @grpc.start_time
|
162
|
+
end
|
163
|
+
|
164
|
+
##
|
165
|
+
# The time that the backup was finished. The row data in the backup will be no newer than this timestamp.
|
166
|
+
#
|
167
|
+
# @return [Time]
|
168
|
+
#
|
169
|
+
def end_time
|
170
|
+
Convert.timestamp_to_time @grpc.end_time
|
171
|
+
end
|
172
|
+
|
173
|
+
##
|
174
|
+
# The size of the backup in bytes.
|
175
|
+
#
|
176
|
+
# @return [Integer]
|
177
|
+
#
|
178
|
+
def size_bytes
|
179
|
+
@grpc.size_bytes
|
180
|
+
end
|
181
|
+
|
182
|
+
##
|
183
|
+
# The current state of the backup. Possible values are `:CREATING` and `:READY`.
|
184
|
+
#
|
185
|
+
# @return [Symbol]
|
186
|
+
#
|
187
|
+
def state
|
188
|
+
@grpc.state
|
189
|
+
end
|
190
|
+
|
191
|
+
##
|
192
|
+
# The backup is currently being created, and may be destroyed if the creation process encounters an error.
|
193
|
+
#
|
194
|
+
# @return [Boolean]
|
195
|
+
#
|
196
|
+
def creating?
|
197
|
+
state == :CREATING
|
198
|
+
end
|
199
|
+
|
200
|
+
##
|
201
|
+
# The backup has been successfully created and is ready to serve requests.
|
202
|
+
#
|
203
|
+
# @return [Boolean]
|
204
|
+
#
|
205
|
+
def ready?
|
206
|
+
state == :READY
|
207
|
+
end
|
208
|
+
|
209
|
+
##
|
210
|
+
# Creates a new table by restoring from a completed backup.
|
211
|
+
#
|
212
|
+
# @param table_id [String] The table ID for the new table. This table must not yet exist. Required.
|
213
|
+
#
|
214
|
+
# @return [Google::Cloud::Bigtable::Table::RestoreJob] The job representing the long-running, asynchronous
|
215
|
+
# processing of a backup restore table operation.
|
216
|
+
#
|
217
|
+
# @example
|
218
|
+
# require "google/cloud/bigtable"
|
219
|
+
#
|
220
|
+
# bigtable = Google::Cloud::Bigtable.new
|
221
|
+
# instance = bigtable.instance("my-instance")
|
222
|
+
# cluster = instance.cluster("my-cluster")
|
223
|
+
#
|
224
|
+
# backup = cluster.backup("my-backup")
|
225
|
+
#
|
226
|
+
# job = backup.restore("my-new-table")
|
227
|
+
#
|
228
|
+
# job.wait_until_done!
|
229
|
+
# job.done? #=> true
|
230
|
+
#
|
231
|
+
# if job.error?
|
232
|
+
# status = job.error
|
233
|
+
# else
|
234
|
+
# table = job.table
|
235
|
+
# optimized = job.optimize_table_operation_name
|
236
|
+
# end
|
237
|
+
#
|
238
|
+
def restore table_id
|
239
|
+
grpc = service.restore_table table_id, instance_id, cluster_id, backup_id
|
240
|
+
Table::RestoreJob.from_grpc grpc, service
|
241
|
+
end
|
242
|
+
|
243
|
+
##
|
244
|
+
# Updates the backup.
|
245
|
+
#
|
246
|
+
# `expire_time` is the only updatable field.
|
247
|
+
#
|
248
|
+
# @return [Boolean] Returns `true` if the update succeeded.
|
249
|
+
#
|
250
|
+
# @example
|
251
|
+
# require "google/cloud/bigtable"
|
252
|
+
#
|
253
|
+
# bigtable = Google::Cloud::Bigtable.new
|
254
|
+
# instance = bigtable.instance("my-instance")
|
255
|
+
# cluster = instance.cluster("my-cluster")
|
256
|
+
#
|
257
|
+
# backup = cluster.backup("my-backup")
|
258
|
+
#
|
259
|
+
# # Update
|
260
|
+
# backup.expire_time = Time.now + 60 * 60 * 7
|
261
|
+
# backup.save
|
262
|
+
#
|
263
|
+
def save
|
264
|
+
ensure_service!
|
265
|
+
@grpc = service.update_backup @grpc, [:expire_time]
|
266
|
+
true
|
267
|
+
end
|
268
|
+
alias update save
|
269
|
+
|
270
|
+
##
|
271
|
+
# Reloads backup data.
|
272
|
+
#
|
273
|
+
# @return [Google::Cloud::Bigtable::Backup]
|
274
|
+
#
|
275
|
+
def reload!
|
276
|
+
@grpc = service.get_backup instance_id, cluster_id, backup_id
|
277
|
+
self
|
278
|
+
end
|
279
|
+
|
280
|
+
##
|
281
|
+
# Permanently deletes the backup.
|
282
|
+
#
|
283
|
+
# @return [Boolean] Returns `true` if the backup was deleted.
|
284
|
+
#
|
285
|
+
# @example
|
286
|
+
# require "google/cloud/bigtable"
|
287
|
+
#
|
288
|
+
# bigtable = Google::Cloud::Bigtable.new
|
289
|
+
# instance = bigtable.instance("my-instance")
|
290
|
+
# cluster = instance.cluster("my-cluster")
|
291
|
+
#
|
292
|
+
# backup = cluster.backup("my-backup")
|
293
|
+
#
|
294
|
+
# backup.delete
|
295
|
+
#
|
296
|
+
def delete
|
297
|
+
ensure_service!
|
298
|
+
service.delete_backup instance_id, cluster_id, backup_id
|
299
|
+
true
|
300
|
+
end
|
301
|
+
|
302
|
+
# @private
|
303
|
+
#
|
304
|
+
# Creates a new Backup instance from a Google::Bigtable::Admin::V2::Backup.
|
305
|
+
#
|
306
|
+
# @param grpc [Google::Bigtable::Admin::V2::Backup]
|
307
|
+
# @param service [Google::Cloud::Bigtable::Service]
|
308
|
+
# @return [Google::Cloud::Bigtable::Backup]
|
309
|
+
def self.from_grpc grpc, service
|
310
|
+
new grpc, service
|
311
|
+
end
|
312
|
+
|
313
|
+
protected
|
314
|
+
|
315
|
+
# @private
|
316
|
+
#
|
317
|
+
# Raise an error unless an active connection to the service is available.
|
318
|
+
def ensure_service!
|
319
|
+
raise "Must have active connection to service" unless service
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
end
|