google-cloud-spanner 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +5 -5
  2. data/lib/google-cloud-spanner.rb +13 -10
  3. data/lib/google/cloud/spanner.rb +21 -18
  4. data/lib/google/cloud/spanner/admin/database.rb +111 -0
  5. data/lib/google/cloud/spanner/admin/database/credentials.rb +35 -0
  6. data/lib/google/cloud/spanner/admin/database/v1.rb +100 -3
  7. data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +129 -138
  8. data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/policy.rb +8 -8
  9. data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/any.rb +12 -2
  10. data/lib/google/cloud/spanner/admin/database/v1/doc/google/rpc/status.rb +22 -22
  11. data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +33 -20
  12. data/lib/google/cloud/spanner/admin/database/v1/doc/overview.rb +57 -0
  13. data/lib/google/cloud/spanner/admin/instance.rb +127 -0
  14. data/lib/google/cloud/spanner/admin/instance/credentials.rb +35 -0
  15. data/lib/google/cloud/spanner/admin/instance/v1.rb +116 -3
  16. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/policy.rb +8 -8
  17. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/any.rb +12 -2
  18. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/rpc/status.rb +22 -22
  19. data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +58 -43
  20. data/lib/google/cloud/spanner/admin/instance/v1/doc/overview.rb +57 -0
  21. data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +180 -189
  22. data/lib/google/cloud/spanner/client.rb +3 -3
  23. data/lib/google/cloud/spanner/credentials.rb +33 -7
  24. data/lib/google/cloud/spanner/database.rb +3 -6
  25. data/lib/google/cloud/spanner/instance.rb +2 -4
  26. data/lib/google/cloud/spanner/instance/config.rb +2 -4
  27. data/lib/google/cloud/spanner/project.rb +6 -6
  28. data/lib/google/cloud/spanner/service.rb +5 -26
  29. data/lib/google/cloud/spanner/session.rb +4 -4
  30. data/lib/google/cloud/spanner/v1/doc/google/protobuf/duration.rb +14 -1
  31. data/lib/google/cloud/spanner/v1/doc/google/protobuf/timestamp.rb +26 -1
  32. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/keys.rb +3 -3
  33. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +12 -12
  34. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/query_plan.rb +9 -9
  35. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/result_set.rb +33 -33
  36. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +99 -28
  37. data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/transaction.rb +41 -31
  38. data/lib/google/cloud/spanner/v1/doc/overview.rb +54 -0
  39. data/lib/google/cloud/spanner/v1/spanner_client.rb +277 -195
  40. data/lib/google/cloud/spanner/v1/spanner_client_config.json +5 -0
  41. data/lib/google/cloud/spanner/version.rb +1 -1
  42. data/lib/google/spanner/v1/spanner_pb.rb +16 -1
  43. data/lib/google/spanner/v1/spanner_services_pb.rb +2 -0
  44. metadata +16 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b5771caa6b51214d9d055d81d3599be90a0fc4b8
4
- data.tar.gz: 507675535d7b273319e1ba3a4eff12cae8f2476a
2
+ SHA256:
3
+ metadata.gz: 1add7ab9a3b78c54ef296d7e366b29f5ddeeb0faf9eed896d8ab083c12328634
4
+ data.tar.gz: e46bb01d063d498e0675a7e27af8fe3fac6c014f84d70539a1ae6e8c3be0ed55
5
5
  SHA512:
6
- metadata.gz: 7a46983593597d6e1f85b7af983ce1e3437b6bec8941576495bb1d09b5367b0dbc167c836d5e68ab2cbe51e5943236f3086c708321e79d6ef0fab1234ad59298
7
- data.tar.gz: a6924f6230d60d4a70790ef25d8147baea396819ec82264f5f53035b69b291eb9b2b2dc72f8d26383483e932d3c77dce9e4e895e63f9e1ef8605f2fa3322b835
6
+ metadata.gz: fb362ee20082a2999811b513ba91fdf3991b73719c4d2cab8ccc2102de08aa3f26dc13636b36c139b8affac07b395d4d2c68a6b440221fb02c21d3e1e51e2cde
7
+ data.tar.gz: d0854595641328c2f90b741e174c01f2f3f2ca960c0a1b7a9f6e317e1ed326dd75fa75bba0657e12ebe4e112526a9d8b006296838c16791aed67467add975a20
@@ -13,9 +13,9 @@
13
13
  # limitations under the License.
14
14
 
15
15
  ##
16
- # This file is here to be autorequired by bundler, so that the .spanner and
17
- # #spanner methods can be available, but the library and all dependencies won't
18
- # be loaded until required and used.
16
+ # This file is here to be autorequired by bundler, so that the
17
+ # Google::Cloud.spanner and Google::Cloud#spanner methods can be available, but
18
+ # the library and all dependencies won't be loaded until required and used.
19
19
 
20
20
 
21
21
  gem "google-cloud-core"
@@ -71,10 +71,12 @@ module Google
71
71
  # For more information on connecting to Google Cloud see the [Authentication
72
72
  # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
73
73
  #
74
- # @param [String] project Project identifier for the Spanner service you are
75
- # connecting to.
76
- # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
77
- # file path the file must be readable.
74
+ # @param [String] project_id Project identifier for the Spanner service you
75
+ # are connecting to. If not present, the default project for the
76
+ # credentials is used.
77
+ # @param [String, Hash, Google::Auth::Credentials] credentials The path to
78
+ # the keyfile as a String, the contents of the keyfile as a Hash, or a
79
+ # Google::Auth::Credentials object. (See {Spanner::Credentials})
78
80
  # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
