google-cloud-spanner 2.10.0 → 2.12.1
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 +25 -0
- data/OVERVIEW.md +69 -50
- data/lib/google/cloud/spanner/admin/database.rb +324 -0
- data/lib/google/cloud/spanner/admin/instance.rb +324 -0
- data/lib/google/cloud/spanner/backup/job/list.rb +7 -0
- data/lib/google/cloud/spanner/backup/job.rb +7 -0
- data/lib/google/cloud/spanner/backup/list.rb +7 -0
- data/lib/google/cloud/spanner/backup/restore/job.rb +7 -0
- data/lib/google/cloud/spanner/backup.rb +14 -0
- data/lib/google/cloud/spanner/database/backup_info.rb +5 -0
- data/lib/google/cloud/spanner/database/job/list.rb +7 -0
- data/lib/google/cloud/spanner/database/job.rb +7 -0
- data/lib/google/cloud/spanner/database/list.rb +7 -0
- data/lib/google/cloud/spanner/database/restore_info.rb +5 -0
- data/lib/google/cloud/spanner/database.rb +13 -0
- data/lib/google/cloud/spanner/instance/config/list.rb +7 -0
- data/lib/google/cloud/spanner/instance/config.rb +7 -0
- data/lib/google/cloud/spanner/instance/job.rb +7 -0
- data/lib/google/cloud/spanner/instance/list.rb +7 -0
- data/lib/google/cloud/spanner/instance.rb +14 -0
- data/lib/google/cloud/spanner/project.rb +35 -0
- data/lib/google/cloud/spanner/service.rb +6 -1
- data/lib/google/cloud/spanner/version.rb +1 -1
- data/lib/google/cloud/spanner.rb +3 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 542daf50ed73132fb41ef599e01527b0f90ea9c345c0a67325eb9fd6fc2a3d0b
|
4
|
+
data.tar.gz: 1768835bfc4a7f9c0ed168d9b56c09247e3bab6da4b53cad6e896378520cca7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69cd1d9cdca59e2878b96476245b2395912afc68c9a94cae437e050dd7abe3b11a6d5bd8677822e7846c7cb3644a0cfc303d5d86e79b73b4a36fa8b9f823581b
|
7
|
+
data.tar.gz: b135eb58d7ca1f2673f6504e8e6fca8eb8e8ebb9ca85fd94bfa19ff75e6af1127ab9da6cbf6798a060d1ee2faab05cc91a75355b0e45e060308901311ebd354d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 2.12.1 / 2022-02-16
|
4
|
+
|
5
|
+
#### Bug Fixes
|
6
|
+
|
7
|
+
* pass quota_project_id from credentials
|
8
|
+
|
9
|
+
### 2.12.0 / 2022-01-11
|
10
|
+
|
11
|
+
No significant changes.
|
12
|
+
|
13
|
+
### 2.11.0 / 2021-12-10
|
14
|
+
|
15
|
+
#### Features
|
16
|
+
|
17
|
+
* add admin instance wrapper.
|
18
|
+
* Updated benchwrapper and proto for spanner.
|
19
|
+
* use gRPC clients for instance/database management.
|
20
|
+
* wrapper to create generated admin database client.
|
21
|
+
|
22
|
+
### 2.10.1 / 2021-11-09
|
23
|
+
|
24
|
+
#### Documentation
|
25
|
+
|
26
|
+
* Add documentation for quota_project Configuration attribute
|
27
|
+
|
3
28
|
### 2.10.0 / 2021-08-24
|
4
29
|
|
5
30
|
#### Features
|
data/OVERVIEW.md
CHANGED
@@ -23,29 +23,36 @@ create an instance, you choose where your data is stored and how many nodes are
|
|
23
23
|
used for your data. (For more information, see [Configuration
|
24
24
|
Guide](https://googleapis.dev/ruby/stackdriver/latest/file.INSTRUMENTATION_CONFIGURATION.html).
|
25
25
|
|
26
|
-
Use {Google::Cloud::Spanner::
|
27
|
-
create an instance:
|
26
|
+
Use {Google::Cloud::Spanner::Admin::Instance#instance_admin
|
27
|
+
Client#create_instance} to create an instance:
|
28
28
|
|
29
29
|
```ruby
|
30
30
|
require "google/cloud/spanner"
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
32
|
+
instance_admin_client = \
|
33
|
+
Google::Cloud::Spanner::Admin::Instance.instance_admin project_id: "my-project"
|
34
|
+
|
35
|
+
project_path = \
|
36
|
+
instance_admin_client.project_path project: "my-project"
|
37
|
+
config_path = \
|
38
|
+
instance_admin_client.instance_config_path project: "my-project",
|
39
|
+
instance_config: "regional-us-central1"
|
40
|
+
instance_path = \
|
41
|
+
instance_admin_client.instance_path project: "my-project",
|
42
|
+
instance: "my-instance"
|
43
|
+
|
44
|
+
job = instance_admin_client.create_instance parent: project_path,
|
45
|
+
instance_id: "my-instance",
|
46
|
+
instance: Google::Cloud::Spanner::Admin::Instance::V1::Instance.new({
|
47
|
+
name: instance_path
|
48
|
+
display_name: "My Instance",
|
49
|
+
config: config_path,
|
50
|
+
node_count: 5,
|
51
|
+
labels: { "production": :env }
|
52
|
+
})
|
53
|
+
|
54
|
+
job.wait_until_done!
|
55
|
+
instance = job.results
|
49
56
|
```
|
50
57
|
|
51
58
|
## Creating databases
|
@@ -54,26 +61,23 @@ Now that you have created an instance, you can create a database. Cloud
|
|
54
61
|
Spanner databases hold the tables and indexes that allow you to read and
|
55
62
|
write data. You may create multiple databases in an instance.
|
56
63
|
|
57
|
-
Use {Google::Cloud::Spanner::
|
58
|
-
|
59
|
-
to create a database:
|
64
|
+
Use {Google::Cloud::Spanner::Admin::Database#database_admin
|
65
|
+
Client#create_database} to create a database:
|
60
66
|
|
61
67
|
```ruby
|
62
68
|
require "google/cloud/spanner"
|
63
69
|
|
64
|
-
|
70
|
+
db_admin_client = \
|
71
|
+
Google::Cloud::Spanner::Admin::Database.database_admin project_id: "my-project"
|
65
72
|
|
66
|
-
|
73
|
+
instance_path = \
|
74
|
+
db_admin_client.instance_path project: "my-project", instance: "my-instance"
|
67
75
|
|
68
|
-
job.
|
69
|
-
|
70
|
-
job.done? #=> true
|
76
|
+
job = db_admin_client.create_database parent: instance_path,
|
77
|
+
create_statement: "CREATE DATABASE my-database",
|
71
78
|
|
72
|
-
|
73
|
-
|
74
|
-
else
|
75
|
-
database = job.database
|
76
|
-
end
|
79
|
+
job.wait_until_done!
|
80
|
+
database = job.results
|
77
81
|
```
|
78
82
|
|
79
83
|
## Updating database schemas
|
@@ -83,16 +87,19 @@ continues to serve traffic. Schema updates do not require taking the
|
|
83
87
|
database offline and they do not lock entire tables or columns; you can
|
84
88
|
continue writing data to the database during the schema update.
|
85
89
|
|
86
|
-
Use {Google::Cloud::Spanner::Database#
|
87
|
-
more statements in Cloud Spanner's
|
90
|
+
Use {Google::Cloud::Spanner::Admin::Database#database_admin
|
91
|
+
Client#update_database_ddl} to execute one or more statements in Cloud Spanner's
|
92
|
+
Data Definition Language (DDL):
|
88
93
|
|
89
94
|
```ruby
|
90
95
|
require "google/cloud/spanner"
|
91
96
|
|
92
|
-
|
93
|
-
|
94
|
-
database = spanner.database "my-instance", "my-database"
|
97
|
+
db_admin_client = \
|
98
|
+
Google::Cloud::Spanner::Admin::Database.database_admin project_id: "my-project"
|
95
99
|
|
100
|
+
db_path = db_admin_client.database_path project: "my-project",
|
101
|
+
instance: "my-instance",
|
102
|
+
database: "my-database"
|
96
103
|
add_users_table_sql = %q(
|
97
104
|
CREATE TABLE users (
|
98
105
|
id INT64 NOT NULL,
|
@@ -102,13 +109,17 @@ add_users_table_sql = %q(
|
|
102
109
|
) PRIMARY KEY(id)
|
103
110
|
)
|
104
111
|
|
105
|
-
|
112
|
+
job = db_admin_client.update_database_ddl database: db_path,
|
113
|
+
statements: [add_users_table_sql]
|
114
|
+
|
115
|
+
job.wait_until_done!
|
116
|
+
database = job.results
|
106
117
|
```
|
107
118
|
|
108
119
|
## Creating clients
|
109
120
|
|
110
|
-
In order to read and/or write data, you must create a
|
111
|
-
|
121
|
+
In order to read and/or write data, you must create a data client. You can think
|
122
|
+
of a client as a database connection: All of your interactions with Cloud
|
112
123
|
Spanner data must go through a client. Typically you create a client when your
|
113
124
|
application starts up, then you re-use that client to read, write, and execute
|
114
125
|
transactions.
|
@@ -289,33 +300,41 @@ end
|
|
289
300
|
|
290
301
|
## Deleting databases
|
291
302
|
|
292
|
-
Use {Google::Cloud::Spanner::Database#
|
303
|
+
Use {Google::Cloud::Spanner::Admin::Database#database_admin
|
304
|
+
Client#drop_database} to delete a database:
|
293
305
|
|
294
306
|
```ruby
|
295
307
|
require "google/cloud/spanner"
|
296
308
|
|
297
|
-
|
309
|
+
db_admin_client = \
|
310
|
+
Google::Cloud::Spanner::Admin::Database.database_admin project_id: "my-project"
|
298
311
|
|
299
|
-
|
300
|
-
|
301
|
-
database
|
312
|
+
db_path = db_admin_client.database_path project: "my-project",
|
313
|
+
instance: "my-instance",
|
314
|
+
database: "my-database"
|
315
|
+
db_admin_client.drop_database database: db_path
|
302
316
|
```
|
303
317
|
|
304
318
|
## Deleting instances
|
305
319
|
|
306
320
|
When you delete an instance, all databases within it are automatically deleted.
|
307
321
|
(If you only delete databases and not your instance, you will still incur
|
308
|
-
charges for the instance.)
|
309
|
-
|
322
|
+
charges for the instance.)
|
323
|
+
|
324
|
+
Use {Google::Cloud::Spanner::Admin::Instance#instance_admin
|
325
|
+
Client#delete_instance} to delete an instance:
|
310
326
|
|
311
327
|
```ruby
|
312
328
|
require "google/cloud/spanner"
|
313
329
|
|
314
|
-
|
330
|
+
instance_admin_client = \
|
331
|
+
Google::Cloud::Spanner::Admin::Instance.instance_admin project_id: "my-project"
|
315
332
|
|
316
|
-
|
333
|
+
instance_path = \
|
334
|
+
instance_admin_client.instance_path project: "my-project",
|
335
|
+
instance: "my-instance"
|
317
336
|
|
318
|
-
|
337
|
+
instance_admin_client.delete_instance name: instance_path
|
319
338
|
```
|
320
339
|
|
321
340
|
## Additional information
|
@@ -0,0 +1,324 @@
|
|
1
|
+
# Copyright 2021 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
|
+
require "google-cloud-spanner"
|
16
|
+
require "google/cloud/config"
|
17
|
+
|
18
|
+
module Google
|
19
|
+
module Cloud
|
20
|
+
module Spanner
|
21
|
+
module Admin
|
22
|
+
module Database
|
23
|
+
##
|
24
|
+
# Create a new client object for a DatabaseAdmin.
|
25
|
+
#
|
26
|
+
# This returns an instance of
|
27
|
+
# [Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdmin::Client](https://googleapis.dev/ruby/google-cloud-spanner-admin-database-v1/latest/Google/Cloud/Spanner/Admin/Database/V1/DatabaseAdmin/Client.html)
|
28
|
+
# for version V1 of the API.
|
29
|
+
#
|
30
|
+
# ## About DatabaseAdmin
|
31
|
+
#
|
32
|
+
# Google Cloud Spanner Database Admin Service
|
33
|
+
#
|
34
|
+
# The Cloud Spanner Database Admin API can be used to create, drop, and
|
35
|
+
# list databases. It also enables updating the schema of pre-existing
|
36
|
+
# databases. It can be also used to create, delete and list backups for a
|
37
|
+
# database and to restore from an existing backup.
|
38
|
+
#
|
39
|
+
# For more information on connecting to Google Cloud see the
|
40
|
+
# {file:AUTHENTICATION.md Authentication Guide}.
|
41
|
+
#
|
42
|
+
# @param [String] project_id Project identifier for the Spanner service
|
43
|
+
# you are connecting to. If not present, the default project for the
|
44
|
+
# credentials is used.
|
45
|
+
# @param [String, Hash, Google::Auth::Credentials] credentials The path to
|
46
|
+
# the keyfile as a String, the contents of the keyfile as a Hash, or a
|
47
|
+
# Google::Auth::Credentials object. (See {Spanner::Credentials})
|
48
|
+
# If `emulator_host` is present, this becomes optional and the value is
|
49
|
+
# internally overriden with `:this_channel_is_insecure`.
|
50
|
+
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
|
51
|
+
# the set of resources and operations that the connection can access.
|
52
|
+
# See [Using OAuth 2.0 to Access Google
|
53
|
+
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
54
|
+
#
|
55
|
+
# The default scopes are:
|
56
|
+
#
|
57
|
+
# * `https://www.googleapis.com/auth/spanner`
|
58
|
+
# * `https://www.googleapis.com/auth/spanner.data`
|
59
|
+
# @param [Integer] timeout Default timeout to use in requests. Optional.
|
60
|
+
# @param [String] endpoint Override of the endpoint host name. Optional.
|
61
|
+
# If the param is nil, uses `emulator_host` or the default endpoint.
|
62
|
+
# @param [String] project Alias for the `project_id` argument. Deprecated.
|
63
|
+
# @param [String] keyfile Alias for the `credentials` argument.
|
64
|
+
# Deprecated.
|
65
|
+
# @param [String] emulator_host Spanner emulator host. Optional.
|
66
|
+
# If the param is nil, uses the value of the `emulator_host` config.
|
67
|
+
# @param [String] lib_name Library name. This will be added as a prefix
|
68
|
+
# to the API call tracking header `x-goog-api-client` with provided
|
69
|
+
# lib version for telemetry. Optional. For example prefix looks like
|
70
|
+
# `spanner-activerecord/0.0.1 gccl/1.13.1`. Here,
|
71
|
+
# `spanner-activerecord/0.0.1` is provided custom library name and
|
72
|
+
# version and `gccl/1.13.1` represents the Cloud Spanner Ruby library
|
73
|
+
# with version.
|
74
|
+
# @param [String] lib_version Library version. This will be added as a
|
75
|
+
# prefix to the API call tracking header `x-goog-api-client` with
|
76
|
+
# provided lib name for telemetry. Optional. For example prefix look like
|
77
|
+
# `spanner-activerecord/0.0.1 gccl/1.13.1`. Here,
|
78
|
+
# `spanner-activerecord/0.0.1` is provided custom library name and
|
79
|
+
# version and `gccl/1.13.1` represents the Cloud Spanner Ruby library
|
80
|
+
# with version.
|
81
|
+
#
|
82
|
+
# @return [Admin::Database::V1::DatabaseAdmin::Client] A client object of version V1.
|
83
|
+
#
|
84
|
+
# rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize, Metrics/MethodLength
|
85
|
+
def self.database_admin project_id: nil,
|
86
|
+
credentials: nil,
|
87
|
+
scope: nil,
|
88
|
+
timeout: nil,
|
89
|
+
endpoint: nil,
|
90
|
+
project: nil,
|
91
|
+
keyfile: nil,
|
92
|
+
emulator_host: nil,
|
93
|
+
lib_name: nil,
|
94
|
+
lib_version: nil
|
95
|
+
project_id ||= project || default_project_id
|
96
|
+
scope ||= configure.scope
|
97
|
+
timeout ||= configure.timeout
|
98
|
+
emulator_host ||= configure.emulator_host
|
99
|
+
endpoint ||= emulator_host || configure.endpoint
|
100
|
+
credentials ||= keyfile
|
101
|
+
lib_name ||= configure.lib_name
|
102
|
+
lib_version ||= configure.lib_version
|
103
|
+
|
104
|
+
if emulator_host
|
105
|
+
credentials = :this_channel_is_insecure
|
106
|
+
else
|
107
|
+
credentials ||= default_credentials scope: scope
|
108
|
+
unless credentials.is_a? Google::Auth::Credentials
|
109
|
+
credentials = Spanner::Credentials.new credentials, scope: scope
|
110
|
+
end
|
111
|
+
|
112
|
+
if credentials.respond_to? :project_id
|
113
|
+
project_id ||= credentials.project_id
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
project_id = project_id.to_s # Always cast to a string
|
118
|
+
raise ArgumentError, "project_id is missing" if project_id.empty?
|
119
|
+
|
120
|
+
configure.quota_project ||= credentials.quota_project_id if credentials.respond_to? :quota_project_id
|
121
|
+
|
122
|
+
Admin::Database::V1::DatabaseAdmin::Client.new do |config|
|
123
|
+
config.credentials = channel endpoint, credentials
|
124
|
+
config.quota_project = configure.quota_project
|
125
|
+
config.timeout = timeout if timeout
|
126
|
+
config.endpoint = endpoint if endpoint
|
127
|
+
config.lib_name = lib_name_with_prefix lib_name, lib_version
|
128
|
+
config.lib_version = Google::Cloud::Spanner::VERSION
|
129
|
+
config.metadata = { "google-cloud-resource-prefix" => "projects/#{project_id}" }
|
130
|
+
end
|
131
|
+
end
|
132
|
+
# rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize, Metrics/MethodLength
|
133
|
+
|
134
|
+
##
|
135
|
+
# Configure the Google Cloud Spanner Database Admin library. This configuration can be
|
136
|
+
# applied globally to all clients.
|
137
|
+
#
|
138
|
+
# @example
|
139
|
+
#
|
140
|
+
# Modify the global config, setting the timeout to 10 seconds for all admin databases.
|
141
|
+
#
|
142
|
+
# require "google/cloud/spanner/admin/database"
|
143
|
+
#
|
144
|
+
# ::Google::Cloud::Spanner::Admin::Database.configure do |config|
|
145
|
+
# config.timeout = 10.0
|
146
|
+
# end
|
147
|
+
#
|
148
|
+
# The following configuration parameters are supported:
|
149
|
+
#
|
150
|
+
# * `credentials` (*type:* `String, Hash, Google::Auth::Credentials`) -
|
151
|
+
# The path to the keyfile as a String, the contents of the keyfile as a
|
152
|
+
# Hash, or a Google::Auth::Credentials object.
|
153
|
+
# * `lib_name` (*type:* `String`) -
|
154
|
+
# The library name as recorded in instrumentation and logging.
|
155
|
+
# * `lib_version` (*type:* `String`) -
|
156
|
+
# The library version as recorded in instrumentation and logging.
|
157
|
+
# * `interceptors` (*type:* `Array<GRPC::ClientInterceptor>`) -
|
158
|
+
# An array of interceptors that are run before calls are executed.
|
159
|
+
# * `timeout` (*type:* `Numeric`) -
|
160
|
+
# Default timeout in seconds.
|
161
|
+
# * `emulator_host` - (String) Host name of the emulator. Defaults to
|
162
|
+
# `ENV["SPANNER_EMULATOR_HOST"]`.
|
163
|
+
# * `metadata` (*type:* `Hash{Symbol=>String}`) -
|
164
|
+
# Additional gRPC headers to be sent with the call.
|
165
|
+
# * `retry_policy` (*type:* `Hash`) -
|
166
|
+
# The retry policy. The value is a hash with the following keys:
|
167
|
+
# * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
|
168
|
+
# * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
|
169
|
+
# * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
|
170
|
+
# * `:retry_codes` (*type:* `Array<String>`) -
|
171
|
+
# The error codes that should trigger a retry.
|
172
|
+
#
|
173
|
+
# @return [::Google::Cloud::Config] The default configuration used by this library
|
174
|
+
#
|
175
|
+
def self.configure
|
176
|
+
@configure ||= begin
|
177
|
+
namespace = ["Google", "Cloud", "Spanner"]
|
178
|
+
parent_config = while namespace.any?
|
179
|
+
parent_name = namespace.join "::"
|
180
|
+
parent_const = const_get parent_name
|
181
|
+
break parent_const.configure if parent_const.respond_to? :configure
|
182
|
+
namespace.pop
|
183
|
+
end
|
184
|
+
|
185
|
+
default_config = Database::Configuration.new parent_config
|
186
|
+
default_config
|
187
|
+
end
|
188
|
+
yield @configure if block_given?
|
189
|
+
@configure
|
190
|
+
end
|
191
|
+
|
192
|
+
##
|
193
|
+
# @private Default project.
|
194
|
+
def self.default_project_id
|
195
|
+
Google::Cloud.configure.spanner.project_id ||
|
196
|
+
Google::Cloud.configure.project_id ||
|
197
|
+
Google::Cloud.env.project_id
|
198
|
+
end
|
199
|
+
|
200
|
+
##
|
201
|
+
# @private Default credentials.
|
202
|
+
def self.default_credentials scope: nil
|
203
|
+
Google::Cloud.configure.spanner.credentials ||
|
204
|
+
Google::Cloud.configure.credentials ||
|
205
|
+
Spanner::Credentials.default(scope: scope)
|
206
|
+
end
|
207
|
+
|
208
|
+
##
|
209
|
+
# @private gRPC channel.
|
210
|
+
def self.channel host, credentials
|
211
|
+
require "grpc"
|
212
|
+
GRPC::Core::Channel.new host, chan_args, chan_creds(credentials)
|
213
|
+
end
|
214
|
+
|
215
|
+
##
|
216
|
+
# @private gRPC channel args.
|
217
|
+
def self.chan_args
|
218
|
+
{ "grpc.service_config_disable_resolution" => 1 }
|
219
|
+
end
|
220
|
+
|
221
|
+
##
|
222
|
+
# @private gRPC channel credentials
|
223
|
+
def self.chan_creds credentials
|
224
|
+
return credentials if credentials == :this_channel_is_insecure
|
225
|
+
require "grpc"
|
226
|
+
GRPC::Core::ChannelCredentials.new.compose \
|
227
|
+
GRPC::Core::CallCredentials.new credentials.client.updater_proc
|
228
|
+
end
|
229
|
+
|
230
|
+
##
|
231
|
+
# @private Spanner client library version with the prefix.
|
232
|
+
def self.lib_name_with_prefix lib_name, lib_version
|
233
|
+
return "gccl" if [nil, "gccl"].include? lib_name
|
234
|
+
|
235
|
+
value = lib_name.dup
|
236
|
+
value << "/#{lib_version}" if lib_version
|
237
|
+
value << " gccl"
|
238
|
+
end
|
239
|
+
|
240
|
+
##
|
241
|
+
# Configuration class for the Spanner Admin Database.
|
242
|
+
#
|
243
|
+
# This class provides control over timeouts, retry behavior,
|
244
|
+
# query options, and other low-level controls.
|
245
|
+
#
|
246
|
+
# @!attribute [rw] endpoint
|
247
|
+
# The hostname or hostname:port of the service endpoint.
|
248
|
+
# Defaults to `"spanner.googleapis.com"`.
|
249
|
+
# @return [::String]
|
250
|
+
# @!attribute [rw] credentials
|
251
|
+
# Credentials to send with calls. You may provide any of the following types:
|
252
|
+
# * (`String`) The path to a service account key file in JSON format
|
253
|
+
# * (`Hash`) A service account key as a Hash
|
254
|
+
# * (`Google::Auth::Credentials`) A googleauth credentials object
|
255
|
+
# (see the [googleauth docs](https://googleapis.dev/ruby/googleauth/latest/index.html))
|
256
|
+
# * (`Signet::OAuth2::Client`) A signet oauth2 client object
|
257
|
+
# (see the [signet docs](https://googleapis.dev/ruby/signet/latest/Signet/OAuth2/Client.html))
|
258
|
+
# * (`GRPC::Core::Channel`) a gRPC channel with included credentials
|
259
|
+
# * (`GRPC::Core::ChannelCredentials`) a gRPC credentails object
|
260
|
+
# * (`nil`) indicating no credentials
|
261
|
+
# @return [::Object]
|
262
|
+
# @!attribute [rw] scope
|
263
|
+
# The OAuth scopes
|
264
|
+
# @return [::Array<::String>]
|
265
|
+
# @!attribute [rw] lib_name
|
266
|
+
# The library name as recorded in instrumentation and logging
|
267
|
+
# @return [::String]
|
268
|
+
# @!attribute [rw] lib_version
|
269
|
+
# The library version as recorded in instrumentation and logging
|
270
|
+
# @return [::String]
|
271
|
+
# @!attribute [rw] interceptors
|
272
|
+
# An array of interceptors that are run before calls are executed.
|
273
|
+
# @return [::Array<::GRPC::ClientInterceptor>]
|
274
|
+
# @!attribute [rw] timeout
|
275
|
+
# The call timeout in seconds.
|
276
|
+
# @return [::Numeric]
|
277
|
+
# @!attribute [rw] metadata
|
278
|
+
# Additional gRPC headers to be sent with the call.
|
279
|
+
# @return [::Hash{::Symbol=>::String}]
|
280
|
+
# @!attribute [rw] retry_policy
|
281
|
+
# The retry policy. The value is a hash with the following keys:
|
282
|
+
# * `:initial_delay` (*type:* `Numeric`) - The initial delay in seconds.
|
283
|
+
# * `:max_delay` (*type:* `Numeric`) - The max delay in seconds.
|
284
|
+
# * `:multiplier` (*type:* `Numeric`) - The incremental backoff multiplier.
|
285
|
+
# * `:retry_codes` (*type:* `Array<String>`) - The error codes that should
|
286
|
+
# trigger a retry.
|
287
|
+
# @return [::Hash]
|
288
|
+
# @!attribute [rw] quota_project
|
289
|
+
# A separate project against which to charge quota.
|
290
|
+
# @return [::String]
|
291
|
+
#
|
292
|
+
class Configuration
|
293
|
+
extend ::Gapic::Config
|
294
|
+
|
295
|
+
config_attr :endpoint, "spanner.googleapis.com", ::String
|
296
|
+
config_attr :credentials, nil do |value|
|
297
|
+
allowed = [::String, ::Hash, ::Google::Auth::Credentials, ::Signet::OAuth2::Client, nil]
|
298
|
+
allowed += [::GRPC::Core::Channel, ::GRPC::Core::ChannelCredentials] if defined? ::GRPC
|
299
|
+
allowed.any? { |klass| klass === value }
|
300
|
+
end
|
301
|
+
config_attr :project_id, nil, ::String, nil
|
302
|
+
config_attr :scope, nil, ::String, ::Array, nil
|
303
|
+
config_attr :lib_name, nil, ::String, nil
|
304
|
+
config_attr :lib_version, nil, ::String, nil
|
305
|
+
config_attr :interceptors, nil, ::Array, nil
|
306
|
+
config_attr :timeout, nil, ::Numeric, nil
|
307
|
+
config_attr :quota_project, nil, ::String, nil
|
308
|
+
config_attr :emulator_host, nil, ::String, nil
|
309
|
+
config_attr :query_options, nil, ::Hash, nil
|
310
|
+
config_attr :metadata, nil, ::Hash, nil
|
311
|
+
config_attr :retry_policy, nil, ::Hash, nil
|
312
|
+
|
313
|
+
# @private
|
314
|
+
def initialize parent_config = nil
|
315
|
+
@parent_config = parent_config unless parent_config.nil?
|
316
|
+
|
317
|
+
yield self if block_given?
|
318
|
+
end
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
end
|