gcloud 0.11.0 → 0.12.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 +8 -8
- data/AUTHENTICATION.md +3 -3
- data/CHANGELOG.md +92 -0
- data/OVERVIEW.md +3 -3
- data/lib/gcloud.rb +75 -25
- data/lib/gcloud/backoff.rb +5 -1
- data/lib/gcloud/bigquery.rb +25 -43
- data/lib/gcloud/bigquery/copy_job.rb +13 -13
- data/lib/gcloud/bigquery/data.rb +20 -16
- data/lib/gcloud/bigquery/dataset.rb +202 -177
- data/lib/gcloud/bigquery/dataset/access.rb +118 -104
- data/lib/gcloud/bigquery/dataset/list.rb +14 -18
- data/lib/gcloud/bigquery/extract_job.rb +12 -12
- data/lib/gcloud/bigquery/insert_response.rb +12 -14
- data/lib/gcloud/bigquery/job.rb +45 -57
- data/lib/gcloud/bigquery/job/list.rb +18 -24
- data/lib/gcloud/bigquery/load_job.rb +35 -27
- data/lib/gcloud/bigquery/project.rb +53 -73
- data/lib/gcloud/bigquery/query_data.rb +28 -35
- data/lib/gcloud/bigquery/query_job.rb +18 -18
- data/lib/gcloud/bigquery/schema.rb +359 -0
- data/lib/gcloud/bigquery/service.rb +506 -0
- data/lib/gcloud/bigquery/table.rb +185 -266
- data/lib/gcloud/bigquery/table/list.rb +15 -19
- data/lib/gcloud/bigquery/view.rb +126 -81
- data/lib/gcloud/datastore.rb +39 -27
- data/lib/gcloud/datastore/commit.rb +2 -2
- data/lib/gcloud/datastore/dataset.rb +8 -19
- data/lib/gcloud/datastore/dataset/lookup_results.rb +2 -4
- data/lib/gcloud/datastore/dataset/query_results.rb +0 -2
- data/lib/gcloud/datastore/entity.rb +7 -1
- data/lib/gcloud/datastore/errors.rb +5 -27
- data/lib/gcloud/datastore/grpc_utils.rb +4 -3
- data/lib/gcloud/datastore/key.rb +6 -0
- data/lib/gcloud/datastore/service.rb +18 -12
- data/lib/gcloud/datastore/transaction.rb +0 -10
- data/lib/gcloud/dns.rb +29 -19
- data/lib/gcloud/dns/change.rb +10 -15
- data/lib/gcloud/dns/change/list.rb +4 -4
- data/lib/gcloud/dns/importer.rb +1 -1
- data/lib/gcloud/dns/project.rb +32 -49
- data/lib/gcloud/dns/record.rb +8 -2
- data/lib/gcloud/dns/record/list.rb +4 -4
- data/lib/gcloud/dns/service.rb +167 -0
- data/lib/gcloud/dns/zone.rb +33 -52
- data/lib/gcloud/dns/zone/list.rb +12 -16
- data/lib/gcloud/errors.rb +31 -19
- data/lib/gcloud/logging.rb +50 -39
- data/lib/gcloud/logging/entry.rb +197 -24
- data/lib/gcloud/logging/entry/list.rb +0 -2
- data/lib/gcloud/logging/logger.rb +1 -1
- data/lib/gcloud/logging/metric.rb +3 -9
- data/lib/gcloud/logging/metric/list.rb +0 -2
- data/lib/gcloud/logging/project.rb +58 -54
- data/lib/gcloud/logging/resource_descriptor.rb +2 -2
- data/lib/gcloud/logging/resource_descriptor/list.rb +0 -2
- data/lib/gcloud/logging/service.rb +32 -23
- data/lib/gcloud/logging/sink.rb +8 -14
- data/lib/gcloud/logging/sink/list.rb +0 -2
- data/lib/gcloud/pubsub.rb +21 -16
- data/lib/gcloud/pubsub/policy.rb +204 -0
- data/lib/gcloud/pubsub/project.rb +26 -38
- data/lib/gcloud/pubsub/service.rb +39 -31
- data/lib/gcloud/pubsub/subscription.rb +56 -59
- data/lib/gcloud/pubsub/subscription/list.rb +4 -4
- data/lib/gcloud/pubsub/topic.rb +69 -66
- data/lib/gcloud/pubsub/topic/list.rb +0 -2
- data/lib/gcloud/pubsub/topic/{batch.rb → publisher.rb} +15 -2
- data/lib/gcloud/resource_manager.rb +27 -26
- data/lib/gcloud/resource_manager/manager.rb +19 -39
- data/lib/gcloud/resource_manager/policy.rb +211 -0
- data/lib/gcloud/resource_manager/project.rb +97 -121
- data/lib/gcloud/resource_manager/project/list.rb +7 -7
- data/lib/gcloud/resource_manager/project/updater.rb +4 -9
- data/lib/gcloud/resource_manager/service.rb +127 -0
- data/lib/gcloud/storage.rb +24 -42
- data/lib/gcloud/storage/bucket.rb +104 -192
- data/lib/gcloud/storage/bucket/acl.rb +47 -143
- data/lib/gcloud/storage/bucket/cors.rb +55 -11
- data/lib/gcloud/storage/bucket/list.rb +14 -14
- data/lib/gcloud/storage/errors.rb +3 -43
- data/lib/gcloud/storage/file.rb +114 -111
- data/lib/gcloud/storage/file/acl.rb +27 -113
- data/lib/gcloud/storage/file/list.rb +21 -21
- data/lib/gcloud/storage/project.rb +49 -59
- data/lib/gcloud/storage/service.rb +347 -0
- data/lib/gcloud/translate.rb +24 -14
- data/lib/gcloud/translate/api.rb +12 -21
- data/lib/gcloud/translate/detection.rb +5 -5
- data/lib/gcloud/translate/language.rb +1 -1
- data/lib/gcloud/translate/service.rb +80 -0
- data/lib/gcloud/translate/translation.rb +6 -6
- data/lib/gcloud/version.rb +1 -1
- data/lib/gcloud/vision.rb +24 -15
- data/lib/gcloud/vision/annotate.rb +24 -21
- data/lib/gcloud/vision/annotation.rb +9 -9
- data/lib/gcloud/vision/annotation/entity.rb +11 -11
- data/lib/gcloud/vision/annotation/face.rb +25 -25
- data/lib/gcloud/vision/annotation/properties.rb +8 -8
- data/lib/gcloud/vision/annotation/safe_search.rb +4 -4
- data/lib/gcloud/vision/annotation/text.rb +7 -7
- data/lib/gcloud/vision/annotation/vertex.rb +1 -1
- data/lib/gcloud/vision/image.rb +11 -11
- data/lib/gcloud/vision/location.rb +5 -2
- data/lib/gcloud/vision/project.rb +14 -16
- data/lib/gcloud/vision/service.rb +66 -0
- data/lib/google/api_client.rb +0 -0
- metadata +27 -24
- data/lib/gcloud/bigquery/connection.rb +0 -624
- data/lib/gcloud/bigquery/errors.rb +0 -68
- data/lib/gcloud/bigquery/table/schema.rb +0 -234
- data/lib/gcloud/dns/connection.rb +0 -173
- data/lib/gcloud/dns/errors.rb +0 -68
- data/lib/gcloud/resource_manager/connection.rb +0 -134
- data/lib/gcloud/resource_manager/errors.rb +0 -68
- data/lib/gcloud/storage/connection.rb +0 -444
- data/lib/gcloud/translate/connection.rb +0 -85
- data/lib/gcloud/translate/errors.rb +0 -68
- data/lib/gcloud/upload.rb +0 -95
- data/lib/gcloud/vision/connection.rb +0 -63
- data/lib/gcloud/vision/errors.rb +0 -69
|
@@ -13,9 +13,10 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
require "gcloud/backoff"
|
|
17
|
+
require "gcloud/errors"
|
|
16
18
|
require "google/pubsub/v1/pubsub_services"
|
|
17
19
|
require "google/iam/v1/iam_policy_services"
|
|
18
|
-
require "gcloud/backoff"
|
|
19
20
|
require "gcloud/grpc_utils"
|
|
20
21
|
require "json"
|
|
21
22
|
|
|
@@ -25,14 +26,16 @@ module Gcloud
|
|
|
25
26
|
# @private Represents the gRPC Pub/Sub service, including all the API
|
|
26
27
|
# methods.
|
|
27
28
|
class Service
|
|
28
|
-
attr_accessor :project, :credentials, :host
|
|
29
|
+
attr_accessor :project, :credentials, :host, :retries, :timeout
|
|
29
30
|
|
|
30
31
|
##
|
|
31
32
|
# Creates a new Service instance.
|
|
32
|
-
def initialize project, credentials
|
|
33
|
+
def initialize project, credentials, host: nil, retries: nil, timeout: nil
|
|
33
34
|
@project = project
|
|
34
35
|
@credentials = credentials
|
|
35
|
-
@host = "pubsub.googleapis.com"
|
|
36
|
+
@host = host || "pubsub.googleapis.com"
|
|
37
|
+
@retries = retries
|
|
38
|
+
@timeout = timeout
|
|
36
39
|
end
|
|
37
40
|
|
|
38
41
|
def creds
|
|
@@ -43,19 +46,22 @@ module Gcloud
|
|
|
43
46
|
|
|
44
47
|
def subscriber
|
|
45
48
|
return mocked_subscriber if mocked_subscriber
|
|
46
|
-
@subscriber ||= Google::Pubsub::V1::Subscriber::Stub.new
|
|
49
|
+
@subscriber ||= Google::Pubsub::V1::Subscriber::Stub.new(
|
|
50
|
+
host, creds, timeout: timeout)
|
|
47
51
|
end
|
|
48
52
|
attr_accessor :mocked_subscriber
|
|
49
53
|
|
|
50
54
|
def publisher
|
|
51
55
|
return mocked_publisher if mocked_publisher
|
|
52
|
-
@publisher ||= Google::Pubsub::V1::Publisher::Stub.new
|
|
56
|
+
@publisher ||= Google::Pubsub::V1::Publisher::Stub.new(
|
|
57
|
+
host, creds, timeout: timeout)
|
|
53
58
|
end
|
|
54
59
|
attr_accessor :mocked_publisher
|
|
55
60
|
|
|
56
61
|
def iam
|
|
57
62
|
return mocked_iam if mocked_iam
|
|
58
|
-
@iam ||= Google::Iam::V1::IAMPolicy::Stub.new
|
|
63
|
+
@iam ||= Google::Iam::V1::IAMPolicy::Stub.new(
|
|
64
|
+
host, creds, timeout: timeout)
|
|
59
65
|
end
|
|
60
66
|
attr_accessor :mocked_iam
|
|
61
67
|
|
|
@@ -74,7 +80,7 @@ module Gcloud
|
|
|
74
80
|
r.topic = topic_path(topic_name, options)
|
|
75
81
|
end
|
|
76
82
|
|
|
77
|
-
|
|
83
|
+
execute { publisher.get_topic topic_req }
|
|
78
84
|
end
|
|
79
85
|
|
|
80
86
|
##
|
|
@@ -86,7 +92,7 @@ module Gcloud
|
|
|
86
92
|
r.page_size = options[:max] if options[:max]
|
|
87
93
|
end
|
|
88
94
|
|
|
89
|
-
|
|
95
|
+
execute { publisher.list_topics topics_req }
|
|
90
96
|
end
|
|
91
97
|
|
|
92
98
|
##
|
|
@@ -96,7 +102,7 @@ module Gcloud
|
|
|
96
102
|
r.name = topic_path(topic_name, options)
|
|
97
103
|
end
|
|
98
104
|
|
|
99
|
-
|
|
105
|
+
execute { publisher.create_topic topic_req }
|
|
100
106
|
end
|
|
101
107
|
|
|
102
108
|
##
|
|
@@ -109,7 +115,7 @@ module Gcloud
|
|
|
109
115
|
r.topic = topic_path(topic_name)
|
|
110
116
|
end
|
|
111
117
|
|
|
112
|
-
|
|
118
|
+
execute { publisher.delete_topic topic_req }
|
|
113
119
|
end
|
|
114
120
|
|
|
115
121
|
##
|
|
@@ -126,7 +132,7 @@ module Gcloud
|
|
|
126
132
|
end
|
|
127
133
|
)
|
|
128
134
|
|
|
129
|
-
|
|
135
|
+
execute { publisher.publish publish_req }
|
|
130
136
|
end
|
|
131
137
|
|
|
132
138
|
##
|
|
@@ -136,7 +142,7 @@ module Gcloud
|
|
|
136
142
|
subscription: subscription_path(subscription_name, options)
|
|
137
143
|
)
|
|
138
144
|
|
|
139
|
-
|
|
145
|
+
execute { subscriber.get_subscription sub_req }
|
|
140
146
|
end
|
|
141
147
|
|
|
142
148
|
##
|
|
@@ -148,7 +154,7 @@ module Gcloud
|
|
|
148
154
|
list_req = Google::Pubsub::V1::ListTopicSubscriptionsRequest.new \
|
|
149
155
|
list_params
|
|
150
156
|
|
|
151
|
-
|
|
157
|
+
execute { publisher.list_topic_subscriptions list_req }
|
|
152
158
|
end
|
|
153
159
|
|
|
154
160
|
##
|
|
@@ -159,7 +165,7 @@ module Gcloud
|
|
|
159
165
|
page_size: options[:max] }.delete_if { |_, v| v.nil? }
|
|
160
166
|
list_req = Google::Pubsub::V1::ListSubscriptionsRequest.new list_params
|
|
161
167
|
|
|
162
|
-
|
|
168
|
+
execute { subscriber.list_subscriptions list_req }
|
|
163
169
|
end
|
|
164
170
|
|
|
165
171
|
##
|
|
@@ -176,7 +182,7 @@ module Gcloud
|
|
|
176
182
|
attributes: (options[:attributes] || {}).to_h)
|
|
177
183
|
end
|
|
178
184
|
|
|
179
|
-
|
|
185
|
+
execute { subscriber.create_subscription sub_req }
|
|
180
186
|
end
|
|
181
187
|
|
|
182
188
|
##
|
|
@@ -187,7 +193,7 @@ module Gcloud
|
|
|
187
193
|
subscription: subscription_path(subscription)
|
|
188
194
|
)
|
|
189
195
|
|
|
190
|
-
|
|
196
|
+
execute { subscriber.delete_subscription del_req }
|
|
191
197
|
end
|
|
192
198
|
|
|
193
199
|
##
|
|
@@ -199,7 +205,7 @@ module Gcloud
|
|
|
199
205
|
max_messages: options.fetch(:max, 100).to_i
|
|
200
206
|
)
|
|
201
207
|
|
|
202
|
-
|
|
208
|
+
execute { subscriber.pull pull_req }
|
|
203
209
|
end
|
|
204
210
|
|
|
205
211
|
##
|
|
@@ -210,7 +216,7 @@ module Gcloud
|
|
|
210
216
|
ack_ids: ack_ids
|
|
211
217
|
)
|
|
212
218
|
|
|
213
|
-
|
|
219
|
+
execute { subscriber.acknowledge ack_req }
|
|
214
220
|
end
|
|
215
221
|
|
|
216
222
|
##
|
|
@@ -227,7 +233,7 @@ module Gcloud
|
|
|
227
233
|
)
|
|
228
234
|
)
|
|
229
235
|
|
|
230
|
-
|
|
236
|
+
execute { subscriber.modify_push_config mpc_req }
|
|
231
237
|
end
|
|
232
238
|
|
|
233
239
|
##
|
|
@@ -239,7 +245,7 @@ module Gcloud
|
|
|
239
245
|
ack_deadline_seconds: deadline
|
|
240
246
|
)
|
|
241
247
|
|
|
242
|
-
|
|
248
|
+
execute { subscriber.modify_ack_deadline mad_req }
|
|
243
249
|
end
|
|
244
250
|
|
|
245
251
|
def get_topic_policy topic_name, options = {}
|
|
@@ -247,16 +253,16 @@ module Gcloud
|
|
|
247
253
|
resource: topic_path(topic_name, options)
|
|
248
254
|
)
|
|
249
255
|
|
|
250
|
-
|
|
256
|
+
execute { iam.get_iam_policy get_req }
|
|
251
257
|
end
|
|
252
258
|
|
|
253
259
|
def set_topic_policy topic_name, new_policy, options = {}
|
|
254
260
|
set_req = Google::Iam::V1::SetIamPolicyRequest.new(
|
|
255
261
|
resource: topic_path(topic_name, options),
|
|
256
|
-
policy:
|
|
262
|
+
policy: new_policy
|
|
257
263
|
)
|
|
258
264
|
|
|
259
|
-
|
|
265
|
+
execute { iam.set_iam_policy set_req }
|
|
260
266
|
end
|
|
261
267
|
|
|
262
268
|
def test_topic_permissions topic_name, permissions, options = {}
|
|
@@ -265,7 +271,7 @@ module Gcloud
|
|
|
265
271
|
permissions: permissions
|
|
266
272
|
)
|
|
267
273
|
|
|
268
|
-
|
|
274
|
+
execute { iam.test_iam_permissions test_req }
|
|
269
275
|
end
|
|
270
276
|
|
|
271
277
|
def get_subscription_policy subscription_name, options = {}
|
|
@@ -273,16 +279,16 @@ module Gcloud
|
|
|
273
279
|
resource: subscription_path(subscription_name, options)
|
|
274
280
|
)
|
|
275
281
|
|
|
276
|
-
|
|
282
|
+
execute { iam.get_iam_policy get_req }
|
|
277
283
|
end
|
|
278
284
|
|
|
279
285
|
def set_subscription_policy subscription_name, new_policy, options = {}
|
|
280
286
|
set_req = Google::Iam::V1::SetIamPolicyRequest.new(
|
|
281
287
|
resource: subscription_path(subscription_name, options),
|
|
282
|
-
policy:
|
|
288
|
+
policy: new_policy
|
|
283
289
|
)
|
|
284
290
|
|
|
285
|
-
|
|
291
|
+
execute { iam.set_iam_policy set_req }
|
|
286
292
|
end
|
|
287
293
|
|
|
288
294
|
def test_subscription_permissions subscription_name,
|
|
@@ -292,7 +298,7 @@ module Gcloud
|
|
|
292
298
|
permissions: permissions
|
|
293
299
|
)
|
|
294
300
|
|
|
295
|
-
|
|
301
|
+
execute { iam.test_iam_permissions test_req }
|
|
296
302
|
end
|
|
297
303
|
|
|
298
304
|
def project_path options = {}
|
|
@@ -316,10 +322,12 @@ module Gcloud
|
|
|
316
322
|
|
|
317
323
|
protected
|
|
318
324
|
|
|
319
|
-
def
|
|
320
|
-
Gcloud::Backoff.new(
|
|
325
|
+
def execute
|
|
326
|
+
Gcloud::Backoff.new(retries: retries).execute_grpc do
|
|
321
327
|
yield
|
|
322
328
|
end
|
|
329
|
+
rescue GRPC::BadStatus => e
|
|
330
|
+
raise Error.from_error(e)
|
|
323
331
|
end
|
|
324
332
|
end
|
|
325
333
|
end
|
|
@@ -114,8 +114,6 @@ module Gcloud
|
|
|
114
114
|
push_endpoint: new_endpoint,
|
|
115
115
|
attributes: {}
|
|
116
116
|
) if @grpc
|
|
117
|
-
rescue GRPC::BadStatus => e
|
|
118
|
-
raise Error.from_error(e)
|
|
119
117
|
end
|
|
120
118
|
|
|
121
119
|
##
|
|
@@ -177,9 +175,7 @@ module Gcloud
|
|
|
177
175
|
def delete
|
|
178
176
|
ensure_service!
|
|
179
177
|
service.delete_subscription name
|
|
180
|
-
|
|
181
|
-
rescue GRPC::BadStatus => e
|
|
182
|
-
raise Error.from_error(e)
|
|
178
|
+
true
|
|
183
179
|
end
|
|
184
180
|
|
|
185
181
|
##
|
|
@@ -238,9 +234,7 @@ module Gcloud
|
|
|
238
234
|
end
|
|
239
235
|
acknowledge messages if autoack
|
|
240
236
|
messages
|
|
241
|
-
rescue
|
|
242
|
-
raise Error.from_error(e)
|
|
243
|
-
rescue Faraday::TimeoutError
|
|
237
|
+
rescue Hurley::Timeout
|
|
244
238
|
[]
|
|
245
239
|
end
|
|
246
240
|
|
|
@@ -298,7 +292,7 @@ module Gcloud
|
|
|
298
292
|
# # process msg
|
|
299
293
|
# end
|
|
300
294
|
#
|
|
301
|
-
# @example Limit the number of messages pulled per
|
|
295
|
+
# @example Limit the number of messages pulled per API request with `max`:
|
|
302
296
|
# require "gcloud"
|
|
303
297
|
#
|
|
304
298
|
# gcloud = Gcloud.new
|
|
@@ -358,8 +352,6 @@ module Gcloud
|
|
|
358
352
|
ensure_service!
|
|
359
353
|
service.acknowledge name, *ack_ids
|
|
360
354
|
true
|
|
361
|
-
rescue GRPC::BadStatus => e
|
|
362
|
-
raise Error.from_error(e)
|
|
363
355
|
end
|
|
364
356
|
alias_method :ack, :acknowledge
|
|
365
357
|
|
|
@@ -392,96 +384,105 @@ module Gcloud
|
|
|
392
384
|
ack_ids = coerce_ack_ids messages
|
|
393
385
|
ensure_service!
|
|
394
386
|
service.modify_ack_deadline name, ack_ids, new_deadline
|
|
395
|
-
|
|
396
|
-
rescue GRPC::BadStatus => e
|
|
397
|
-
raise Error.from_error(e)
|
|
387
|
+
true
|
|
398
388
|
end
|
|
399
389
|
|
|
400
390
|
##
|
|
401
|
-
# Gets the access control
|
|
391
|
+
# Gets the [Cloud IAM](https://cloud.google.com/iam/) access control
|
|
392
|
+
# policy for this subscription.
|
|
402
393
|
#
|
|
403
|
-
#
|
|
404
|
-
#
|
|
394
|
+
# @see https://cloud.google.com/pubsub/reference/rpc/google.iam.v1#iampolicy
|
|
395
|
+
# google.iam.v1.IAMPolicy
|
|
405
396
|
#
|
|
406
397
|
# @param [Boolean] force Force the latest policy to be retrieved from the
|
|
407
398
|
# Pub/Sub service when `true`. Otherwise the policy will be memoized to
|
|
408
399
|
# reduce the number of API calls made to the Pub/Sub service. The
|
|
409
400
|
# default is `false`.
|
|
410
401
|
#
|
|
411
|
-
# @
|
|
402
|
+
# @yield [policy] A block for updating the policy. The latest policy will
|
|
403
|
+
# be read from the Pub/Sub service and passed to the block. After the
|
|
404
|
+
# block completes, the modified policy will be written to the service.
|
|
405
|
+
# @yieldparam [Policy] policy the current Cloud IAM Policy for this
|
|
406
|
+
# subscription
|
|
412
407
|
#
|
|
413
|
-
#
|
|
414
|
-
# "etag"=>"CAE=",
|
|
415
|
-
# "bindings" => [{
|
|
416
|
-
# "role" => "roles/viewer",
|
|
417
|
-
# "members" => ["serviceAccount:your-service-account"]
|
|
418
|
-
# }]
|
|
419
|
-
# }
|
|
408
|
+
# @return [Policy] the current Cloud IAM Policy for this subscription
|
|
420
409
|
#
|
|
421
410
|
# @example Policy values are memoized to reduce the number of API calls:
|
|
422
411
|
# require "gcloud"
|
|
423
412
|
#
|
|
424
413
|
# gcloud = Gcloud.new
|
|
425
414
|
# pubsub = gcloud.pubsub
|
|
415
|
+
# sub = pubsub.subscription "my-subscription"
|
|
426
416
|
#
|
|
427
|
-
#
|
|
428
|
-
#
|
|
429
|
-
# puts subscription.policy["rules"]
|
|
417
|
+
# policy = sub.policy # API call
|
|
418
|
+
# policy_2 = sub.policy # No API call
|
|
430
419
|
#
|
|
431
420
|
# @example Use `force` to retrieve the latest policy from the service:
|
|
432
421
|
# require "gcloud"
|
|
433
422
|
#
|
|
434
423
|
# gcloud = Gcloud.new
|
|
435
424
|
# pubsub = gcloud.pubsub
|
|
425
|
+
# sub = pubsub.subscription "my-subscription"
|
|
436
426
|
#
|
|
437
|
-
#
|
|
438
|
-
#
|
|
427
|
+
# policy = sub.policy force: true # API call
|
|
428
|
+
# policy_2 = sub.policy force: true # API call
|
|
429
|
+
#
|
|
430
|
+
# @example Update the policy by passing a block:
|
|
431
|
+
# require "gcloud"
|
|
432
|
+
#
|
|
433
|
+
# gcloud = Gcloud.new
|
|
434
|
+
# pubsub = gcloud.pubsub
|
|
435
|
+
# sub = pubsub.subscription "my-subscription"
|
|
436
|
+
#
|
|
437
|
+
# policy = sub.policy do |p|
|
|
438
|
+
# p.add "roles/owner", "user:owner@example.com"
|
|
439
|
+
# end # 2 API calls
|
|
439
440
|
#
|
|
440
441
|
def policy force: nil
|
|
441
|
-
@policy = nil if force
|
|
442
|
+
@policy = nil if force || block_given?
|
|
442
443
|
@policy ||= begin
|
|
443
444
|
ensure_service!
|
|
444
445
|
grpc = service.get_subscription_policy name
|
|
445
|
-
|
|
446
|
-
rescue GRPC::BadStatus => e
|
|
447
|
-
raise Error.from_error(e)
|
|
446
|
+
Policy.from_grpc grpc
|
|
448
447
|
end
|
|
448
|
+
return @policy unless block_given?
|
|
449
|
+
p = @policy.deep_dup
|
|
450
|
+
yield p
|
|
451
|
+
self.policy = p
|
|
449
452
|
end
|
|
450
453
|
|
|
451
454
|
##
|
|
452
|
-
#
|
|
455
|
+
# Updates the [Cloud IAM](https://cloud.google.com/iam/) access control
|
|
456
|
+
# policy for this subscription. The policy should be read from {#policy}.
|
|
457
|
+
# See {Gcloud::Pubsub::Policy} for an explanation of the policy `etag`
|
|
458
|
+
# property and how to modify policies.
|
|
459
|
+
#
|
|
460
|
+
# You can also update the policy by passing a block to {#policy}, which
|
|
461
|
+
# will call this method internally after the block completes.
|
|
453
462
|
#
|
|
454
|
-
# @
|
|
455
|
-
#
|
|
463
|
+
# @see https://cloud.google.com/pubsub/reference/rpc/google.iam.v1#iampolicy
|
|
464
|
+
# google.iam.v1.IAMPolicy
|
|
456
465
|
#
|
|
457
|
-
#
|
|
458
|
-
#
|
|
459
|
-
# "role" => "roles/viewer",
|
|
460
|
-
# "members" => ["serviceAccount:your-service-account"]
|
|
461
|
-
# }]
|
|
462
|
-
# }
|
|
466
|
+
# @param [Policy] new_policy a new or modified Cloud IAM Policy for this
|
|
467
|
+
# subscription
|
|
463
468
|
#
|
|
464
469
|
# @example
|
|
465
470
|
# require "gcloud"
|
|
466
471
|
#
|
|
467
472
|
# gcloud = Gcloud.new
|
|
468
473
|
# pubsub = gcloud.pubsub
|
|
474
|
+
# sub = pubsub.subscription "my-subscription"
|
|
475
|
+
#
|
|
476
|
+
# policy = sub.policy # API call
|
|
477
|
+
#
|
|
478
|
+
# policy.add "roles/owner", "user:owner@example.com"
|
|
469
479
|
#
|
|
470
|
-
#
|
|
471
|
-
# "bindings" => [{
|
|
472
|
-
# "role" => "roles/viewer",
|
|
473
|
-
# "members" => ["serviceAccount:your-service-account"]
|
|
474
|
-
# }]
|
|
475
|
-
# }
|
|
476
|
-
# subscription = pubsub.subscription "my-subscription"
|
|
477
|
-
# subscription.policy = viewer_policy
|
|
480
|
+
# sub.policy = policy # API call
|
|
478
481
|
#
|
|
479
482
|
def policy= new_policy
|
|
480
483
|
ensure_service!
|
|
481
|
-
grpc = service.set_subscription_policy name, new_policy
|
|
482
|
-
@policy =
|
|
483
|
-
rescue GRPC::BadStatus => e
|
|
484
|
-
raise Error.from_error(e)
|
|
484
|
+
grpc = service.set_subscription_policy name, new_policy.to_grpc
|
|
485
|
+
@policy = Policy.from_grpc grpc
|
|
485
486
|
end
|
|
486
487
|
|
|
487
488
|
##
|
|
@@ -522,8 +523,6 @@ module Gcloud
|
|
|
522
523
|
ensure_service!
|
|
523
524
|
grpc = service.test_subscription_permissions name, permissions
|
|
524
525
|
grpc.permissions
|
|
525
|
-
rescue GRPC::BadStatus => e
|
|
526
|
-
raise Error.from_error(e)
|
|
527
526
|
end
|
|
528
527
|
|
|
529
528
|
##
|
|
@@ -551,8 +550,6 @@ module Gcloud
|
|
|
551
550
|
ensure_service!
|
|
552
551
|
return @grpc if @grpc
|
|
553
552
|
@grpc = service.get_subscription @name
|
|
554
|
-
rescue GRPC::BadStatus => e
|
|
555
|
-
raise Error.from_error(e)
|
|
556
553
|
end
|
|
557
554
|
|
|
558
555
|
##
|