79
81
  # set of resources and operations that the connection can access. See
80
82
  # [Using OAuth 2.0 to Access Google
@@ -95,10 +97,11 @@ module Google
95
97
  #
96
98
  # spanner = Google::Cloud.spanner
97
99
  #
98
- def self.spanner project = nil, keyfile = nil, scope: nil, timeout: nil,
99
- client_config: nil
100
+ def self.spanner project_id = nil, credentials = nil, scope: nil,
101
+ timeout: nil, client_config: nil
100
102
  require "google/cloud/spanner"
101
- Google::Cloud::Spanner.new project: project, keyfile: keyfile,
103
+ Google::Cloud::Spanner.new project_id: project_id,
104
+ credentials: credentials,
102
105
  scope: scope, timeout: timeout,
103
106
  client_config: client_config
104
107
  end
@@ -339,10 +339,12 @@ module Google
339
339
  # [Authentication
340
340
  # Guide](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/guides/authentication).
341
341
  #
342
- # @param [String] project Project identifier for the Spanner service you
343
- # are connecting to.
344
- # @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If
345
- # file path the file must be readable.
342
+ # @param [String] project_id Project identifier for the Spanner service
343
+ # you are connecting to. If not present, the default project for the
344
+ # credentials is used.
345
+ # @param [String, Hash, Google::Auth::Credentials] credentials The path to
346
+ # the keyfile as a String, the contents of the keyfile as a Hash, or a
347
+ # Google::Auth::Credentials object. (See {Spanner::Credentials})
346
348
  # @param [String, Array<String>] scope The OAuth 2.0 scopes controlling
347
349
  # the set of resources and operations that the connection can access.
348
350
  # See [Using OAuth 2.0 to Access Google
@@ -355,6 +357,9 @@ module Google
355
357
  # @param [Integer] timeout Default timeout to use in requests. Optional.
356
358
  # @param [Hash] client_config A hash of values to override the default
357
359
  # behavior of the API client. Optional.
360
+ # @param [String] project Alias for the `project_id` argument. Deprecated.
361
+ # @param [String] keyfile Alias for the `credentials` argument.
362
+ # Deprecated.
358
363
  #
359
364
  # @return [Google::Cloud::Spanner::Project]
360
365
  #
@@ -363,23 +368,21 @@ module Google
363
368
  #
364
369
  # spanner = Google::Cloud::Spanner.new
365
370
  #
366
- def self.new project: nil, keyfile: nil, scope: nil, timeout: nil,
367
- client_config: nil
368
- project ||= Google::Cloud::Spanner::Project.default_project
369
- project = project.to_s # Always cast to a string
370
- fail ArgumentError, "project is missing" if project.empty?
371
+ def self.new project_id: nil, credentials: nil, scope: nil, timeout: nil,
372
+ client_config: nil, project: nil, keyfile: nil
373
+ project_id ||= (project || Spanner::Project.default_project_id)
374
+ project_id = project_id.to_s # Always cast to a string
375
+ fail ArgumentError, "project_id is missing" if project_id.empty?
371
376
 
372
- if keyfile.nil?
373
- credentials = Google::Cloud::Spanner::Credentials.default scope: scope
374
- else
375
- credentials = Google::Cloud::Spanner::Credentials.new(
376
- keyfile, scope: scope)
377
+ credentials ||= (keyfile || Spanner::Credentials.default(scope: scope))
378
+ unless credentials.is_a? Google::Auth::Credentials
379
+ credentials = Spanner::Credentials.new credentials, scope: scope
377
380
  end
378
381
 
379
- Google::Cloud::Spanner::Project.new(
380
- Google::Cloud::Spanner::Service.new(
381
- project, credentials, timeout: timeout,
382
- client_config: client_config))
382
+ Spanner::Project.new(
383
+ Spanner::Service.new(
384
+ project_id, credentials, timeout: timeout,
385
+ client_config: client_config))
383
386
  end
384
387
  end
385
388
  end
