google-cloud-spanner 0.21.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 +7 -0
- data/lib/google-cloud-spanner.rb +106 -0
- data/lib/google/cloud/spanner.rb +382 -0
- data/lib/google/cloud/spanner/admin/database/v1.rb +17 -0
- data/lib/google/cloud/spanner/admin/database/v1/database_admin_client.rb +703 -0
- data/lib/google/cloud/spanner/admin/database/v1/database_admin_client_config.json +73 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/iam/v1/policy.rb +139 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/protobuf/any.rb +114 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/rpc/status.rb +83 -0
- data/lib/google/cloud/spanner/admin/database/v1/doc/google/spanner/admin/database/v1/spanner_database_admin.rb +188 -0
- data/lib/google/cloud/spanner/admin/instance/v1.rb +17 -0
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/iam/v1/policy.rb +139 -0
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/any.rb +114 -0
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/protobuf/field_mask.rb +223 -0
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/rpc/status.rb +83 -0
- data/lib/google/cloud/spanner/admin/instance/v1/doc/google/spanner/admin/instance/v1/spanner_instance_admin.rb +268 -0
- data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client.rb +868 -0
- data/lib/google/cloud/spanner/admin/instance/v1/instance_admin_client_config.json +78 -0
- data/lib/google/cloud/spanner/client.rb +1034 -0
- data/lib/google/cloud/spanner/commit.rb +351 -0
- data/lib/google/cloud/spanner/convert.rb +311 -0
- data/lib/google/cloud/spanner/credentials.rb +32 -0
- data/lib/google/cloud/spanner/data.rb +199 -0
- data/lib/google/cloud/spanner/database.rb +377 -0
- data/lib/google/cloud/spanner/database/job.rb +179 -0
- data/lib/google/cloud/spanner/database/list.rb +171 -0
- data/lib/google/cloud/spanner/errors.rb +73 -0
- data/lib/google/cloud/spanner/fields.rb +252 -0
- data/lib/google/cloud/spanner/instance.rb +472 -0
- data/lib/google/cloud/spanner/instance/config.rb +99 -0
- data/lib/google/cloud/spanner/instance/config/list.rb +171 -0
- data/lib/google/cloud/spanner/instance/job.rb +197 -0
- data/lib/google/cloud/spanner/instance/list.rb +167 -0
- data/lib/google/cloud/spanner/policy.rb +201 -0
- data/lib/google/cloud/spanner/pool.rb +279 -0
- data/lib/google/cloud/spanner/project.rb +480 -0
- data/lib/google/cloud/spanner/range.rb +99 -0
- data/lib/google/cloud/spanner/results.rb +280 -0
- data/lib/google/cloud/spanner/service.rb +458 -0
- data/lib/google/cloud/spanner/session.rb +565 -0
- data/lib/google/cloud/spanner/snapshot.rb +260 -0
- data/lib/google/cloud/spanner/transaction.rb +533 -0
- data/lib/google/cloud/spanner/v1.rb +17 -0
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/duration.rb +77 -0
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/struct.rb +73 -0
- data/lib/google/cloud/spanner/v1/doc/google/protobuf/timestamp.rb +81 -0
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/keys.rb +148 -0
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/mutation.rb +80 -0
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/query_plan.rb +120 -0
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/result_set.rb +175 -0
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/spanner.rb +206 -0
- data/lib/google/cloud/spanner/v1/doc/google/spanner/v1/transaction.rb +351 -0
- data/lib/google/cloud/spanner/v1/spanner_client.rb +850 -0
- data/lib/google/cloud/spanner/v1/spanner_client_config.json +78 -0
- data/lib/google/cloud/spanner/version.rb +22 -0
- data/lib/google/spanner/admin/database/v1/spanner_database_admin_pb.rb +85 -0
- data/lib/google/spanner/admin/database/v1/spanner_database_admin_services_pb.rb +95 -0
- data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_pb.rb +106 -0
- data/lib/google/spanner/admin/instance/v1/spanner_instance_admin_services_pb.rb +180 -0
- data/lib/google/spanner/v1/keys_pb.rb +33 -0
- data/lib/google/spanner/v1/mutation_pb.rb +38 -0
- data/lib/google/spanner/v1/query_plan_pb.rb +47 -0
- data/lib/google/spanner/v1/result_set_pb.rb +43 -0
- data/lib/google/spanner/v1/spanner_pb.rb +90 -0
- data/lib/google/spanner/v1/spanner_services_pb.rb +131 -0
- data/lib/google/spanner/v1/transaction_pb.rb +51 -0
- data/lib/google/spanner/v1/type_pb.rb +43 -0
- metadata +309 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Copyright 2016 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
|
+
|
|
16
|
+
require "google/cloud/spanner/instance/config/list"
|
|
17
|
+
|
|
18
|
+
module Google
|
|
19
|
+
module Cloud
|
|
20
|
+
module Spanner
|
|
21
|
+
class Instance
|
|
22
|
+
##
|
|
23
|
+
# # Instance Config
|
|
24
|
+
#
|
|
25
|
+
# Represents a Cloud Spanner instance configuration. Instance
|
|
26
|
+
# configurations define the geographic placement of nodes and their
|
|
27
|
+
# replication.
|
|
28
|
+
#
|
|
29
|
+
# See {Google::Cloud::Spanner::Project#instance_configs} and
|
|
30
|
+
# {Google::Cloud::Spanner::Project#instance_config}.
|
|
31
|
+
#
|
|
32
|
+
# @example
|
|
33
|
+
# require "google/cloud/spanner"
|
|
34
|
+
#
|
|
35
|
+
# spanner = Google::Cloud::Spanner.new
|
|
36
|
+
#
|
|
37
|
+
# instance_configs = spanner.instance_configs
|
|
38
|
+
# instance_configs.each do |config|
|
|
39
|
+
# puts config.instance_config_id
|
|
40
|
+
# end
|
|
41
|
+
#
|
|
42
|
+
class Config
|
|
43
|
+
##
|
|
44
|
+
# @private Creates a new Instance::Config instance.
|
|
45
|
+
def initialize grpc
|
|
46
|
+
@grpc = grpc
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# The unique identifier for the project.
|
|
50
|
+
# @return [String]
|
|
51
|
+
def project_id
|
|
52
|
+
Admin::Instance::V1::InstanceAdminClient
|
|
53
|
+
.match_project_from_instance_config_name @grpc.name
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
# A unique identifier for the instance configuration.
|
|
58
|
+
# @return [String]
|
|
59
|
+
def instance_config_id
|
|
60
|
+
Admin::Instance::V1::InstanceAdminClient
|
|
61
|
+
.match_instance_config_from_instance_config_name @grpc.name
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
##
|
|
65
|
+
# The full path for the instance config resource. Values are of the
|
|
66
|
+
# form `projects/<project_id>/instanceConfigs/<instance_config_id>`.
|
|
67
|
+
# @return [String]
|
|
68
|
+
def path
|
|
69
|
+
@grpc.name
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
##
|
|
73
|
+
# The name of this instance configuration as it appears in UIs.
|
|
74
|
+
# @return [String]
|
|
75
|
+
def name
|
|
76
|
+
@grpc.display_name
|
|
77
|
+
end
|
|
78
|
+
alias_method :display_name, :name
|
|
79
|
+
|
|
80
|
+
##
|
|
81
|
+
# @private Creates a new Instance::Config instance from a
|
|
82
|
+
# Google::Spanner::Admin::Instance::V1::InstanceConfig.
|
|
83
|
+
def self.from_grpc grpc
|
|
84
|
+
new grpc
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
protected
|
|
88
|
+
|
|
89
|
+
##
|
|
90
|
+
# @private Raise an error unless an active connection to the service
|
|
91
|
+
# is available.
|
|
92
|
+
def ensure_service!
|
|
93
|
+
fail "Must have active connection to service" unless service
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# Copyright 2016 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
|
+
|
|
16
|
+
require "delegate"
|
|
17
|
+
|
|
18
|
+
module Google
|
|
19
|
+
module Cloud
|
|
20
|
+
module Spanner
|
|
21
|
+
class Instance
|
|
22
|
+
class Config
|
|
23
|
+
##
|
|
24
|
+
# Instance::Config::List is a special case Array with additional
|
|
25
|
+
# values.
|
|
26
|
+
class List < DelegateClass(::Array)
|
|
27
|
+
##
|
|
28
|
+
# If not empty, indicates that there are more records that match
|
|
29
|
+
# the request and this value should be passed to continue.
|
|
30
|
+
attr_accessor :token
|
|
31
|
+
|
|
32
|
+
##
|
|
33
|
+
# @private Create a new Instance::Config::List with an array of
|
|
34
|
+
# Instance::Config instances.
|
|
35
|
+
def initialize arr = []
|
|
36
|
+
super arr
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
##
|
|
40
|
+
# Whether there is a next page of instance configs.
|
|
41
|
+
#
|
|
42
|
+
# @return [Boolean]
|
|
43
|
+
#
|
|
44
|
+
# @example
|
|
45
|
+
# require "google/cloud/spanner"
|
|
46
|
+
#
|
|
47
|
+
# spanner = Google::Cloud::Spanner.new
|
|
48
|
+
#
|
|
49
|
+
# configs = spanner.instance_configs
|
|
50
|
+
# if configs.next?
|
|
51
|
+
# next_configs = configs.next
|
|
52
|
+
# end
|
|
53
|
+
def next?
|
|
54
|
+
!token.nil?
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
##
|
|
58
|
+
# Retrieve the next page of instance configurations.
|
|
59
|
+
#
|
|
60
|
+
# @return [Instance::Config::List] The list of instance
|
|
61
|
+
# configurations.
|
|
62
|
+
#
|
|
63
|
+
# @example
|
|
64
|
+
# require "google/cloud/spanner"
|
|
65
|
+
#
|
|
66
|
+
# spanner = Google::Cloud::Spanner.new
|
|
67
|
+
#
|
|
68
|
+
# configs = spanner.instance_configs
|
|
69
|
+
# if configs.next?
|
|
70
|
+
# next_configs = configs.next
|
|
71
|
+
# end
|
|
72
|
+
def next
|
|
73
|
+
return nil unless next?
|
|
74
|
+
ensure_service!
|
|
75
|
+
options = { token: token, max: @max }
|
|
76
|
+
grpc = @service.list_instance_configs options
|
|
77
|
+
self.class.from_grpc grpc, @service, @max
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
##
|
|
81
|
+
# Retrieves remaining results by repeatedly invoking {#next} until
|
|
82
|
+
# {#next?} returns `false`. Calls the given block once for each
|
|
83
|
+
# result, which is passed as the argument to the block.
|
|
84
|
+
#
|
|
85
|
+
# An Enumerator is returned if no block is given.
|
|
86
|
+
#
|
|
87
|
+
# This method will make repeated API calls until all remaining
|
|
88
|
+
# results are retrieved. (Unlike `#each`, for example, which merely
|
|
89
|
+
# iterates over the results returned by a single API call.) Use with
|
|
90
|
+
# caution.
|
|
91
|
+
#
|
|
92
|
+
# @param [Integer] request_limit The upper limit of API requests to
|
|
93
|
+
# make to load all configs. Default is no limit.
|
|
94
|
+
# @yield [config] The block for accessing each instance config.
|
|
95
|
+
# @yieldparam [Instance::Config] config The instance config object.
|
|
96
|
+
#
|
|
97
|
+
# @return [Enumerator]
|
|
98
|
+
#
|
|
99
|
+
# @example Iterating each instance config by passing a block:
|
|
100
|
+
# require "google/cloud/spanner"
|
|
101
|
+
#
|
|
102
|
+
# spanner = Google::Cloud::Spanner.new
|
|
103
|
+
#
|
|
104
|
+
# spanner.instance_configs.all do |config|
|
|
105
|
+
# puts config.instance_config_id
|
|
106
|
+
# end
|
|
107
|
+
#
|
|
108
|
+
# @example Using the enumerator by not passing a block:
|
|
109
|
+
# require "google/cloud/spanner"
|
|
110
|
+
#
|
|
111
|
+
# spanner = Google::Cloud::Spanner.new
|
|
112
|
+
#
|
|
113
|
+
# all_config_ids = spanner.instance_configs.all.map do |config|
|
|
114
|
+
# config.instance_config_id
|
|
115
|
+
# end
|
|
116
|
+
#
|
|
117
|
+
# @example Limit the number of API calls made:
|
|
118
|
+
# require "google/cloud/spanner"
|
|
119
|
+
#
|
|
120
|
+
# spanner = Google::Cloud::Spanner.new
|
|
121
|
+
#
|
|
122
|
+
# spanner.instance_configs.all(request_limit: 10) do |config|
|
|
123
|
+
# puts config.instance_config_id
|
|
124
|
+
# end
|
|
125
|
+
#
|
|
126
|
+
def all request_limit: nil
|
|
127
|
+
request_limit = request_limit.to_i if request_limit
|
|
128
|
+
unless block_given?
|
|
129
|
+
return enum_for(:all, request_limit: request_limit)
|
|
130
|
+
end
|
|
131
|
+
results = self
|
|
132
|
+
loop do
|
|
133
|
+
results.each { |r| yield r }
|
|
134
|
+
if request_limit
|
|
135
|
+
request_limit -= 1
|
|
136
|
+
break if request_limit < 0
|
|
137
|
+
end
|
|
138
|
+
break unless results.next?
|
|
139
|
+
results = results.next
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
##
|
|
144
|
+
# @private New Instance::Config::List from a
|
|
145
|
+
# Google::Spanner::Admin::Instance::V1::ListInstanceConfigsResponse
|
|
146
|
+
# object.
|
|
147
|
+
def self.from_grpc grpc, service, max = nil
|
|
148
|
+
configs = List.new(Array(grpc.instance_configs).map do |config|
|
|
149
|
+
Instance::Config.from_grpc config
|
|
150
|
+
end)
|
|
151
|
+
token = grpc.next_page_token
|
|
152
|
+
token = nil if token == ""
|
|
153
|
+
configs.instance_variable_set :@token, token
|
|
154
|
+
configs.instance_variable_set :@service, service
|
|
155
|
+
configs.instance_variable_set :@max, max
|
|
156
|
+
configs
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
protected
|
|
160
|
+
|
|
161
|
+
##
|
|
162
|
+
# Raise an error unless an active service is available.
|
|
163
|
+
def ensure_service!
|
|
164
|
+
fail "Must have active connection" unless @service
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# Copyright 2016 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
|
+
|
|
16
|
+
module Google
|
|
17
|
+
module Cloud
|
|
18
|
+
module Spanner
|
|
19
|
+
class Instance
|
|
20
|
+
##
|
|
21
|
+
# # Job
|
|
22
|
+
#
|
|
23
|
+
# A resource representing the long-running, asynchronous processing of
|
|
24
|
+
# an instance create or update operation. The job can be refreshed to
|
|
25
|
+
# retrieve the instance object once the operation has been completed.
|
|
26
|
+
#
|
|
27
|
+
# See {Project#create_instance} and {Instance#update}.
|
|
28
|
+
#
|
|
29
|
+
# @see https://cloud.google.com/spanner/reference/rpc/google.longrunning#google.longrunning.Operation
|
|
30
|
+
# Long-running Operation
|
|
31
|
+
#
|
|
32
|
+
# @example
|
|
33
|
+
# require "google/cloud/spanner"
|
|
34
|
+
#
|
|
35
|
+
# spanner = Google::Cloud::Spanner.new
|
|
36
|
+
#
|
|
37
|
+
# job = spanner.create_instance "my-new-instance",
|
|
38
|
+
# name: "My New Instance",
|
|
39
|
+
# config: "regional-us-central1",
|
|
40
|
+
# nodes: 5,
|
|
41
|
+
# labels: { production: :env }
|
|
42
|
+
#
|
|
43
|
+
# job.done? #=> false
|
|
44
|
+
# job.reload! # API call
|
|
45
|
+
# job.done? #=> true
|
|
46
|
+
# instance = job.instance
|
|
47
|
+
#
|
|
48
|
+
class Job
|
|
49
|
+
##
|
|
50
|
+
# @private The Google::Gax::Operation gRPC object.
|
|
51
|
+
attr_accessor :grpc
|
|
52
|
+
|
|
53
|
+
##
|
|
54
|
+
# @private The gRPC Service object.
|
|
55
|
+
attr_accessor :service
|
|
56
|
+
|
|
57
|
+
##
|
|
58
|
+
# @private Creates a new Instance::Job instance.
|
|
59
|
+
def initialize
|
|
60
|
+
@grpc = nil
|
|
61
|
+
@service = nil
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
##
|
|
65
|
+
# The instance that is the object of the operation.
|
|
66
|
+
#
|
|
67
|
+
# @return [Google::Cloud::Spanner::Instance, nil] The instance, or
|
|
68
|
+
# `nil` if the operation is not complete.
|
|
69
|
+
#
|
|
70
|
+
# @example
|
|
71
|
+
# require "google/cloud/spanner"
|
|
72
|
+
#
|
|
73
|
+
# spanner = Google::Cloud::Spanner.new
|
|
74
|
+
#
|
|
75
|
+
# job = spanner.create_instance "my-new-instance",
|
|
76
|
+
# name: "My New Instance",
|
|
77
|
+
# config: "regional-us-central1",
|
|
78
|
+
# nodes: 5,
|
|
79
|
+
# labels: { production: :env }
|
|
80
|
+
#
|
|
81
|
+
# job.done? #=> true
|
|
82
|
+
# instance = job.instance
|
|
83
|
+
#
|
|
84
|
+
def instance
|
|
85
|
+
return nil unless done?
|
|
86
|
+
return nil unless @grpc.grpc_op.result == :response
|
|
87
|
+
Instance.from_grpc @grpc.results, service
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
##
|
|
91
|
+
# Checks if the processing of the instance operation is complete.
|
|
92
|
+
#
|
|
93
|
+
# @return [boolean] `true` when complete, `false` otherwise.
|
|
94
|
+
#
|
|
95
|
+
# @example
|
|
96
|
+
# require "google/cloud/spanner"
|
|
97
|
+
#
|
|
98
|
+
# spanner = Google::Cloud::Spanner.new
|
|
99
|
+
#
|
|
100
|
+
# job = spanner.create_instance "my-new-instance",
|
|
101
|
+
# name: "My New Instance",
|
|
102
|
+
# config: "regional-us-central1",
|
|
103
|
+
# nodes: 5,
|
|
104
|
+
# labels: { production: :env }
|
|
105
|
+
#
|
|
106
|
+
# job.done? #=> false
|
|
107
|
+
#
|
|
108
|
+
def done?
|
|
109
|
+
@grpc.done?
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
##
|
|
113
|
+
# Checks if the processing of the instance operation has errored.
|
|
114
|
+
#
|
|
115
|
+
# @return [boolean] `true` when errored, `false` otherwise.
|
|
116
|
+
#
|
|
117
|
+
# @example
|
|
118
|
+
# require "google/cloud/spanner"
|
|
119
|
+
#
|
|
120
|
+
# spanner = Google::Cloud::Spanner.new
|
|
121
|
+
#
|
|
122
|
+
# job = spanner.create_instance "my-new-instance",
|
|
123
|
+
# name: "My New Instance",
|
|
124
|
+
# config: "regional-us-central1",
|
|
125
|
+
# nodes: 5,
|
|
126
|
+
# labels: { production: :env }
|
|
127
|
+
#
|
|
128
|
+
# job.error? #=> false
|
|
129
|
+
#
|
|
130
|
+
def error?
|
|
131
|
+
@grpc.error?
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
##
|
|
135
|
+
# Reloads the job with current data from the long-running,
|
|
136
|
+
# asynchronous processing of an instance operation.
|
|
137
|
+
#
|
|
138
|
+
# @return [Google::Cloud::Spanner::Instance::Job] The same job
|
|
139
|
+
# instance.
|
|
140
|
+
#
|
|
141
|
+
# @example
|
|
142
|
+
# require "google/cloud/spanner"
|
|
143
|
+
#
|
|
144
|
+
# spanner = Google::Cloud::Spanner.new
|
|
145
|
+
#
|
|
146
|
+
# job = spanner.create_instance "my-new-instance",
|
|
147
|
+
# name: "My New Instance",
|
|
148
|
+
# config: "regional-us-central1",
|
|
149
|
+
# nodes: 5,
|
|
150
|
+
# labels: { production: :env }
|
|
151
|
+
#
|
|
152
|
+
# job.done? #=> false
|
|
153
|
+
# job.reload! # API call
|
|
154
|
+
# job.done? #=> true
|
|
155
|
+
#
|
|
156
|
+
def reload!
|
|
157
|
+
@grpc.reload!
|
|
158
|
+
self
|
|
159
|
+
end
|
|
160
|
+
alias_method :refresh!, :reload!
|
|
161
|
+
|
|
162
|
+
##
|
|
163
|
+
# Reloads the job until the operation is complete. The delay between
|
|
164
|
+
# reloads will incrementally increase.
|
|
165
|
+
#
|
|
166
|
+
# @example
|
|
167
|
+
# require "google/cloud/spanner"
|
|
168
|
+
#
|
|
169
|
+
# spanner = Google::Cloud::Spanner.new
|
|
170
|
+
#
|
|
171
|
+
# job = spanner.create_instance "my-new-instance",
|
|
172
|
+
# name: "My New Instance",
|
|
173
|
+
# config: "regional-us-central1",
|
|
174
|
+
# nodes: 5,
|
|
175
|
+
# labels: { production: :env }
|
|
176
|
+
#
|
|
177
|
+
# job.done? #=> false
|
|
178
|
+
# job.wait_until_done!
|
|
179
|
+
# job.done? #=> true
|
|
180
|
+
#
|
|
181
|
+
def wait_until_done!
|
|
182
|
+
@grpc.wait_until_done!
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
##
|
|
186
|
+
# @private New Instance::Job from a Google::Gax::Operation object.
|
|
187
|
+
def self.from_grpc grpc, service
|
|
188
|
+
new.tap do |job|
|
|
189
|
+
job.instance_variable_set :@grpc, grpc
|
|
190
|
+
job.instance_variable_set :@service, service
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|