google-cloud-spanner 1.16.2 → 2.0.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/AUTHENTICATION.md +1 -1
- data/CHANGELOG.md +23 -0
- data/lib/google-cloud-spanner.rb +10 -13
- data/lib/google/cloud/spanner.rb +6 -8
- data/lib/google/cloud/spanner/admin/database/credentials.rb +2 -2
- data/lib/google/cloud/spanner/admin/instance/credentials.rb +2 -2
- data/lib/google/cloud/spanner/backup.rb +1 -1
- data/lib/google/cloud/spanner/backup/job.rb +2 -2
- data/lib/google/cloud/spanner/backup/job/list.rb +2 -2
- data/lib/google/cloud/spanner/backup/list.rb +1 -2
- data/lib/google/cloud/spanner/backup/restore/job.rb +2 -2
- data/lib/google/cloud/spanner/batch_client.rb +2 -2
- data/lib/google/cloud/spanner/batch_snapshot.rb +6 -8
- data/lib/google/cloud/spanner/batch_update.rb +1 -1
- data/lib/google/cloud/spanner/client.rb +8 -8
- data/lib/google/cloud/spanner/commit.rb +14 -14
- data/lib/google/cloud/spanner/convert.rb +7 -7
- data/lib/google/cloud/spanner/credentials.rb +2 -2
- data/lib/google/cloud/spanner/data.rb +2 -2
- data/lib/google/cloud/spanner/database.rb +22 -22
- data/lib/google/cloud/spanner/database/backup_info.rb +1 -1
- data/lib/google/cloud/spanner/database/job.rb +3 -3
- data/lib/google/cloud/spanner/database/job/list.rb +2 -2
- data/lib/google/cloud/spanner/database/list.rb +1 -1
- data/lib/google/cloud/spanner/database/restore_info.rb +1 -1
- data/lib/google/cloud/spanner/fields.rb +8 -8
- data/lib/google/cloud/spanner/instance.rb +5 -12
- data/lib/google/cloud/spanner/instance/config.rb +1 -1
- data/lib/google/cloud/spanner/instance/config/list.rb +1 -1
- data/lib/google/cloud/spanner/instance/job.rb +2 -2
- data/lib/google/cloud/spanner/instance/list.rb +1 -1
- data/lib/google/cloud/spanner/partition.rb +4 -4
- data/lib/google/cloud/spanner/policy.rb +2 -2
- data/lib/google/cloud/spanner/service.rb +209 -297
- data/lib/google/cloud/spanner/session.rb +9 -9
- data/lib/google/cloud/spanner/snapshot.rb +2 -2
- data/lib/google/cloud/spanner/transaction.rb +2 -2
- data/lib/google/cloud/spanner/version.rb +1 -1
- metadata +18 -107
- data/lib/google/cloud/spanner/admin/database.rb +0 -149
- data/lib/google/cloud/spanner/admin/database/v1.rb +0 -147
- data/lib/google/cloud/spanner/admin/database/v1/credentials.rb +0 -46
- data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +0 -1513
- data/lib/google/cloud/spanner/admin/database/v1/database_admin_client_config.json +0 -111
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/iam_policy.rb +0 -64
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/options.rb +0 -33
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/policy.rb +0 -151
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/longrunning/operations.rb +0 -51
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/any.rb +0 -131
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/field_mask.rb +0 -222
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/rpc/status.rb +0 -39
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/backup.rb +0 -325
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +0 -368
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/type/expr.rb +0 -45
- data/lib/google/cloud/spanner/admin/instance.rb +0 -164
- data/lib/google/cloud/spanner/admin/instance/v1.rb +0 -162
- data/lib/google/cloud/spanner/admin/instance/v1/credentials.rb +0 -46
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/iam_policy.rb +0 -64
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/options.rb +0 -33
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/policy.rb +0 -151
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/longrunning/operations.rb +0 -51
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/any.rb +0 -131
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/field_mask.rb +0 -222
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/rpc/status.rb +0 -39
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +0 -334
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/type/expr.rb +0 -45
- data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +0 -975
- data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client_config.json +0 -76
- data/lib/google/cloud/spanner/v1.rb +0 -16
- data/lib/google/cloud/spanner/v1/credentials.rb +0 -42
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/any.rb +0 -131
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/duration.rb +0 -91
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/struct.rb +0 -74
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/spanner/v1/doc/google/rpc/status.rb +0 -39
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/keys.rb +0 -150
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +0 -95
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/query_plan.rb +0 -121
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/result_set.rb +0 -190
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +0 -570
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/transaction.rb +0 -432
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/type.rb +0 -112
- data/lib/google/cloud/spanner/v1/spanner_client.rb +0 -1485
- data/lib/google/cloud/spanner/v1/spanner_client_config.json +0 -121
- data/lib/google/spanner/admin/database/v1/backup_pb.rb +0 -98
- data/lib/google/spanner/admin/database/v1/common_pb.rb +0 -28
- data/lib/google/spanner/admin/database/v1/spanner_database_admin_pb.rb +0 -141
- data/lib/google/spanner/admin/database/v1/spanner_database_admin_services_pb.rb +0 -169
- data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_pb.rb +0 -125
- data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_services_pb.rb +0 -181
- data/lib/google/spanner/v1/keys_pb.rb +0 -34
- data/lib/google/spanner/v1/mutation_pb.rb +0 -39
- data/lib/google/spanner/v1/query_plan_pb.rb +0 -48
- data/lib/google/spanner/v1/result_set_pb.rb +0 -48
- data/lib/google/spanner/v1/spanner_pb.rb +0 -179
- data/lib/google/spanner/v1/spanner_services_pb.rb +0 -179
- data/lib/google/spanner/v1/transaction_pb.rb +0 -56
- data/lib/google/spanner/v1/type_pb.rb +0 -44
|
@@ -169,12 +169,12 @@ module Google
|
|
|
169
169
|
return field.to_grpc_type if field.respond_to? :to_grpc_type
|
|
170
170
|
|
|
171
171
|
if Array === field
|
|
172
|
-
|
|
172
|
+
V1::Type.new(
|
|
173
173
|
code: :ARRAY,
|
|
174
174
|
array_element_type: grpc_type_for_field(field.first)
|
|
175
175
|
)
|
|
176
176
|
else
|
|
177
|
-
|
|
177
|
+
V1::Type.new(code: field)
|
|
178
178
|
end
|
|
179
179
|
end
|
|
180
180
|
|
|
@@ -274,24 +274,24 @@ module Google
|
|
|
274
274
|
range_opts.delete :end_closed
|
|
275
275
|
end
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
V1::KeyRange.new range_opts
|
|
278
278
|
end
|
|
279
279
|
|
|
280
280
|
def to_key_set keys
|
|
281
|
-
return
|
|
281
|
+
return V1::KeySet.new(all: true) if keys.nil?
|
|
282
282
|
keys = [keys] unless keys.is_a? Array
|
|
283
|
-
return
|
|
283
|
+
return V1::KeySet.new(all: true) if keys.empty?
|
|
284
284
|
|
|
285
285
|
if keys_are_ranges? keys
|
|
286
286
|
key_ranges = keys.map { |r| to_key_range(r) }
|
|
287
|
-
return
|
|
287
|
+
return V1::KeySet.new(ranges: key_ranges)
|
|
288
288
|
end
|
|
289
289
|
|
|
290
290
|
key_list = keys.map do |key|
|
|
291
291
|
key = [key] unless key.is_a? Array
|
|
292
292
|
object_to_grpc_value(key).list_value
|
|
293
293
|
end
|
|
294
|
-
|
|
294
|
+
V1::KeySet.new keys: key_list
|
|
295
295
|
end
|
|
296
296
|
|
|
297
297
|
def keys_are_ranges? keys
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
require "google/cloud/spanner/v1/credentials"
|
|
16
|
+
require "google/cloud/spanner/v1/spanner/credentials"
|
|
17
17
|
|
|
18
18
|
module Google
|
|
19
19
|
module Cloud
|
|
@@ -37,7 +37,7 @@ module Google
|
|
|
37
37
|
#
|
|
38
38
|
# spanner.project_id #=> "my-project"
|
|
39
39
|
#
|
|
40
|
-
class Credentials < Google::Cloud::Spanner::V1::Credentials
|
|
40
|
+
class Credentials < Google::Cloud::Spanner::V1::Spanner::Credentials
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
end
|
|
@@ -216,9 +216,9 @@ module Google
|
|
|
216
216
|
##
|
|
217
217
|
# @private
|
|
218
218
|
def to_grpc_type
|
|
219
|
-
|
|
219
|
+
V1::Type.new(
|
|
220
220
|
code: :STRUCT,
|
|
221
|
-
struct_type:
|
|
221
|
+
struct_type: V1::StructType.new(
|
|
222
222
|
fields: @grpc_fields
|
|
223
223
|
)
|
|
224
224
|
)
|
|
@@ -229,7 +229,6 @@ module Google
|
|
|
229
229
|
true
|
|
230
230
|
end
|
|
231
231
|
|
|
232
|
-
|
|
233
232
|
# @private
|
|
234
233
|
DATBASE_OPERATION_METADAT_FILTER_TEMPLATE = [
|
|
235
234
|
"(metadata.@type:CreateDatabaseMetadata AND " \
|
|
@@ -248,10 +247,10 @@ module Google
|
|
|
248
247
|
# response.
|
|
249
248
|
#
|
|
250
249
|
# The response returns a list of
|
|
251
|
-
#
|
|
250
|
+
# `Google::Longrunning::Operation` long-running operations whose names
|
|
252
251
|
# are prefixed by a database name within the specified instance.
|
|
253
252
|
# The long-running operation
|
|
254
|
-
#
|
|
253
|
+
# `Google::Longrunning::Operation#metadata` metadata field type
|
|
255
254
|
# `metadata.type_url` describes the type of the metadata.
|
|
256
255
|
#
|
|
257
256
|
# The filter expression must specify the field name,
|
|
@@ -384,10 +383,9 @@ module Google
|
|
|
384
383
|
)
|
|
385
384
|
end
|
|
386
385
|
|
|
387
|
-
grpc = service.list_database_operations
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
page_size: page_size
|
|
386
|
+
grpc = service.list_database_operations instance_id,
|
|
387
|
+
filter: database_filter,
|
|
388
|
+
page_size: page_size
|
|
391
389
|
Database::Job::List.from_grpc grpc, service
|
|
392
390
|
end
|
|
393
391
|
|
|
@@ -573,20 +571,22 @@ module Google
|
|
|
573
571
|
#
|
|
574
572
|
# The permissions that can be checked on a database are:
|
|
575
573
|
#
|
|
576
|
-
#
|
|
577
|
-
#
|
|
578
|
-
#
|
|
579
|
-
#
|
|
580
|
-
#
|
|
581
|
-
#
|
|
582
|
-
#
|
|
583
|
-
#
|
|
584
|
-
#
|
|
585
|
-
#
|
|
586
|
-
#
|
|
587
|
-
#
|
|
588
|
-
#
|
|
589
|
-
#
|
|
574
|
+
# * spanner.databases.beginPartitionedDmlTransaction
|
|
575
|
+
# * spanner.databases.create
|
|
576
|
+
# * spanner.databases.createBackup
|
|
577
|
+
# * spanner.databases.list
|
|
578
|
+
# * spanner.databases.update
|
|
579
|
+
# * spanner.databases.updateDdl
|
|
580
|
+
# * spanner.databases.get
|
|
581
|
+
# * spanner.databases.getDdl
|
|
582
|
+
# * spanner.databases.getIamPolicy
|
|
583
|
+
# * spanner.databases.setIamPolicy
|
|
584
|
+
# * spanner.databases.beginReadOnlyTransaction
|
|
585
|
+
# * spanner.databases.beginOrRollbackReadWriteTransaction
|
|
586
|
+
# * spanner.databases.read
|
|
587
|
+
# * spanner.databases.select
|
|
588
|
+
# * spanner.databases.write
|
|
589
|
+
# * spanner.databases.drop
|
|
590
590
|
#
|
|
591
591
|
# @return [Array<Strings>] The permissions that have access.
|
|
592
592
|
#
|
|
@@ -611,7 +611,7 @@ module Google
|
|
|
611
611
|
|
|
612
612
|
##
|
|
613
613
|
# @private Creates a new Database instance from a
|
|
614
|
-
# Google::Spanner::Admin::Database::V1::Database
|
|
614
|
+
# `Google::Cloud::Spanner::Admin::Database::V1::Database`.
|
|
615
615
|
def self.from_grpc grpc, service
|
|
616
616
|
new grpc, service
|
|
617
617
|
end
|
|
@@ -52,7 +52,7 @@ module Google
|
|
|
52
52
|
#
|
|
53
53
|
class Job
|
|
54
54
|
##
|
|
55
|
-
# @private The
|
|
55
|
+
# @private The `Gapic::Operation` gRPC object.
|
|
56
56
|
attr_accessor :grpc
|
|
57
57
|
|
|
58
58
|
##
|
|
@@ -89,7 +89,7 @@ module Google
|
|
|
89
89
|
return nil unless done?
|
|
90
90
|
return nil unless @grpc.grpc_op.result == :response
|
|
91
91
|
return nil unless @grpc.results.instance_of? \
|
|
92
|
-
|
|
92
|
+
Admin::Database::V1::Database
|
|
93
93
|
Database.from_grpc @grpc.results, service
|
|
94
94
|
end
|
|
95
95
|
|
|
@@ -201,7 +201,7 @@ module Google
|
|
|
201
201
|
end
|
|
202
202
|
|
|
203
203
|
##
|
|
204
|
-
# @private New Database::Job from a
|
|
204
|
+
# @private New Database::Job from a `Gapic::Operation` object.
|
|
205
205
|
def self.from_grpc grpc, service
|
|
206
206
|
new.tap do |job|
|
|
207
207
|
job.instance_variable_set :@grpc, grpc
|
|
@@ -146,7 +146,7 @@ module Google
|
|
|
146
146
|
# @private
|
|
147
147
|
#
|
|
148
148
|
# New Database::Job::List from a
|
|
149
|
-
#
|
|
149
|
+
# `Gapic::PagedEnumerable<Google::Longrunning::Operation>`
|
|
150
150
|
# object. Operation object is a database operation.
|
|
151
151
|
#
|
|
152
152
|
def self.from_grpc grpc, service
|
|
@@ -154,7 +154,7 @@ module Google
|
|
|
154
154
|
service.databases.instance_variable_get "@operations_client"
|
|
155
155
|
jobs = new(Array(grpc.response.operations).map do |job_grpc|
|
|
156
156
|
Job.from_grpc \
|
|
157
|
-
|
|
157
|
+
Gapic::Operation.new(job_grpc, operations_client),
|
|
158
158
|
service
|
|
159
159
|
end)
|
|
160
160
|
jobs.grpc = grpc
|
|
@@ -142,7 +142,7 @@ module Google
|
|
|
142
142
|
|
|
143
143
|
##
|
|
144
144
|
# @private New Database::List from a
|
|
145
|
-
# Google::Spanner::Admin::Database::V1::ListDatabasesResponse
|
|
145
|
+
# `Google::Cloud::Spanner::Admin::Database::V1::ListDatabasesResponse`
|
|
146
146
|
# object.
|
|
147
147
|
def self.from_grpc grpc, service, instance_id, max = nil
|
|
148
148
|
databases = List.new(Array(grpc.databases).map do |database|
|
|
@@ -372,9 +372,9 @@ module Google
|
|
|
372
372
|
##
|
|
373
373
|
# @private
|
|
374
374
|
def to_grpc_type
|
|
375
|
-
|
|
375
|
+
V1::Type.new(
|
|
376
376
|
code: :STRUCT,
|
|
377
|
-
struct_type:
|
|
377
|
+
struct_type: V1::StructType.new(
|
|
378
378
|
fields: @grpc_fields
|
|
379
379
|
)
|
|
380
380
|
)
|
|
@@ -382,7 +382,7 @@ module Google
|
|
|
382
382
|
|
|
383
383
|
##
|
|
384
384
|
# @private Creates a new Fields instance from a
|
|
385
|
-
#
|
|
385
|
+
# V1::Metadata::Row_type::Fields.
|
|
386
386
|
def self.from_grpc fields
|
|
387
387
|
new([]).tap do |f|
|
|
388
388
|
f.instance_variable_set :@grpc_fields, Array(fields)
|
|
@@ -412,18 +412,18 @@ module Google
|
|
|
412
412
|
if pair.is_a?(Array)
|
|
413
413
|
if pair.count == 2
|
|
414
414
|
if pair.first.is_a?(Integer)
|
|
415
|
-
|
|
415
|
+
V1::StructType::Field.new(
|
|
416
416
|
type: Convert.grpc_type_for_field(pair.last)
|
|
417
417
|
)
|
|
418
418
|
else
|
|
419
|
-
|
|
419
|
+
V1::StructType::Field.new(
|
|
420
420
|
name: String(pair.first),
|
|
421
421
|
type: Convert.grpc_type_for_field(pair.last)
|
|
422
422
|
)
|
|
423
423
|
end
|
|
424
424
|
else
|
|
425
|
-
|
|
426
|
-
type:
|
|
425
|
+
V1::StructType::Field.new(
|
|
426
|
+
type: V1::Type.new(
|
|
427
427
|
code: :ARRAY,
|
|
428
428
|
array_element_type: Convert.grpc_type_for_field(pair.last)
|
|
429
429
|
)
|
|
@@ -435,7 +435,7 @@ module Google
|
|
|
435
435
|
unless pair.is_a?(Symbol)
|
|
436
436
|
raise ArgumentError, "type must be a symbol"
|
|
437
437
|
end
|
|
438
|
-
|
|
438
|
+
V1::StructType::Field.new(
|
|
439
439
|
type: Convert.grpc_type_for_field(pair)
|
|
440
440
|
)
|
|
441
441
|
end
|
|
@@ -342,10 +342,10 @@ module Google
|
|
|
342
342
|
# response.
|
|
343
343
|
#
|
|
344
344
|
# The response returns a list of
|
|
345
|
-
#
|
|
345
|
+
# `Google::Longrunning::Operation` long-running operations whose names
|
|
346
346
|
# are prefixed by a database name within the specified instance.
|
|
347
347
|
# The long-running operation
|
|
348
|
-
#
|
|
348
|
+
# `Google::Longrunning::Operation#metadata` metadata field type
|
|
349
349
|
# `metadata.type_url` describes the type of the metadata.
|
|
350
350
|
#
|
|
351
351
|
# The filter expression must specify the field name,
|
|
@@ -603,10 +603,10 @@ module Google
|
|
|
603
603
|
# response.
|
|
604
604
|
#
|
|
605
605
|
# The response returns a list of
|
|
606
|
-
#
|
|
606
|
+
# `Google::Longrunning::Operation` long-running operations whose names
|
|
607
607
|
# are prefixed by a backup name within the specified instance.
|
|
608
608
|
# The long-running operation
|
|
609
|
-
#
|
|
609
|
+
# `Google::Longrunning::Operation#metadata` metadata field type
|
|
610
610
|
# `metadata.type_url` describes the type of the metadata.
|
|
611
611
|
#
|
|
612
612
|
# The filter expression must specify the field name of an operation, a
|
|
@@ -856,7 +856,7 @@ module Google
|
|
|
856
856
|
|
|
857
857
|
##
|
|
858
858
|
# @private Creates a new Instance instance from a
|
|
859
|
-
# Google::Spanner::Admin::Instance::V1::Instance
|
|
859
|
+
# `Google::Cloud::Spanner::Admin::Instance::V1::Instance`.
|
|
860
860
|
def self.from_grpc grpc, service
|
|
861
861
|
new grpc, service
|
|
862
862
|
end
|
|
@@ -869,13 +869,6 @@ module Google
|
|
|
869
869
|
def ensure_service!
|
|
870
870
|
raise "Must have active connection to service" unless service
|
|
871
871
|
end
|
|
872
|
-
|
|
873
|
-
def instance_config_path name
|
|
874
|
-
return name if name.to_s.include? "/"
|
|
875
|
-
Admin::Instance::V1::InstanceAdminClient.instance_config_path(
|
|
876
|
-
project, name.to_s
|
|
877
|
-
)
|
|
878
|
-
end
|
|
879
872
|
end
|
|
880
873
|
end
|
|
881
874
|
end
|
|
@@ -142,7 +142,7 @@ module Google
|
|
|
142
142
|
|
|
143
143
|
##
|
|
144
144
|
# @private New Instance::Config::List from a
|
|
145
|
-
# Google::Spanner::Admin::Instance::V1::ListInstanceConfigsResponse
|
|
145
|
+
# `Google::Cloud::Spanner::Admin::Instance::V1::ListInstanceConfigsResponse`
|
|
146
146
|
# object.
|
|
147
147
|
def self.from_grpc grpc, service, max = nil
|
|
148
148
|
configs = List.new(Array(grpc.instance_configs).map do |config|
|
|
@@ -54,7 +54,7 @@ module Google
|
|
|
54
54
|
#
|
|
55
55
|
class Job
|
|
56
56
|
##
|
|
57
|
-
# @private The
|
|
57
|
+
# @private The `Gapic::Operation` gRPC object.
|
|
58
58
|
attr_accessor :grpc
|
|
59
59
|
|
|
60
60
|
##
|
|
@@ -219,7 +219,7 @@ module Google
|
|
|
219
219
|
end
|
|
220
220
|
|
|
221
221
|
##
|
|
222
|
-
# @private New Instance::Job from a
|
|
222
|
+
# @private New Instance::Job from a `Gapic::Operation` object.
|
|
223
223
|
def self.from_grpc grpc, service
|
|
224
224
|
new.tap do |job|
|
|
225
225
|
job.instance_variable_set :@grpc, grpc
|
|
@@ -139,7 +139,7 @@ module Google
|
|
|
139
139
|
|
|
140
140
|
##
|
|
141
141
|
# @private New Instance::List from a
|
|
142
|
-
# Google::Spanner::Admin::Instance::V1::ListInstancesResponse
|
|
142
|
+
# `Google::Cloud::Spanner::Admin::Instance::V1::ListInstancesResponse`
|
|
143
143
|
# object.
|
|
144
144
|
def self.from_grpc grpc, service, max = nil
|
|
145
145
|
instances = List.new(Array(grpc.instances).map do |instance|
|
|
@@ -172,13 +172,13 @@ module Google
|
|
|
172
172
|
new.tap do |p|
|
|
173
173
|
if data[:execute]
|
|
174
174
|
execute_sql_grpc = \
|
|
175
|
-
|
|
175
|
+
V1::ExecuteSqlRequest.decode(
|
|
176
176
|
Base64.decode64(data[:execute])
|
|
177
177
|
)
|
|
178
178
|
p.instance_variable_set :@execute, execute_sql_grpc
|
|
179
179
|
end
|
|
180
180
|
if data[:read]
|
|
181
|
-
read_grpc =
|
|
181
|
+
read_grpc = V1::ReadRequest.decode \
|
|
182
182
|
Base64.decode64(data[:read])
|
|
183
183
|
p.instance_variable_set :@read, read_grpc
|
|
184
184
|
end
|
|
@@ -194,7 +194,7 @@ module Google
|
|
|
194
194
|
end
|
|
195
195
|
|
|
196
196
|
##
|
|
197
|
-
# @private New Partition from a Google::Spanner::V1::ExecuteSqlRequest
|
|
197
|
+
# @private New Partition from a `Google::Cloud::Spanner::V1::ExecuteSqlRequest`
|
|
198
198
|
# object.
|
|
199
199
|
def self.from_execute_sql_grpc grpc
|
|
200
200
|
new.tap do |p|
|
|
@@ -203,7 +203,7 @@ module Google
|
|
|
203
203
|
end
|
|
204
204
|
|
|
205
205
|
##
|
|
206
|
-
# @private New Partition from a Google::Spanner::V1::ReadRequest object.
|
|
206
|
+
# @private New Partition from a `Google::Cloud::Spanner::V1::ReadRequest` object.
|
|
207
207
|
def self.from_read_grpc grpc
|
|
208
208
|
new.tap do |p|
|
|
209
209
|
p.instance_variable_set :@read, grpc
|
|
@@ -159,7 +159,7 @@ module Google
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
##
|
|
162
|
-
# @private Convert the Policy to a Google::Iam::V1::Policy object.
|
|
162
|
+
# @private Convert the Policy to a `Google::Iam::V1::Policy` object.
|
|
163
163
|
def to_grpc
|
|
164
164
|
Google::Iam::V1::Policy.new(
|
|
165
165
|
etag: etag,
|
|
@@ -174,7 +174,7 @@ module Google
|
|
|
174
174
|
end
|
|
175
175
|
|
|
176
176
|
##
|
|
177
|
-
# @private New Policy from a Google::Iam::V1::Policy object.
|
|
177
|
+
# @private New Policy from a `Google::Iam::V1::Policy` object.
|
|
178
178
|
def self.from_grpc grpc
|
|
179
179
|
roles = grpc.bindings.each_with_object({}) do |binding, memo|
|
|
180
180
|
memo[binding.role] = binding.members.to_a
|
|
@@ -20,7 +20,6 @@ require "google/cloud/spanner/v1"
|
|
|
20
20
|
require "google/cloud/spanner/admin/instance/v1"
|
|
21
21
|
require "google/cloud/spanner/admin/database/v1"
|
|
22
22
|
require "google/cloud/spanner/convert"
|
|
23
|
-
require "uri"
|
|
24
23
|
|
|
25
24
|
module Google
|
|
26
25
|
module Cloud
|
|
@@ -29,18 +28,17 @@ module Google
|
|
|
29
28
|
# @private Represents the gRPC Spanner service, including all the API
|
|
30
29
|
# methods.
|
|
31
30
|
class Service
|
|
32
|
-
attr_accessor :project, :credentials, :timeout, :
|
|
33
|
-
:
|
|
31
|
+
attr_accessor :project, :credentials, :timeout, :host, :lib_name,
|
|
32
|
+
:lib_version
|
|
34
33
|
|
|
35
34
|
##
|
|
36
35
|
# Creates a new Service instance.
|
|
37
|
-
def initialize project, credentials,
|
|
38
|
-
|
|
36
|
+
def initialize project, credentials,
|
|
37
|
+
host: nil, timeout: nil, lib_name: nil, lib_version: nil
|
|
39
38
|
@project = project
|
|
40
39
|
@credentials = credentials
|
|
41
|
-
@host = host
|
|
40
|
+
@host = host
|
|
42
41
|
@timeout = timeout
|
|
43
|
-
@client_config = client_config || {}
|
|
44
42
|
@lib_name = lib_name
|
|
45
43
|
@lib_version = lib_version
|
|
46
44
|
end
|
|
@@ -64,45 +62,42 @@ module Google
|
|
|
64
62
|
def service
|
|
65
63
|
return mocked_service if mocked_service
|
|
66
64
|
@service ||= \
|
|
67
|
-
V1::
|
|
68
|
-
credentials
|
|
69
|
-
timeout
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
)
|
|
65
|
+
V1::Spanner::Client.new do |config|
|
|
66
|
+
config.credentials = channel
|
|
67
|
+
config.timeout = timeout if timeout
|
|
68
|
+
config.endpoint = host if host
|
|
69
|
+
config.lib_name = lib_name_with_prefix
|
|
70
|
+
config.lib_version = Google::Cloud::Spanner::VERSION
|
|
71
|
+
config.metadata = { "google-cloud-resource-prefix" => "projects/#{@project}" }
|
|
72
|
+
end
|
|
76
73
|
end
|
|
77
74
|
attr_accessor :mocked_service
|
|
78
75
|
|
|
79
76
|
def instances
|
|
80
77
|
return mocked_instances if mocked_instances
|
|
81
78
|
@instances ||= \
|
|
82
|
-
Admin::Instance::V1::
|
|
83
|
-
credentials
|
|
84
|
-
timeout
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
)
|
|
79
|
+
Admin::Instance::V1::InstanceAdmin::Client.new do |config|
|
|
80
|
+
config.credentials = channel
|
|
81
|
+
config.timeout = timeout if timeout
|
|
82
|
+
config.endpoint = host if host
|
|
83
|
+
config.lib_name = lib_name_with_prefix
|
|
84
|
+
config.lib_version = Google::Cloud::Spanner::VERSION
|
|
85
|
+
config.metadata = { "google-cloud-resource-prefix" => "projects/#{@project}" }
|
|
86
|
+
end
|
|
91
87
|
end
|
|
92
88
|
attr_accessor :mocked_instances
|
|
93
89
|
|
|
94
90
|
def databases
|
|
95
91
|
return mocked_databases if mocked_databases
|
|
96
92
|
@databases ||= \
|
|
97
|
-
Admin::Database::V1::
|
|
98
|
-
credentials
|
|
99
|
-
timeout
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
)
|
|
93
|
+
Admin::Database::V1::DatabaseAdmin::Client.new do |config|
|
|
94
|
+
config.credentials = channel
|
|
95
|
+
config.timeout = timeout if timeout
|
|
96
|
+
config.endpoint = host if host
|
|
97
|
+
config.lib_name = lib_name_with_prefix
|
|
98
|
+
config.lib_version = Google::Cloud::Spanner::VERSION
|
|
99
|
+
config.metadata = { "google-cloud-resource-prefix" => "projects/#{@project}" }
|
|
100
|
+
end
|
|
106
101
|
end
|
|
107
102
|
attr_accessor :mocked_databases
|
|
108
103
|
|
|
@@ -111,194 +106,148 @@ module Google
|
|
|
111
106
|
end
|
|
112
107
|
|
|
113
108
|
def list_instances token: nil, max: nil
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
paged_enum = instances.list_instances project_path,
|
|
119
|
-
page_size: max,
|
|
120
|
-
options: call_options
|
|
121
|
-
|
|
122
|
-
paged_enum.page.response
|
|
123
|
-
end
|
|
109
|
+
paged_enum = instances.list_instances parent: project_path,
|
|
110
|
+
page_size: max,
|
|
111
|
+
page_token: token
|
|
112
|
+
paged_enum.response
|
|
124
113
|
end
|
|
125
114
|
|
|
126
115
|
def get_instance name
|
|
127
|
-
|
|
128
|
-
instances.get_instance instance_path(name)
|
|
129
|
-
end
|
|
116
|
+
instances.get_instance name: instance_path(name)
|
|
130
117
|
end
|
|
131
118
|
|
|
132
119
|
def create_instance instance_id, name: nil, config: nil, nodes: nil,
|
|
133
120
|
labels: nil
|
|
134
121
|
labels = Hash[labels.map { |k, v| [String(k), String(v)] }] if labels
|
|
135
122
|
|
|
136
|
-
create_obj =
|
|
123
|
+
create_obj = Admin::Instance::V1::Instance.new({
|
|
137
124
|
display_name: name, config: instance_config_path(config),
|
|
138
125
|
node_count: nodes, labels: labels
|
|
139
126
|
}.delete_if { |_, v| v.nil? })
|
|
140
127
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
128
|
+
instances.create_instance parent: project_path,
|
|
129
|
+
instance_id: instance_id,
|
|
130
|
+
instance: create_obj
|
|
144
131
|
end
|
|
145
132
|
|
|
146
|
-
def update_instance
|
|
133
|
+
def update_instance instance
|
|
147
134
|
mask = Google::Protobuf::FieldMask.new(
|
|
148
135
|
paths: %w[display_name node_count labels]
|
|
149
136
|
)
|
|
150
137
|
|
|
151
|
-
|
|
152
|
-
instances.update_instance instance_obj, mask
|
|
153
|
-
end
|
|
138
|
+
instances.update_instance instance: instance, field_mask: mask
|
|
154
139
|
end
|
|
155
140
|
|
|
156
141
|
def delete_instance name
|
|
157
|
-
|
|
158
|
-
instances.delete_instance instance_path(name)
|
|
159
|
-
end
|
|
142
|
+
instances.delete_instance name: instance_path(name)
|
|
160
143
|
end
|
|
161
144
|
|
|
162
145
|
def get_instance_policy name
|
|
163
|
-
|
|
164
|
-
instances.get_iam_policy instance_path(name)
|
|
165
|
-
end
|
|
146
|
+
instances.get_iam_policy resource: instance_path(name)
|
|
166
147
|
end
|
|
167
148
|
|
|
168
149
|
def set_instance_policy name, new_policy
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
end
|
|
150
|
+
instances.set_iam_policy resource: instance_path(name),
|
|
151
|
+
policy: new_policy
|
|
172
152
|
end
|
|
173
153
|
|
|
174
154
|
def test_instance_permissions name, permissions
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
end
|
|
155
|
+
instances.test_iam_permissions resource: instance_path(name),
|
|
156
|
+
permissions: permissions
|
|
178
157
|
end
|
|
179
158
|
|
|
180
159
|
def list_instance_configs token: nil, max: nil
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
execute do
|
|
185
|
-
paged_enum = instances.list_instance_configs project_path,
|
|
186
|
-
page_size: max,
|
|
187
|
-
options: call_options
|
|
188
|
-
|
|
189
|
-
paged_enum.page.response
|
|
190
|
-
end
|
|
160
|
+
paged_enum = instances.list_instance_configs \
|
|
161
|
+
parent: project_path, page_size: max, page_token: token
|
|
162
|
+
paged_enum.response
|
|
191
163
|
end
|
|
192
164
|
|
|
193
165
|
def get_instance_config name
|
|
194
|
-
|
|
195
|
-
instances.get_instance_config instance_config_path(name)
|
|
196
|
-
end
|
|
166
|
+
instances.get_instance_config name: instance_config_path(name)
|
|
197
167
|
end
|
|
198
168
|
|
|
199
169
|
def list_databases instance_id, token: nil, max: nil
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
page_size: max,
|
|
206
|
-
options: call_options
|
|
207
|
-
|
|
208
|
-
paged_enum.page.response
|
|
209
|
-
end
|
|
170
|
+
paged_enum = databases.list_databases \
|
|
171
|
+
parent: instance_path(instance_id),
|
|
172
|
+
page_size: max,
|
|
173
|
+
page_token: token
|
|
174
|
+
paged_enum.response
|
|
210
175
|
end
|
|
211
176
|
|
|
212
177
|
def get_database instance_id, database_id
|
|
213
|
-
|
|
214
|
-
databases.get_database database_path(instance_id, database_id)
|
|
215
|
-
end
|
|
178
|
+
databases.get_database name: database_path(instance_id, database_id)
|
|
216
179
|
end
|
|
217
180
|
|
|
218
181
|
def create_database instance_id, database_id, statements: []
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
extra_statements: Array(statements)
|
|
224
|
-
end
|
|
182
|
+
databases.create_database \
|
|
183
|
+
parent: instance_path(instance_id),
|
|
184
|
+
create_statement: "CREATE DATABASE `#{database_id}`",
|
|
185
|
+
extra_statements: Array(statements)
|
|
225
186
|
end
|
|
226
187
|
|
|
227
188
|
def drop_database instance_id, database_id
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
end
|
|
189
|
+
databases.drop_database \
|
|
190
|
+
database: database_path(instance_id, database_id)
|
|
231
191
|
end
|
|
232
192
|
|
|
233
193
|
def get_database_ddl instance_id, database_id
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
end
|
|
194
|
+
databases.get_database_ddl \
|
|
195
|
+
database: database_path(instance_id, database_id)
|
|
237
196
|
end
|
|
238
197
|
|
|
239
198
|
def update_database_ddl instance_id, database_id, statements: [],
|
|
240
199
|
operation_id: nil
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
operation_id: operation_id
|
|
246
|
-
end
|
|
200
|
+
databases.update_database_ddl \
|
|
201
|
+
database: database_path(instance_id, database_id),
|
|
202
|
+
statements: Array(statements),
|
|
203
|
+
operation_id: operation_id
|
|
247
204
|
end
|
|
248
205
|
|
|
249
206
|
def get_database_policy instance_id, database_id
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
end
|
|
207
|
+
databases.get_iam_policy \
|
|
208
|
+
resource: database_path(instance_id, database_id)
|
|
253
209
|
end
|
|
254
210
|
|
|
255
211
|
def set_database_policy instance_id, database_id, new_policy
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
end
|
|
212
|
+
databases.set_iam_policy \
|
|
213
|
+
resource: database_path(instance_id, database_id),
|
|
214
|
+
policy: new_policy
|
|
260
215
|
end
|
|
261
216
|
|
|
262
217
|
def test_database_permissions instance_id, database_id, permissions
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
end
|
|
218
|
+
databases.test_iam_permissions \
|
|
219
|
+
resource: database_path(instance_id, database_id),
|
|
220
|
+
permissions: permissions
|
|
267
221
|
end
|
|
268
222
|
|
|
269
223
|
def get_session session_name
|
|
270
224
|
opts = default_options_from_session session_name
|
|
271
|
-
|
|
272
|
-
service.get_session session_name, options: opts
|
|
273
|
-
end
|
|
225
|
+
service.get_session({ name: session_name }, opts)
|
|
274
226
|
end
|
|
275
227
|
|
|
276
228
|
def create_session database_name, labels: nil
|
|
277
229
|
opts = default_options_from_session database_name
|
|
278
|
-
session =
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
end
|
|
230
|
+
session = V1::Session.new labels: labels if labels
|
|
231
|
+
service.create_session(
|
|
232
|
+
{ database: database_name, session: session }, opts
|
|
233
|
+
)
|
|
283
234
|
end
|
|
284
235
|
|
|
285
236
|
def batch_create_sessions database_name, session_count, labels: nil
|
|
286
237
|
opts = default_options_from_session database_name
|
|
287
|
-
session =
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
238
|
+
session = V1::Session.new labels: labels if labels
|
|
239
|
+
# The response may have fewer sessions than requested in the RPC.
|
|
240
|
+
request = {
|
|
241
|
+
database: database_name,
|
|
242
|
+
session_count: session_count,
|
|
243
|
+
session_template: session
|
|
244
|
+
}
|
|
245
|
+
service.batch_create_sessions request, opts
|
|
295
246
|
end
|
|
296
247
|
|
|
297
248
|
def delete_session session_name
|
|
298
249
|
opts = default_options_from_session session_name
|
|
299
|
-
|
|
300
|
-
service.delete_session session_name, options: opts
|
|
301
|
-
end
|
|
250
|
+
service.delete_session({ name: session_name }, opts)
|
|
302
251
|
end
|
|
303
252
|
|
|
304
253
|
def execute_streaming_sql session_name, sql, transaction: nil,
|
|
@@ -306,29 +255,31 @@ module Google
|
|
|
306
255
|
partition_token: nil, seqno: nil,
|
|
307
256
|
query_options: nil
|
|
308
257
|
opts = default_options_from_session session_name
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
258
|
+
request = {
|
|
259
|
+
session: session_name,
|
|
260
|
+
sql: sql,
|
|
261
|
+
transaction: transaction,
|
|
262
|
+
params: params,
|
|
263
|
+
param_types: types,
|
|
264
|
+
resume_token: resume_token,
|
|
265
|
+
partition_token: partition_token,
|
|
266
|
+
seqno: seqno,
|
|
267
|
+
query_options: query_options
|
|
268
|
+
}
|
|
269
|
+
service.execute_streaming_sql request, opts
|
|
320
270
|
end
|
|
321
271
|
|
|
322
272
|
def execute_batch_dml session_name, transaction, statements, seqno
|
|
323
273
|
opts = default_options_from_session session_name
|
|
324
274
|
statements = statements.map(&:to_grpc)
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
275
|
+
request = {
|
|
276
|
+
session: session_name,
|
|
277
|
+
transaction: transaction,
|
|
278
|
+
statements: statements,
|
|
279
|
+
seqno: seqno
|
|
280
|
+
}
|
|
281
|
+
results = service.execute_batch_dml request, opts
|
|
282
|
+
|
|
332
283
|
if results.status.code.zero?
|
|
333
284
|
results.result_sets.map { |rs| rs.stats.row_count_exact }
|
|
334
285
|
else
|
|
@@ -344,13 +295,13 @@ module Google
|
|
|
344
295
|
index: nil, transaction: nil, limit: nil,
|
|
345
296
|
resume_token: nil, partition_token: nil
|
|
346
297
|
opts = default_options_from_session session_name
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
298
|
+
request = {
|
|
299
|
+
session: session_name, table: table_name, columns: columns,
|
|
300
|
+
key_set: keys, transaction: transaction, index: index,
|
|
301
|
+
limit: limit, resume_token: resume_token,
|
|
302
|
+
partition_token: partition_token
|
|
303
|
+
}
|
|
304
|
+
service.streaming_read request, opts
|
|
354
305
|
end
|
|
355
306
|
|
|
356
307
|
def partition_read session_name, table_name, columns, transaction,
|
|
@@ -360,13 +311,12 @@ module Google
|
|
|
360
311
|
max_partitions
|
|
361
312
|
|
|
362
313
|
opts = default_options_from_session session_name
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
end
|
|
314
|
+
request = {
|
|
315
|
+
session: session_name, table: table_name, key_set: keys,
|
|
316
|
+
transaction: transaction, index: index, columns: columns,
|
|
317
|
+
partition_options: partition_opts
|
|
318
|
+
}
|
|
319
|
+
service.partition_read request, opts
|
|
370
320
|
end
|
|
371
321
|
|
|
372
322
|
def partition_query session_name, sql, transaction, params: nil,
|
|
@@ -376,53 +326,48 @@ module Google
|
|
|
376
326
|
max_partitions
|
|
377
327
|
|
|
378
328
|
opts = default_options_from_session session_name
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
partition_options: partition_opts, options: opts
|
|
386
|
-
end
|
|
329
|
+
request = {
|
|
330
|
+
session: session_name, sql: sql, transaction: transaction,
|
|
331
|
+
params: params, param_types: types,
|
|
332
|
+
partition_options: partition_opts
|
|
333
|
+
}
|
|
334
|
+
service.partition_query request, opts
|
|
387
335
|
end
|
|
388
336
|
|
|
389
337
|
def commit session_name, mutations = [], transaction_id: nil
|
|
390
338
|
tx_opts = nil
|
|
391
339
|
if transaction_id.nil?
|
|
392
|
-
tx_opts =
|
|
393
|
-
read_write:
|
|
340
|
+
tx_opts = V1::TransactionOptions.new(
|
|
341
|
+
read_write: V1::TransactionOptions::ReadWrite.new
|
|
394
342
|
)
|
|
395
343
|
end
|
|
396
344
|
opts = default_options_from_session session_name
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
end
|
|
345
|
+
request = {
|
|
346
|
+
session: session_name, transaction_id: transaction_id,
|
|
347
|
+
single_use_transaction: tx_opts, mutations: mutations
|
|
348
|
+
}
|
|
349
|
+
service.commit request, opts
|
|
403
350
|
end
|
|
404
351
|
|
|
405
352
|
def rollback session_name, transaction_id
|
|
406
353
|
opts = default_options_from_session session_name
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
end
|
|
354
|
+
request = { session: session_name, transaction_id: transaction_id }
|
|
355
|
+
service.rollback request, opts
|
|
410
356
|
end
|
|
411
357
|
|
|
412
358
|
def begin_transaction session_name
|
|
413
|
-
tx_opts =
|
|
414
|
-
read_write:
|
|
359
|
+
tx_opts = V1::TransactionOptions.new(
|
|
360
|
+
read_write: V1::TransactionOptions::ReadWrite.new
|
|
415
361
|
)
|
|
416
362
|
opts = default_options_from_session session_name
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
end
|
|
363
|
+
request = { session: session_name, options: tx_opts }
|
|
364
|
+
service.begin_transaction request, opts
|
|
420
365
|
end
|
|
421
366
|
|
|
422
367
|
def create_snapshot session_name, strong: nil, timestamp: nil,
|
|
423
368
|
staleness: nil
|
|
424
|
-
tx_opts =
|
|
425
|
-
read_only:
|
|
369
|
+
tx_opts = V1::TransactionOptions.new(
|
|
370
|
+
read_only: V1::TransactionOptions::ReadOnly.new(
|
|
426
371
|
{
|
|
427
372
|
strong: strong,
|
|
428
373
|
read_timestamp: Convert.time_to_timestamp(timestamp),
|
|
@@ -432,20 +377,17 @@ module Google
|
|
|
432
377
|
)
|
|
433
378
|
)
|
|
434
379
|
opts = default_options_from_session session_name
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
end
|
|
380
|
+
request = { session: session_name, options: tx_opts }
|
|
381
|
+
service.begin_transaction request, opts
|
|
438
382
|
end
|
|
439
383
|
|
|
440
384
|
def create_pdml session_name
|
|
441
|
-
tx_opts =
|
|
442
|
-
partitioned_dml:
|
|
443
|
-
Google::Spanner::V1::TransactionOptions::PartitionedDml.new
|
|
385
|
+
tx_opts = V1::TransactionOptions.new(
|
|
386
|
+
partitioned_dml: V1::TransactionOptions::PartitionedDml.new
|
|
444
387
|
)
|
|
445
388
|
opts = default_options_from_session session_name
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
end
|
|
389
|
+
request = { session: session_name, options: tx_opts }
|
|
390
|
+
service.begin_transaction request, opts
|
|
449
391
|
end
|
|
450
392
|
|
|
451
393
|
def create_backup instance_id, database_id, backup_id, expire_time
|
|
@@ -453,70 +395,61 @@ module Google
|
|
|
453
395
|
database: database_path(instance_id, database_id),
|
|
454
396
|
expire_time: expire_time
|
|
455
397
|
}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
backup_id,
|
|
460
|
-
backup
|
|
461
|
-
end
|
|
398
|
+
databases.create_backup parent: instance_path(instance_id),
|
|
399
|
+
backup_id: backup_id,
|
|
400
|
+
backup: backup
|
|
462
401
|
end
|
|
463
402
|
|
|
464
403
|
def get_backup instance_id, backup_id
|
|
465
|
-
|
|
466
|
-
databases.get_backup backup_path(instance_id, backup_id)
|
|
467
|
-
end
|
|
404
|
+
databases.get_backup name: backup_path(instance_id, backup_id)
|
|
468
405
|
end
|
|
469
406
|
|
|
470
407
|
def update_backup backup, update_mask
|
|
471
|
-
|
|
472
|
-
databases.update_backup backup, update_mask
|
|
473
|
-
end
|
|
408
|
+
databases.update_backup backup: backup, update_mask: update_mask
|
|
474
409
|
end
|
|
475
410
|
|
|
476
411
|
def delete_backup instance_id, backup_id
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
412
|
+
databases.delete_backup name: backup_path(instance_id, backup_id)
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def list_backups instance_id,
|
|
416
|
+
filter: nil, page_size: nil, page_token: nil
|
|
417
|
+
databases.list_backups parent: instance_path(instance_id),
|
|
418
|
+
filter: filter,
|
|
419
|
+
page_size: page_size,
|
|
420
|
+
page_token: page_token
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
def list_database_operations instance_id,
|
|
424
|
+
filter: nil,
|
|
425
|
+
page_size: nil,
|
|
426
|
+
page_token: nil
|
|
427
|
+
databases.list_database_operations(
|
|
428
|
+
parent: instance_path(instance_id),
|
|
429
|
+
filter: filter,
|
|
430
|
+
page_size: page_size,
|
|
431
|
+
page_token: page_token
|
|
432
|
+
)
|
|
498
433
|
end
|
|
499
434
|
|
|
500
|
-
def list_backup_operations instance_id,
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
435
|
+
def list_backup_operations instance_id,
|
|
436
|
+
filter: nil, page_size: nil,
|
|
437
|
+
page_token: nil
|
|
438
|
+
databases.list_backup_operations(
|
|
439
|
+
parent: instance_path(instance_id),
|
|
440
|
+
filter: filter,
|
|
441
|
+
page_size: page_size,
|
|
442
|
+
page_token: page_token
|
|
443
|
+
)
|
|
507
444
|
end
|
|
508
445
|
|
|
509
|
-
def restore_database
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
instance_path(database_instance_id),
|
|
517
|
-
database_id,
|
|
518
|
-
backup: backup_path(backup_instance_id, backup_id)
|
|
519
|
-
end
|
|
446
|
+
def restore_database backup_instance_id, backup_id,
|
|
447
|
+
database_instance_id, database_id
|
|
448
|
+
databases.restore_database(
|
|
449
|
+
parent: instance_path(database_instance_id),
|
|
450
|
+
database_id: database_id,
|
|
451
|
+
backup: backup_path(backup_instance_id, backup_id)
|
|
452
|
+
)
|
|
520
453
|
end
|
|
521
454
|
|
|
522
455
|
def inspect
|
|
@@ -525,16 +458,6 @@ module Google
|
|
|
525
458
|
|
|
526
459
|
protected
|
|
527
460
|
|
|
528
|
-
def service_address
|
|
529
|
-
return nil if host.nil?
|
|
530
|
-
URI.parse("//#{host}").host
|
|
531
|
-
end
|
|
532
|
-
|
|
533
|
-
def service_port
|
|
534
|
-
return nil if host.nil?
|
|
535
|
-
URI.parse("//#{host}").port
|
|
536
|
-
end
|
|
537
|
-
|
|
538
461
|
def lib_name_with_prefix
|
|
539
462
|
return "gccl" if [nil, "gccl"].include? lib_name
|
|
540
463
|
|
|
@@ -545,13 +468,12 @@ module Google
|
|
|
545
468
|
|
|
546
469
|
def default_options_from_session session_name
|
|
547
470
|
default_prefix = session_name.split("/sessions/").first
|
|
548
|
-
|
|
549
|
-
{ "google-cloud-resource-prefix" => default_prefix }
|
|
471
|
+
{ metadata: { "google-cloud-resource-prefix" => default_prefix } }
|
|
550
472
|
end
|
|
551
473
|
|
|
552
474
|
def partition_options partition_size_bytes, max_partitions
|
|
553
475
|
return nil unless partition_size_bytes || max_partitions
|
|
554
|
-
partition_opts =
|
|
476
|
+
partition_opts = V1::PartitionOptions.new
|
|
555
477
|
if partition_size_bytes
|
|
556
478
|
partition_opts.partition_size_bytes = partition_size_bytes
|
|
557
479
|
end
|
|
@@ -560,48 +482,38 @@ module Google
|
|
|
560
482
|
end
|
|
561
483
|
|
|
562
484
|
def project_path
|
|
563
|
-
Admin::Instance::V1::
|
|
485
|
+
Admin::Instance::V1::InstanceAdmin::Paths.project_path \
|
|
486
|
+
project: project
|
|
564
487
|
end
|
|
565
488
|
|
|
566
489
|
def instance_path name
|
|
567
490
|
return name if name.to_s.include? "/"
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
491
|
+
|
|
492
|
+
Admin::Instance::V1::InstanceAdmin::Paths.instance_path \
|
|
493
|
+
project: project, instance: name
|
|
571
494
|
end
|
|
572
495
|
|
|
573
496
|
def instance_config_path name
|
|
574
497
|
return name if name.to_s.include? "/"
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
498
|
+
|
|
499
|
+
Admin::Instance::V1::InstanceAdmin::Paths.instance_config_path \
|
|
500
|
+
project: project, instance_config: name
|
|
578
501
|
end
|
|
579
502
|
|
|
580
503
|
def database_path instance_id, database_id
|
|
581
|
-
Admin::Database::V1::
|
|
582
|
-
project, instance_id, database_id
|
|
583
|
-
)
|
|
504
|
+
Admin::Database::V1::DatabaseAdmin::Paths.database_path \
|
|
505
|
+
project: project, instance: instance_id, database: database_id
|
|
584
506
|
end
|
|
585
507
|
|
|
586
508
|
def session_path instance_id, database_id, session_id
|
|
587
|
-
V1::
|
|
588
|
-
project, instance_id, database_id,
|
|
589
|
-
|
|
509
|
+
V1::Spanner::Paths.session_path \
|
|
510
|
+
project: project, instance: instance_id, database: database_id,
|
|
511
|
+
session: session_id
|
|
590
512
|
end
|
|
591
513
|
|
|
592
514
|
def backup_path instance_id, backup_id
|
|
593
|
-
Admin::Database::V1::
|
|
594
|
-
project, instance_id, backup_id
|
|
595
|
-
)
|
|
596
|
-
end
|
|
597
|
-
|
|
598
|
-
def execute
|
|
599
|
-
yield
|
|
600
|
-
rescue Google::Gax::GaxError => e
|
|
601
|
-
# GaxError wraps BadStatus, but exposes it as #cause
|
|
602
|
-
raise Google::Cloud::Error.from_error(e.cause)
|
|
603
|
-
rescue GRPC::BadStatus => e
|
|
604
|
-
raise Google::Cloud::Error.from_error(e)
|
|
515
|
+
Admin::Database::V1::DatabaseAdmin::Paths.backup_path \
|
|
516
|
+
project: project, instance: instance_id, backup: backup_id
|
|
605
517
|
end
|
|
606
518
|
end
|
|
607
519
|
end
|