@@ -0,0 +1,111 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
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
+ # http://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/gax"
16
+ require "pathname"
17
+
18
+ module Google
19
+ module Cloud
20
+ module Spanner
21
+ module Admin
22
+ # rubocop:disable LineLength
23
+
24
+ ##
25
+ # # Ruby Client for Cloud Spanner Database Admin API ([Alpha](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
26
+ #
27
+ # [Cloud Spanner Database Admin API][Product Documentation]:
28
+ #
29
+ # - [Product Documentation][]
30
+ #
31
+ # ## Quick Start
32
+ # In order to use this library, you first need to go through the following
33
+ # steps:
34
+ #
35
+ # 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
36
+ # 2. [Enable the Cloud Spanner Database Admin API.](https://console.cloud.google.com/apis/api/spanner-admin-database)
37
+ # 3. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
38
+ #
39
+ # ### Next Steps
40
+ # - Read the [Cloud Spanner Database Admin API Product documentation][Product Documentation]
41
+ # to learn more about the product and see How-to Guides.
42
+ # - View this [repository's main README](https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/README.md)
43
+ # to see the full list of Cloud APIs that we cover.
44
+ #
45
+ # [Product Documentation]: https://cloud.google.com/spanner-admin-database
46
+ #
47
+ #
48
+ module Database
49
+ # rubocop:enable LineLength
50
+
51
+ FILE_DIR = File.realdirpath(Pathname.new(__FILE__).join("..").join("database"))
52
+
53
+ AVAILABLE_VERSIONS = Dir["#{FILE_DIR}/*"]
54
+ .select { |file| File.directory?(file) }
55
+ .select { |dir| Google::Gax::VERSION_MATCHER.match(File.basename(dir)) }
56
+ .select { |dir| File.exist?(dir + ".rb") }
57
+ .map { |dir| File.basename(dir) }
58
+
59
+ ##
60
+ # Cloud Spanner Database Admin API
61
+ #
62
+ # The Cloud Spanner Database Admin API can be used to create, drop, and
63
+ # list databases. It also enables updating the schema of pre-existing
64
+ # databases.
65
+ #
66
+ # @param version [Symbol, String]
67
+ # The major version of the service to be used. By default :v1
68
+ # is used.
69
+ # @overload new(version:, credentials:, scopes:, client_config:, timeout:)
70
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
71
+ # Provides the means for authenticating requests made by the client. This parameter can
72
+ # be many types.
73
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
74
+ # authenticating requests made by this client.
75
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
76
+ # credentials for this client.
77
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
78
+ # credentials for this client.
79
+ # A `GRPC::Core::Channel` will be used to make calls through.
80
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
81
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
82
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
83
+ # metadata for requests, generally, to give OAuth credentials.
84
+ # @param scopes [Array<String>]
85
+ # The OAuth scopes for this service. This parameter is ignored if
86
+ # an updater_proc is supplied.
87
+ # @param client_config [Hash]
88
+ # A Hash for call options for each method. See
89
+ # Google::Gax#construct_settings for the structure of
90
+ # this data. Falls back to the default config if not specified
91
+ # or the specified config is missing data points.
92
+ # @param timeout [Numeric]
93
+ # The default timeout, in seconds, for calls made through this client.
94
+ def self.new(*args, version: :v1, **kwargs)
95
+ unless AVAILABLE_VERSIONS.include?(version.to_s.downcase)
96
+ raise "The version: #{version} is not available. The available versions " \
97
+ "are: [#{AVAILABLE_VERSIONS.join(", ")}]"
98
+ end
99
+
100
+ require "#{FILE_DIR}/#{version.to_s.downcase}"
101
+ version_module = Google::Cloud::Spanner::Admin::Database
102
+ .constants
103
+ .select {|sym| sym.to_s.downcase == version.to_s.downcase}
104
+ .first
105
+ Google::Cloud::Spanner::Admin::Database.const_get(version_module).new(*args, **kwargs)
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,35 @@
1
+ # Copyright 2017, Google Inc. All rights reserved.
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
+ # http://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 "googleauth"
16
+
17
+ module Google
18
+ module Cloud
19
+ module Spanner
20
+ module Admin
21
+ module Database
22
+ class Credentials < Google::Auth::Credentials
23
+ SCOPE = [
24
+ "https://www.googleapis.com/auth/cloud-platform",
25
+ "https://www.googleapis.com/auth/spanner.admin"
26
+ ].freeze
27
+ PATH_ENV_VARS = %w(SPANNER_ADMIN_DATABASE_KEYFILE, GOOGLE_CLOUD_KEYFILE, GCLOUD_KEYFILE)
28
+ JSON_ENV_VARS = %w(SPANNER_ADMIN_DATABASE_KEYFILE_JSON, GOOGLE_CLOUD_KEYFILE_JSON, GCLOUD_KEYFILE_JSON)
29
+ DEFAULT_PATHS = ["~/.config/gcloud/application_default_credentials.json"]
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,4 @@
1
-
2
- # Copyright 2016 Google Inc. All rights reserved.
1
+ # Copyright 2017, Google Inc. All rights reserved.
3
2
  #
4
3
  # Licensed under the Apache License, Version 2.0 (the "License");
5
4
  # you may not use this file except in compliance with the License.
@@ -13,5 +12,103 @@
13
12
  # See the License for the specific language governing permissions and
14
13
  # limitations under the License.
15
14
 
16
-
17
15
  require "google/cloud/spanner/admin/database/v1/database_admin_client"
16
+
17
+ module Google
18
+ module Cloud
19
+ module Spanner
20
+ module Admin
21
+ # rubocop:disable LineLength
22
+
23
+ ##
24
+ # # Ruby Client for Cloud Spanner Database Admin API ([Alpha](https://github.com/GoogleCloudPlatform/google-cloud-ruby#versioning))
25
+ #
26
+ # [Cloud Spanner Database Admin API][Product Documentation]:
27
+ #
28
+ # - [Product Documentation][]
29
+ #
30
+ # ## Quick Start
31
+ # In order to use this library, you first need to go through the following
32
+ # steps:
33
+ #
34
+ # 1. [Select or create a Cloud Platform project.](https://console.cloud.google.com/project)
35
+ # 2. [Enable the Cloud Spanner Database Admin API.](https://console.cloud.google.com/apis/api/spanner-admin-database)
36
+ # 3. [Setup Authentication.](https://googlecloudplatform.github.io/google-cloud-ruby/#/docs/google-cloud/master/guides/authentication)
37
+ #
38
+ # ### Next Steps
39
+ # - Read the [Cloud Spanner Database Admin API Product documentation][Product Documentation]
40
+ # to learn more about the product and see How-to Guides.
41
+ # - View this [repository's main README](https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/README.md)
42
+ # to see the full list of Cloud APIs that we cover.
43
+ #
44
+ # [Product Documentation]: https://cloud.google.com/spanner-admin-database
45
+ #
46
+ #
47
+ module Database
48
+ module V1
49
+ # rubocop:enable LineLength
50
+
51
+ ##
52
+ # Cloud Spanner Database Admin API
53
+ #
54
+ # The Cloud Spanner Database Admin API can be used to create, drop, and
55
+ # list databases. It also enables updating the schema of pre-existing
56
+ # databases.
57
+ #
58
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
59
+ # Provides the means for authenticating requests made by the client. This parameter can
60
+ # be many types.
61
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
62
+ # authenticating requests made by this client.
63
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
64
+ # credentials for this client.
65
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
66
+ # credentials for this client.
67
+ # A `GRPC::Core::Channel` will be used to make calls through.
68
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
69
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
70
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
71
+ # metadata for requests, generally, to give OAuth credentials.
72
+ # @param scopes [Array<String>]
73
+ # The OAuth scopes for this service. This parameter is ignored if
74
+ # an updater_proc is supplied.
75
+ # @param client_config [Hash]
76
+ # A Hash for call options for each method. See
77
+ # Google::Gax#construct_settings for the structure of
78
+ # this data. Falls back to the default config if not specified
79
+ # or the specified config is missing data points.
80
+ # @param timeout [Numeric]
81
+ # The default timeout, in seconds, for calls made through this client.
82
+ def self.new \
83
+ service_path: nil,
84
+ port: nil,
85
+ channel: nil,
86
+ chan_creds: nil,
87
+ updater_proc: nil,
88
+ credentials: nil,
89
+ scopes: nil,
90
+ client_config: nil,
91
+ timeout: nil,
92
+ lib_name: nil,
93
+ lib_version: nil
94
+ kwargs = {
95
+ service_path: service_path,
96
+ port: port,
97
+ channel: channel,
98
+ chan_creds: chan_creds,
99
+ updater_proc: updater_proc,
100
+ credentials: credentials,
101
+ scopes: scopes,
102
+ client_config: client_config,
103
+ timeout: timeout,
104
+ lib_name: lib_name,
105
+ lib_version: lib_version
106
+ }.select { |_, v| v != nil }
107
+ Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.new(**kwargs)
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -30,6 +30,7 @@ require "google/gax/operation"
30
30
  require "google/longrunning/operations_client"
31
31
 
32
32
  require "google/spanner/admin/database/v1/spanner_database_admin_pb"
33
+ require "google/cloud/spanner/admin/database/credentials"
33
34
 
34
35
  module Google
35
36
  module Cloud
@@ -108,50 +109,24 @@ module Google
108
109
  )
109
110
  end
110
111
 
111
- # Parses the project from a instance resource.
112
- # @param instance_name [String]
113
- # @return [String]
114
- def self.match_project_from_instance_name instance_name
115
- INSTANCE_PATH_TEMPLATE.match(instance_name)["project"]
116
- end
117
-
118
- # Parses the instance from a instance resource.
119
- # @param instance_name [String]
120
- # @return [String]
121
- def self.match_instance_from_instance_name instance_name
122
- INSTANCE_PATH_TEMPLATE.match(instance_name)["instance"]
123
- end
124
-
125
- # Parses the project from a database resource.
126
- # @param database_name [String]
127
- # @return [String]
128
- def self.match_project_from_database_name database_name
129
- DATABASE_PATH_TEMPLATE.match(database_name)["project"]
130
- end
131
-
132
- # Parses the instance from a database resource.
133
- # @param database_name [String]
134
- # @return [String]
135
- def self.match_instance_from_database_name database_name
136
- DATABASE_PATH_TEMPLATE.match(database_name)["instance"]
137
- end
138
-
139
- # Parses the database from a database resource.
140
- # @param database_name [String]
141
- # @return [String]
142
- def self.match_database_from_database_name database_name
143
- DATABASE_PATH_TEMPLATE.match(database_name)["database"]
144
- end
145
-
146
- # @param service_path [String]
147
- # The domain name of the API remote host.
148
- # @param port [Integer]
149
- # The port on which to connect to the remote host.
150
- # @param channel [Channel]
151
- # A Channel object through which to make calls.
152
- # @param chan_creds [Grpc::ChannelCredentials]
153
- # A ChannelCredentials for the setting up the RPC client.
154
- # @param client_config[Hash]
112
+ # @param credentials [Google::Auth::Credentials, String, Hash, GRPC::Core::Channel, GRPC::Core::ChannelCredentials, Proc]
113
+ # Provides the means for authenticating requests made by the client. This parameter can
114
+ # be many types.
115
+ # A `Google::Auth::Credentials` uses a the properties of its represented keyfile for
116
+ # authenticating requests made by this client.
117
+ # A `String` will be treated as the path to the keyfile to be used for the construction of
118
+ # credentials for this client.
119
+ # A `Hash` will be treated as the contents of a keyfile to be used for the construction of
120
+ # credentials for this client.
121
+ # A `GRPC::Core::Channel` will be used to make calls through.
122
+ # A `GRPC::Core::ChannelCredentials` for the setting up the RPC client. The channel credentials
123
+ # should already be composed with a `GRPC::Core::CallCredentials` object.
124
+ # A `Proc` will be used as an updater_proc for the Grpc channel. The proc transforms the
125
+ # metadata for requests, generally, to give OAuth credentials.
126
+ # @param scopes [Array<String>]
127
+ # The OAuth scopes for this service. This parameter is ignored if
128
+ # an updater_proc is supplied.
129
+ # @param client_config [Hash]
155
130
  # A Hash for call options for each method. See
156
131
  # Google::Gax#construct_settings for the structure of
157
132
  # this data. Falls back to the default config if not specified
@@ -163,11 +138,11 @@ module Google
163
138
  port: DEFAULT_SERVICE_PORT,
164
139
  channel: nil,
165
140
  chan_creds: nil,
141
+ updater_proc: nil,
142
+ credentials: nil,
166
143
  scopes: ALL_SCOPES,
167
144
  client_config: {},
168
145
  timeout: DEFAULT_TIMEOUT,
169
- app_name: nil,
170
- app_version: nil,
171
146
  lib_name: nil,
172
147
  lib_version: ""
173
148
  # These require statements are intentionally placed here to initialize
@@ -176,27 +151,48 @@ module Google
176
151
  require "google/gax/grpc"
177
152
  require "google/spanner/admin/database/v1/spanner_database_admin_services_pb"
178
153
 
154
+ if channel || chan_creds || updater_proc
155
+ warn "The `channel`, `chan_creds`, and `updater_proc` parameters will be removed " \
156
+ "on 2017/09/08"
157
+ credentials ||= channel
158
+ credentials ||= chan_creds
159
+ credentials ||= updater_proc
160
+ end
161
+ if service_path != SERVICE_ADDRESS || port != DEFAULT_SERVICE_PORT
162
+ warn "`service_path` and `port` parameters are deprecated and will be removed"
163
+ end
164
+
165
+ credentials ||= Google::Cloud::Spanner::Admin::Database::Credentials.default
166
+
179
167
  @operations_client = Google::Longrunning::OperationsClient.new(
180
168
  service_path: service_path,
181
- port: port,
182
- channel: channel,
183
- chan_creds: chan_creds,
169
+ credentials: credentials,
184
170
  scopes: scopes,
185
171
  client_config: client_config,
186
172
  timeout: timeout,
187
- app_name: app_name,
188
- app_version: app_version,
189
173
  lib_name: lib_name,
190
174
  lib_version: lib_version,
191
175
  )
192
176
 
193
- if app_name || app_version
194
- warn "`app_name` and `app_version` are no longer being used in the request headers."
177
+ if credentials.is_a?(String) || credentials.is_a?(Hash)
178
+ updater_proc = Google::Cloud::Spanner::Admin::Database::Credentials.new(credentials).updater_proc
179
+ end
180
+ if credentials.is_a?(GRPC::Core::Channel)
181
+ channel = credentials
182
+ end
183
+ if credentials.is_a?(GRPC::Core::ChannelCredentials)
184
+ chan_creds = credentials
185
+ end
186
+ if credentials.is_a?(Proc)
187
+ updater_proc = credentials
188
+ end
189
+ if credentials.is_a?(Google::Auth::Credentials)
190
+ updater_proc = credentials.updater_proc
195
191
  end
196
192
 
197
193
  google_api_client = "gl-ruby/#{RUBY_VERSION}"
198
194
  google_api_client << " #{lib_name}/#{lib_version}" if lib_name
199
- google_api_client << " gapic/0.6.8 gax/#{Google::Gax::VERSION}"
195
+ google_api_client << " gapic/0.1.0 gax/#{Google::Gax::VERSION}"
200
196
  google_api_client << " grpc/#{GRPC::VERSION}"
201
197
  google_api_client.freeze
202
198
 
@@ -221,6 +217,7 @@ module Google
221
217
  port,
222
218
  chan_creds: chan_creds,
223
219
  channel: channel,
220
+ updater_proc: updater_proc,
224
221
  scopes: scopes,
225
222
  &Google::Spanner::Admin::Database::V1::DatabaseAdmin::Stub.method(:new)
226
223
  )
@@ -286,12 +283,10 @@ module Google
286
283
  # object.
287
284
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
288
285
  # @example
289
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
290
- #
291
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
286
+ # require "google/cloud/spanner/admin/database/v1"
292
287
  #
293
- # database_admin_client = DatabaseAdminClient.new
294
- # formatted_parent = DatabaseAdminClient.instance_path("[PROJECT]", "[INSTANCE]")
288
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
289
+ # formatted_parent = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.instance_path("[PROJECT]", "[INSTANCE]")
295
290
  #
296
291
  # # Iterate over all results.
297
292
  # database_admin_client.list_databases(formatted_parent).each do |element|
@@ -310,21 +305,22 @@ module Google
310
305
  parent,
311
306
  page_size: nil,
312
307
  options: nil
313
- req = Google::Spanner::Admin::Database::V1::ListDatabasesRequest.new({
308
+ req = {
314
309
  parent: parent,
315
310
  page_size: page_size
316
- }.delete_if { |_, v| v.nil? })
311
+ }.delete_if { |_, v| v.nil? }
312
+ req = Google::Gax::to_proto(req, Google::Spanner::Admin::Database::V1::ListDatabasesRequest)
317
313
  @list_databases.call(req, options)
318
314
  end
319
315
 
320
316
  # Creates a new Cloud Spanner database and starts to prepare it for serving.
321
- # The returned Long-running operation will
317
+ # The returned {Google::Longrunning::Operation long-running operation} will
322
318
  # have a name of the format +<database_name>/operations/<operation_id>+ and
323
319
  # can be used to track preparation of the database. The
324
- # Metadata field type is
325
- # CreateDatabaseMetadata. The
326
- # Response field type is
327
- # Database, if successful.
320
+ # {Google::Longrunning::Operation#metadata metadata} field type is
321
+ # {Google::Spanner::Admin::Database::V1::CreateDatabaseMetadata CreateDatabaseMetadata}. The
322
+ # {Google::Longrunning::Operation#response response} field type is
323
+ # {Google::Spanner::Admin::Database::V1::Database Database}, if successful.
328
324
  #
329
325
  # @param parent [String]
330
326
  # Required. The name of the instance that will serve the new database.
@@ -333,6 +329,8 @@ module Google
333
329
  # Required. A +CREATE DATABASE+ statement, which specifies the ID of the
334
330
  # new database. The database ID must conform to the regular expression
335
331
  # +[a-z][a-z0-9_\-]*[a-z0-9]+ and be between 2 and 30 characters in length.
332
+ # If the database ID is a reserved word or if it contains a hyphen, the
333
+ # database ID must be enclosed in backticks (+ + +).
336
334
  # @param extra_statements [Array<String>]
337
335
  # An optional list of DDL statements to run inside the newly created
338
336
  # database. Statements can create tables, indexes, etc. These
@@ -344,12 +342,10 @@ module Google
344
342
  # @return [Google::Gax::Operation]
345
343
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
346
344
  # @example
347
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
345
+ # require "google/cloud/spanner/admin/database/v1"
348
346
  #
349
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
350
- #
351
- # database_admin_client = DatabaseAdminClient.new
352
- # formatted_parent = DatabaseAdminClient.instance_path("[PROJECT]", "[INSTANCE]")
347
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
348
+ # formatted_parent = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.instance_path("[PROJECT]", "[INSTANCE]")
353
349
  # create_statement = ''
354
350
  #
355
351
  # # Register a callback during the method call.
@@ -384,11 +380,12 @@ module Google
384
380
  create_statement,
385
381
  extra_statements: nil,
386
382
  options: nil
387
- req = Google::Spanner::Admin::Database::V1::CreateDatabaseRequest.new({
383
+ req = {
388
384
  parent: parent,
389
385
  create_statement: create_statement,
390
386
  extra_statements: extra_statements
391
- }.delete_if { |_, v| v.nil? })
387
+ }.delete_if { |_, v| v.nil? }
388
+ req = Google::Gax::to_proto(req, Google::Spanner::Admin::Database::V1::CreateDatabaseRequest)
392
389
  operation = Google::Gax::Operation.new(
393
390
  @create_database.call(req, options),
394
391
  @operations_client,
@@ -411,30 +408,29 @@ module Google
411
408
  # @return [Google::Spanner::Admin::Database::V1::Database]
412
409
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
413
410
  # @example
414
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
415
- #
416
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
411
+ # require "google/cloud/spanner/admin/database/v1"
417
412
  #
418
- # database_admin_client = DatabaseAdminClient.new
419
- # formatted_name = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
413
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
414
+ # formatted_name = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
420
415
  # response = database_admin_client.get_database(formatted_name)
421
416
 
422
417
  def get_database \
423
418
  name,
424
419
  options: nil
425
- req = Google::Spanner::Admin::Database::V1::GetDatabaseRequest.new({
420
+ req = {
426
421
  name: name
427
- }.delete_if { |_, v| v.nil? })
422
+ }.delete_if { |_, v| v.nil? }
423
+ req = Google::Gax::to_proto(req, Google::Spanner::Admin::Database::V1::GetDatabaseRequest)
428
424
  @get_database.call(req, options)
429
425
  end
430
426
 
431
427
  # Updates the schema of a Cloud Spanner database by
432
428
  # creating/altering/dropping tables, columns, indexes, etc. The returned
433
- # Long-running operation will have a name of
429
+ # {Google::Longrunning::Operation long-running operation} will have a name of
434
430
  # the format +<database_name>/operations/<operation_id>+ and can be used to
435
431
  # track execution of the schema change(s). The
436
- # Metadata field type is
437
- # UpdateDatabaseDdlMetadata. The operation has no response.
432
+ # {Google::Longrunning::Operation#metadata metadata} field type is
433
+ # {Google::Spanner::Admin::Database::V1::UpdateDatabaseDdlMetadata UpdateDatabaseDdlMetadata}. The operation has no response.
438
434
  #
439
435
  # @param database [String]
440
436
  # Required. The database to update.
@@ -444,21 +440,21 @@ module Google
444
440
  # If empty, the new update request is assigned an
445
441
  # automatically-generated operation ID. Otherwise, +operation_id+
446
442
  # is used to construct the name of the resulting
447
- # Operation.
443
+ # {Google::Longrunning::Operation Operation}.
448
444
  #
449
445
  # Specifying an explicit operation ID simplifies determining
450
446
  # whether the statements were executed in the event that the
451
- # UpdateDatabaseDdl call is replayed,
452
- # or the return value is otherwise lost: the Database and
447
+ # {Google::Spanner::Admin::Database::V1::DatabaseAdmin::UpdateDatabaseDdl UpdateDatabaseDdl} call is replayed,
448
+ # or the return value is otherwise lost: the {Google::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest#database database} and
453
449
  # +operation_id+ fields can be combined to form the
454
- # Name of the resulting
455
- # Longrunning::Operation: +<database>/operations/<operation_id>+.
450
+ # {Google::Longrunning::Operation#name name} of the resulting
451
+ # {Google::Longrunning::Operation longrunning::Operation}: +<database>/operations/<operation_id>+.
456
452
  #
457
453
  # +operation_id+ should be unique within the database, and must be
458
454
  # a valid identifier: +[a-z][a-z0-9_]*+. Note that
459
455
  # automatically-generated operation IDs always begin with an
460
456
  # underscore. If the named operation already exists,
461
- # UpdateDatabaseDdl returns
457
+ # {Google::Spanner::Admin::Database::V1::DatabaseAdmin::UpdateDatabaseDdl UpdateDatabaseDdl} returns
462
458
  # +ALREADY_EXISTS+.
463
459
  # @param options [Google::Gax::CallOptions]
464
460
  # Overrides the default settings for this call, e.g, timeout,
@@ -466,12 +462,10 @@ module Google
466
462
  # @return [Google::Gax::Operation]
467
463
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
468
464
  # @example
469
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
465
+ # require "google/cloud/spanner/admin/database/v1"
470
466
  #
471
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
472
- #
473
- # database_admin_client = DatabaseAdminClient.new
474
- # formatted_database = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
467
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
468
+ # formatted_database = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
475
469
  # statements = []
476
470
  #
477
471
  # # Register a callback during the method call.
@@ -506,11 +500,12 @@ module Google
506
500
  statements,
507
501
  operation_id: nil,
508
502
  options: nil
509
- req = Google::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest.new({
503
+ req = {
510
504
  database: database,
511
505
  statements: statements,
512
506
  operation_id: operation_id
513
- }.delete_if { |_, v| v.nil? })
507
+ }.delete_if { |_, v| v.nil? }
508
+ req = Google::Gax::to_proto(req, Google::Spanner::Admin::Database::V1::UpdateDatabaseDdlRequest)
514
509
  operation = Google::Gax::Operation.new(
515
510
  @update_database_ddl.call(req, options),
516
511
  @operations_client,
@@ -531,27 +526,26 @@ module Google
531
526
  # retries, etc.
532
527
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
533
528
  # @example
534
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
535
- #
536
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
529
+ # require "google/cloud/spanner/admin/database/v1"
537
530
  #
538
- # database_admin_client = DatabaseAdminClient.new
539
- # formatted_database = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
531
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
532
+ # formatted_database = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
540
533
  # database_admin_client.drop_database(formatted_database)
541
534
 
542
535
  def drop_database \
543
536
  database,
544
537
  options: nil
545
- req = Google::Spanner::Admin::Database::V1::DropDatabaseRequest.new({
538
+ req = {
546
539
  database: database
547
- }.delete_if { |_, v| v.nil? })
540
+ }.delete_if { |_, v| v.nil? }
541
+ req = Google::Gax::to_proto(req, Google::Spanner::Admin::Database::V1::DropDatabaseRequest)
548
542
  @drop_database.call(req, options)
549
543
  nil
550
544
  end
551
545
 
552
546
  # Returns the schema of a Cloud Spanner database as a list of formatted
553
547
  # DDL statements. This method does not show pending schema updates, those may
554
- # be queried using the Operations API.
548
+ # be queried using the {Google::Longrunning::Operations Operations} API.
555
549
  #
556
550
  # @param database [String]
557
551
  # Required. The database whose schema we wish to get.
@@ -561,20 +555,19 @@ module Google
561
555
  # @return [Google::Spanner::Admin::Database::V1::GetDatabaseDdlResponse]
562
556
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
563
557
  # @example
564
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
558
+ # require "google/cloud/spanner/admin/database/v1"
565
559
  #
566
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
567
- #
568
- # database_admin_client = DatabaseAdminClient.new
569
- # formatted_database = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
560
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
561
+ # formatted_database = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
570
562
  # response = database_admin_client.get_database_ddl(formatted_database)
571
563
 
572
564
  def get_database_ddl \
573
565
  database,
574
566
  options: nil
575
- req = Google::Spanner::Admin::Database::V1::GetDatabaseDdlRequest.new({
567
+ req = {
576
568
  database: database
577
- }.delete_if { |_, v| v.nil? })
569
+ }.delete_if { |_, v| v.nil? }
570
+ req = Google::Gax::to_proto(req, Google::Spanner::Admin::Database::V1::GetDatabaseDdlRequest)
578
571
  @get_database_ddl.call(req, options)
579
572
  end
580
573
 
@@ -582,41 +575,41 @@ module Google
582
575
  # existing policy.
583
576
  #
584
577
  # Authorization requires +spanner.databases.setIamPolicy+ permission on
585
- # Resource.
578
+ # {Google::Iam::V1::SetIamPolicyRequest#resource resource}.
586
579
  #
587
580
  # @param resource [String]
588
581
  # REQUIRED: The resource for which the policy is being specified.
589
582
  # +resource+ is usually specified as a path. For example, a Project
590
583
  # resource is specified as +projects/{project}+.
591
- # @param policy [Google::Iam::V1::Policy]
584
+ # @param policy [Google::Iam::V1::Policy | Hash]
592
585
  # REQUIRED: The complete policy to be applied to the +resource+. The size of
593
586
  # the policy is limited to a few 10s of KB. An empty policy is a
594
587
  # valid policy but certain Cloud Platform services (such as Projects)
595
588
  # might reject them.
589
+ # A hash of the same form as `Google::Iam::V1::Policy`
590
+ # can also be provided.
596
591
  # @param options [Google::Gax::CallOptions]
597
592
  # Overrides the default settings for this call, e.g, timeout,
598
593
  # retries, etc.
599
594
  # @return [Google::Iam::V1::Policy]
600
595
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
601
596
  # @example
602
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
603
- #
604
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
605
- # Policy = Google::Iam::V1::Policy
597
+ # require "google/cloud/spanner/admin/database/v1"
606
598
  #
607
- # database_admin_client = DatabaseAdminClient.new
608
- # formatted_resource = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
609
- # policy = Policy.new
599
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
600
+ # formatted_resource = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
601
+ # policy = {}
610
602
  # response = database_admin_client.set_iam_policy(formatted_resource, policy)
611
603
 
612
604
  def set_iam_policy \
613
605
  resource,
614
606
  policy,
615
607
  options: nil
616
- req = Google::Iam::V1::SetIamPolicyRequest.new({
608
+ req = {
617
609
  resource: resource,
618
610
  policy: policy
619
- }.delete_if { |_, v| v.nil? })
611
+ }.delete_if { |_, v| v.nil? }
612
+ req = Google::Gax::to_proto(req, Google::Iam::V1::SetIamPolicyRequest)
620
613
  @set_iam_policy.call(req, options)
621
614
  end
622
615
 
@@ -624,7 +617,7 @@ module Google
624
617
  # policy if a database exists but does not have a policy set.
625
618
  #
626
619
  # Authorization requires +spanner.databases.getIamPolicy+ permission on
627
- # Resource.
620
+ # {Google::Iam::V1::GetIamPolicyRequest#resource resource}.
628
621
  #
629
622
  # @param resource [String]
630
623
  # REQUIRED: The resource for which the policy is being requested.
@@ -636,20 +629,19 @@ module Google
636
629
  # @return [Google::Iam::V1::Policy]
637
630
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
638
631
  # @example
639
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
632
+ # require "google/cloud/spanner/admin/database/v1"
640
633
  #
641
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
642
- #
643
- # database_admin_client = DatabaseAdminClient.new
644
- # formatted_resource = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
634
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
635
+ # formatted_resource = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
645
636
  # response = database_admin_client.get_iam_policy(formatted_resource)
646
637
 
647
638
  def get_iam_policy \
648
639
  resource,
649
640
  options: nil
650
- req = Google::Iam::V1::GetIamPolicyRequest.new({
641
+ req = {
651
642
  resource: resource
652
- }.delete_if { |_, v| v.nil? })
643
+ }.delete_if { |_, v| v.nil? }
644
+ req = Google::Gax::to_proto(req, Google::Iam::V1::GetIamPolicyRequest)
653
645
  @get_iam_policy.call(req, options)
654
646
  end
655
647
 
@@ -668,19 +660,17 @@ module Google
668
660
  # The set of permissions to check for the +resource+. Permissions with
669
661
  # wildcards (such as '*' or 'storage.*') are not allowed. For more
670
662
  # information see
671
- # {IAM Overview}[https://cloud.google.com/iam/docs/overview#permissions].
663
+ # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
672
664
  # @param options [Google::Gax::CallOptions]
673
665
  # Overrides the default settings for this call, e.g, timeout,
674
666
  # retries, etc.
675
667
  # @return [Google::Iam::V1::TestIamPermissionsResponse]
676
668
  # @raise [Google::Gax::GaxError] if the RPC is aborted.
677
669
  # @example
678
- # require "google/cloud/spanner/admin/database/v1/database_admin_client"
679
- #
680
- # DatabaseAdminClient = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient
670
+ # require "google/cloud/spanner/admin/database/v1"
681
671
  #
682
- # database_admin_client = DatabaseAdminClient.new
683
- # formatted_resource = DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
672
+ # database_admin_client = Google::Cloud::Spanner::Admin::Database::V1.new
673
+ # formatted_resource = Google::Cloud::Spanner::Admin::Database::V1::DatabaseAdminClient.database_path("[PROJECT]", "[INSTANCE]", "[DATABASE]")
684
674
  # permissions = []
685
675
  # response = database_admin_client.test_iam_permissions(formatted_resource, permissions)
686
676
 
@@ -688,10 +678,11 @@ module Google
688
678
  resource,
689
679
  permissions,
690
680
  options: nil
691
- req = Google::Iam::V1::TestIamPermissionsRequest.new({
681
+ req = {
692
682
  resource: resource,
693
683
  permissions: permissions
694
- }.delete_if { |_, v| v.nil? })
684
+ }.delete_if { |_, v| v.nil? }
685
+ req = Google::Gax::to_proto(req, Google::Iam::V1::TestIamPermissionsRequest)
695
686
  @test_iam_permissions.call(req, options)
696
687
  end
697
688
  end