google-cloud-pubsub 1.10.0 → 2.1.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/AUTHENTICATION.md +2 -1
- data/CHANGELOG.md +41 -0
- data/OVERVIEW.md +26 -58
- data/lib/google-cloud-pubsub.rb +14 -13
- data/lib/google/cloud/pubsub.rb +15 -18
- data/lib/google/cloud/pubsub/async_publisher.rb +2 -3
- data/lib/google/cloud/pubsub/credentials.rb +2 -2
- data/lib/google/cloud/pubsub/message.rb +1 -1
- data/lib/google/cloud/pubsub/project.rb +1 -1
- data/lib/google/cloud/pubsub/received_message.rb +4 -4
- data/lib/google/cloud/pubsub/service.rb +102 -256
- data/lib/google/cloud/pubsub/subscriber.rb +3 -3
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -2
- data/lib/google/cloud/pubsub/subscription.rb +19 -10
- data/lib/google/cloud/pubsub/subscription/push_config.rb +55 -31
- data/lib/google/cloud/pubsub/topic.rb +49 -15
- data/lib/google/cloud/pubsub/version.rb +1 -1
- metadata +8 -79
- data/lib/google/cloud/pubsub/v1.rb +0 -17
- data/lib/google/cloud/pubsub/v1/credentials.rb +0 -41
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/iam_policy.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/options.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/iam/v1/policy.rb +0 -21
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/duration.rb +0 -91
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/empty.rb +0 -29
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb +0 -222
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb +0 -113
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +0 -833
- data/lib/google/cloud/pubsub/v1/doc/google/type/expr.rb +0 -19
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +0 -928
- data/lib/google/cloud/pubsub/v1/publisher_client_config.json +0 -120
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +0 -1466
- data/lib/google/cloud/pubsub/v1/subscriber_client_config.json +0 -153
- data/lib/google/pubsub/v1/pubsub_pb.rb +0 -269
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +0 -215
@@ -18,17 +18,15 @@ require "google/cloud/pubsub/credentials"
|
|
18
18
|
require "google/cloud/pubsub/convert"
|
19
19
|
require "google/cloud/pubsub/version"
|
20
20
|
require "google/cloud/pubsub/v1"
|
21
|
-
require "google/gax/errors"
|
22
21
|
require "securerandom"
|
23
22
|
|
24
23
|
module Google
|
25
24
|
module Cloud
|
26
25
|
module PubSub
|
27
26
|
##
|
28
|
-
# @private Represents the
|
29
|
-
# methods.
|
27
|
+
# @private Represents the Pub/Sub service API, including IAM mixins.
|
30
28
|
class Service
|
31
|
-
attr_accessor :project, :credentials, :host, :timeout
|
29
|
+
attr_accessor :project, :credentials, :host, :timeout
|
32
30
|
###
|
33
31
|
# The same client_id is used across all streaming pull connections that are created by this client. This is
|
34
32
|
# intentional, as it indicates to the server that any guarantees, such as message ordering, made for a stream
|
@@ -38,44 +36,25 @@ module Google
|
|
38
36
|
|
39
37
|
##
|
40
38
|
# Creates a new Service instance.
|
41
|
-
def initialize project, credentials, host: nil, timeout: nil
|
42
|
-
client_config: nil
|
39
|
+
def initialize project, credentials, host: nil, timeout: nil
|
43
40
|
@project = project
|
44
41
|
@credentials = credentials
|
45
|
-
@host = host
|
42
|
+
@host = host
|
46
43
|
@timeout = timeout
|
47
|
-
@client_config = client_config || {}
|
48
44
|
@client_id = SecureRandom.uuid.freeze
|
49
45
|
end
|
50
46
|
|
51
|
-
def channel
|
52
|
-
require "grpc"
|
53
|
-
GRPC::Core::Channel.new host, chan_args, chan_creds
|
54
|
-
end
|
55
|
-
|
56
|
-
def chan_args
|
57
|
-
{ "grpc.max_send_message_length" => -1,
|
58
|
-
"grpc.max_receive_message_length" => -1,
|
59
|
-
"grpc.keepalive_time_ms" => 300_000,
|
60
|
-
"grpc.service_config_disable_resolution" => 1 }
|
61
|
-
end
|
62
|
-
|
63
|
-
def chan_creds
|
64
|
-
return credentials if insecure?
|
65
|
-
require "grpc"
|
66
|
-
GRPC::Core::ChannelCredentials.new.compose GRPC::Core::CallCredentials.new credentials.client.updater_proc
|
67
|
-
end
|
68
|
-
|
69
47
|
def subscriber
|
70
48
|
return mocked_subscriber if mocked_subscriber
|
71
49
|
@subscriber ||= begin
|
72
|
-
V1::
|
73
|
-
credentials
|
74
|
-
timeout
|
75
|
-
|
76
|
-
lib_name
|
77
|
-
lib_version
|
78
|
-
|
50
|
+
V1::Subscriber::Client.new do |config|
|
51
|
+
config.credentials = credentials if credentials
|
52
|
+
config.timeout = timeout if timeout
|
53
|
+
config.endpoint = host if host
|
54
|
+
config.lib_name = "gccl"
|
55
|
+
config.lib_version = Google::Cloud::PubSub::VERSION
|
56
|
+
config.metadata = { "google-cloud-resource-prefix": "projects/#{@project}" }
|
57
|
+
end
|
79
58
|
end
|
80
59
|
end
|
81
60
|
attr_accessor :mocked_subscriber
|
@@ -83,20 +62,32 @@ module Google
|
|
83
62
|
def publisher
|
84
63
|
return mocked_publisher if mocked_publisher
|
85
64
|
@publisher ||= begin
|
86
|
-
V1::
|
87
|
-
credentials
|
88
|
-
timeout
|
89
|
-
|
90
|
-
lib_name
|
91
|
-
lib_version
|
92
|
-
|
65
|
+
V1::Publisher::Client.new do |config|
|
66
|
+
config.credentials = credentials if credentials
|
67
|
+
config.timeout = timeout if timeout
|
68
|
+
config.endpoint = host if host
|
69
|
+
config.lib_name = "gccl"
|
70
|
+
config.lib_version = Google::Cloud::PubSub::VERSION
|
71
|
+
config.metadata = { "google-cloud-resource-prefix": "projects/#{@project}" }
|
72
|
+
end
|
93
73
|
end
|
94
74
|
end
|
95
75
|
attr_accessor :mocked_publisher
|
96
76
|
|
97
|
-
def
|
98
|
-
|
77
|
+
def iam
|
78
|
+
return mocked_iam if mocked_iam
|
79
|
+
@iam ||= begin
|
80
|
+
V1::IAMPolicy::Client.new do |config|
|
81
|
+
config.credentials = credentials if credentials
|
82
|
+
config.timeout = timeout if timeout
|
83
|
+
config.endpoint = host if host
|
84
|
+
config.lib_name = "gccl"
|
85
|
+
config.lib_version = Google::Cloud::PubSub::VERSION
|
86
|
+
config.metadata = { "google-cloud-resource-prefix" => "projects/#{@project}" }
|
87
|
+
end
|
88
|
+
end
|
99
89
|
end
|
90
|
+
attr_accessor :mocked_iam
|
100
91
|
|
101
92
|
##
|
102
93
|
# Gets the configuration of a topic.
|
@@ -105,30 +96,17 @@ module Google
|
|
105
96
|
# If other attributes are added in the future,
|
106
97
|
# they will be returned here.
|
107
98
|
def get_topic topic_name, options = {}
|
108
|
-
|
109
|
-
publisher.get_topic topic_path(topic_name, options),
|
110
|
-
options: default_options
|
111
|
-
end
|
99
|
+
publisher.get_topic topic: topic_path(topic_name, options)
|
112
100
|
end
|
113
101
|
|
114
102
|
##
|
115
103
|
# Lists matching topics.
|
116
104
|
def list_topics options = {}
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
kwargs: default_headers,
|
121
|
-
page_token: token
|
122
|
-
)
|
123
|
-
end
|
105
|
+
paged_enum = publisher.list_topics project: project_path(options),
|
106
|
+
page_size: options[:max],
|
107
|
+
page_token: options[:token]
|
124
108
|
|
125
|
-
|
126
|
-
paged_enum = publisher.list_topics project_path(options),
|
127
|
-
page_size: options[:max],
|
128
|
-
options: call_options
|
129
|
-
|
130
|
-
paged_enum.page.response
|
131
|
-
end
|
109
|
+
paged_enum.response
|
132
110
|
end
|
133
111
|
|
134
112
|
##
|
@@ -140,21 +118,16 @@ module Google
|
|
140
118
|
}
|
141
119
|
end
|
142
120
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
message_storage_policy: message_storage_policy,
|
149
|
-
options: default_options
|
150
|
-
end
|
121
|
+
publisher.create_topic \
|
122
|
+
name: topic_path(topic_name, options),
|
123
|
+
labels: labels,
|
124
|
+
kms_key_name: kms_key_name,
|
125
|
+
message_storage_policy: message_storage_policy
|
151
126
|
end
|
152
127
|
|
153
128
|
def update_topic topic_obj, *fields
|
154
129
|
mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
|
155
|
-
|
156
|
-
publisher.update_topic topic_obj, mask, options: default_options
|
157
|
-
end
|
130
|
+
publisher.update_topic topic: topic_obj, update_mask: mask
|
158
131
|
end
|
159
132
|
|
160
133
|
##
|
@@ -163,10 +136,7 @@ module Google
|
|
163
136
|
# exist. After a topic is deleted, a new topic may be created with the
|
164
137
|
# same name.
|
165
138
|
def delete_topic topic_name
|
166
|
-
|
167
|
-
publisher.delete_topic topic_path(topic_name),
|
168
|
-
options: default_options
|
169
|
-
end
|
139
|
+
publisher.delete_topic topic: topic_path(topic_name)
|
170
140
|
end
|
171
141
|
|
172
142
|
##
|
@@ -175,101 +145,59 @@ module Google
|
|
175
145
|
# The messages parameter is an array of arrays.
|
176
146
|
# The first element is the data, second is attributes hash.
|
177
147
|
def publish topic, messages
|
178
|
-
|
179
|
-
publisher.publish topic_path(topic), messages,
|
180
|
-
options: default_options
|
181
|
-
end
|
148
|
+
publisher.publish topic: topic_path(topic), messages: messages
|
182
149
|
end
|
183
150
|
|
184
151
|
##
|
185
152
|
# Gets the details of a subscription.
|
186
153
|
def get_subscription subscription_name, options = {}
|
187
|
-
subscription
|
188
|
-
execute do
|
189
|
-
subscriber.get_subscription subscription, options: default_options
|
190
|
-
end
|
154
|
+
subscriber.get_subscription subscription: subscription_path(subscription_name, options)
|
191
155
|
end
|
192
156
|
|
193
157
|
##
|
194
158
|
# Lists matching subscriptions by project and topic.
|
195
159
|
def list_topics_subscriptions topic, options = {}
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
kwargs: default_headers,
|
200
|
-
page_token: token
|
201
|
-
)
|
202
|
-
end
|
203
|
-
|
204
|
-
execute do
|
205
|
-
paged_enum = publisher.list_topic_subscriptions \
|
206
|
-
topic_path(topic, options),
|
207
|
-
page_size: options[:max],
|
208
|
-
options: call_options
|
209
|
-
|
210
|
-
paged_enum.page.response
|
211
|
-
end
|
160
|
+
publisher.list_topic_subscriptions topic: topic_path(topic, options),
|
161
|
+
page_size: options[:max],
|
162
|
+
page_token: options[:token]
|
212
163
|
end
|
213
164
|
|
214
165
|
##
|
215
166
|
# Lists matching subscriptions by project.
|
216
167
|
def list_subscriptions options = {}
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
kwargs: default_headers,
|
221
|
-
page_token: token
|
222
|
-
)
|
223
|
-
end
|
224
|
-
|
225
|
-
execute do
|
226
|
-
paged_enum = subscriber.list_subscriptions project_path(options),
|
227
|
-
page_size: options[:max],
|
228
|
-
options: call_options
|
168
|
+
paged_enum = subscriber.list_subscriptions project: project_path(options),
|
169
|
+
page_size: options[:max],
|
170
|
+
page_token: options[:token]
|
229
171
|
|
230
|
-
|
231
|
-
end
|
172
|
+
paged_enum.response
|
232
173
|
end
|
233
174
|
|
234
175
|
##
|
235
176
|
# Creates a subscription on a given topic for a given subscriber.
|
236
177
|
def create_subscription topic, subscription_name, options = {}
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
retain_acked_messages: options[:retain_acked],
|
250
|
-
message_retention_duration: Convert.number_to_duration(options[:retention]),
|
251
|
-
labels: options[:labels],
|
252
|
-
enable_message_ordering: options[:message_ordering],
|
253
|
-
filter: options[:filter],
|
254
|
-
dead_letter_policy: dead_letter_policy(options),
|
255
|
-
retry_policy: options[:retry_policy],
|
256
|
-
options: default_options
|
257
|
-
end
|
178
|
+
subscriber.create_subscription \
|
179
|
+
name: subscription_path(subscription_name, options),
|
180
|
+
topic: topic_path(topic),
|
181
|
+
push_config: options[:push_config],
|
182
|
+
ack_deadline_seconds: options[:deadline],
|
183
|
+
retain_acked_messages: options[:retain_acked],
|
184
|
+
message_retention_duration: Convert.number_to_duration(options[:retention]),
|
185
|
+
labels: options[:labels],
|
186
|
+
enable_message_ordering: options[:message_ordering],
|
187
|
+
filter: options[:filter],
|
188
|
+
dead_letter_policy: dead_letter_policy(options),
|
189
|
+
retry_policy: options[:retry_policy]
|
258
190
|
end
|
259
191
|
|
260
192
|
def update_subscription subscription_obj, *fields
|
261
193
|
mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
|
262
|
-
|
263
|
-
subscriber.update_subscription subscription_obj, mask, options: default_options
|
264
|
-
end
|
194
|
+
subscriber.update_subscription subscription: subscription_obj, update_mask: mask
|
265
195
|
end
|
266
196
|
|
267
197
|
##
|
268
198
|
# Deletes an existing subscription. All pending messages in the subscription are immediately dropped.
|
269
199
|
def delete_subscription subscription
|
270
|
-
|
271
|
-
subscriber.delete_subscription subscription_path(subscription), options: default_options
|
272
|
-
end
|
200
|
+
subscriber.delete_subscription subscription: subscription_path(subscription)
|
273
201
|
end
|
274
202
|
|
275
203
|
##
|
@@ -277,45 +205,33 @@ module Google
|
|
277
205
|
# `Pull` and `StreamingPull` requests will raise `FAILED_PRECONDITION`. If the subscription is a push
|
278
206
|
# subscription, pushes to the endpoint will stop.
|
279
207
|
def detach_subscription subscription
|
280
|
-
|
281
|
-
publisher.detach_subscription subscription_path(subscription), options: default_options
|
282
|
-
end
|
208
|
+
publisher.detach_subscription subscription: subscription_path(subscription)
|
283
209
|
end
|
284
210
|
|
285
211
|
##
|
286
212
|
# Pulls a single message from the server.
|
287
213
|
def pull subscription, options = {}
|
288
|
-
subscription = subscription_path subscription, options
|
289
214
|
max_messages = options.fetch(:max, 100).to_i
|
290
215
|
return_immediately = !(!options.fetch(:immediate, true))
|
291
216
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
return_immediately: return_immediately,
|
296
|
-
options: default_options
|
297
|
-
end
|
217
|
+
subscriber.pull subscription: subscription_path(subscription, options),
|
218
|
+
max_messages: max_messages,
|
219
|
+
return_immediately: return_immediately
|
298
220
|
end
|
299
221
|
|
300
222
|
def streaming_pull request_enum
|
301
|
-
|
302
|
-
subscriber.streaming_pull request_enum, options: default_options
|
303
|
-
end
|
223
|
+
subscriber.streaming_pull request_enum
|
304
224
|
end
|
305
225
|
|
306
226
|
##
|
307
227
|
# Acknowledges receipt of a message.
|
308
228
|
def acknowledge subscription, *ack_ids
|
309
|
-
|
310
|
-
subscriber.acknowledge subscription_path(subscription), ack_ids,
|
311
|
-
options: default_options
|
312
|
-
end
|
229
|
+
subscriber.acknowledge subscription: subscription_path(subscription), ack_ids: ack_ids
|
313
230
|
end
|
314
231
|
|
315
232
|
##
|
316
233
|
# Modifies the PushConfig for a specified subscription.
|
317
234
|
def modify_push_config subscription, endpoint, attributes
|
318
|
-
subscription = subscription_path subscription
|
319
235
|
# Convert attributes to strings to match the protobuf definition
|
320
236
|
attributes = Hash[attributes.map { |k, v| [String(k), String(v)] }]
|
321
237
|
push_config = Google::Cloud::PubSub::V1::PushConfig.new(
|
@@ -323,138 +239,83 @@ module Google
|
|
323
239
|
attributes: attributes
|
324
240
|
)
|
325
241
|
|
326
|
-
|
327
|
-
|
328
|
-
options: default_options
|
329
|
-
end
|
242
|
+
subscriber.modify_push_config subscription: subscription_path(subscription),
|
243
|
+
push_config: push_config
|
330
244
|
end
|
331
245
|
|
332
246
|
##
|
333
247
|
# Modifies the ack deadline for a specific message.
|
334
248
|
def modify_ack_deadline subscription, ids, deadline
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
deadline, options: default_options
|
339
|
-
end
|
249
|
+
subscriber.modify_ack_deadline subscription: subscription_path(subscription),
|
250
|
+
ack_ids: Array(ids),
|
251
|
+
ack_deadline_seconds: deadline
|
340
252
|
end
|
341
253
|
|
342
254
|
##
|
343
255
|
# Lists snapshots by project.
|
344
256
|
def list_snapshots options = {}
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
kwargs: default_headers,
|
349
|
-
page_token: token
|
350
|
-
)
|
351
|
-
end
|
257
|
+
paged_enum = subscriber.list_snapshots project: project_path(options),
|
258
|
+
page_size: options[:max],
|
259
|
+
page_token: options[:token]
|
352
260
|
|
353
|
-
|
354
|
-
paged_enum = subscriber.list_snapshots project_path(options),
|
355
|
-
page_size: options[:max],
|
356
|
-
options: call_options
|
357
|
-
|
358
|
-
paged_enum.page.response
|
359
|
-
end
|
261
|
+
paged_enum.response
|
360
262
|
end
|
361
263
|
|
362
264
|
##
|
363
265
|
# Creates a snapshot on a given subscription.
|
364
266
|
def create_snapshot subscription, snapshot_name, labels: nil
|
365
|
-
name
|
366
|
-
|
367
|
-
|
368
|
-
subscription_path(subscription),
|
369
|
-
labels: labels,
|
370
|
-
options: default_options
|
371
|
-
end
|
267
|
+
subscriber.create_snapshot name: snapshot_path(snapshot_name),
|
268
|
+
subscription: subscription_path(subscription),
|
269
|
+
labels: labels
|
372
270
|
end
|
373
271
|
|
374
272
|
def update_snapshot snapshot_obj, *fields
|
375
273
|
mask = Google::Protobuf::FieldMask.new paths: fields.map(&:to_s)
|
376
|
-
|
377
|
-
subscriber.update_snapshot snapshot_obj, mask, options: default_options
|
378
|
-
end
|
274
|
+
subscriber.update_snapshot snapshot: snapshot_obj, update_mask: mask
|
379
275
|
end
|
380
276
|
|
381
277
|
##
|
382
278
|
# Deletes an existing snapshot.
|
383
279
|
# All pending messages in the snapshot are immediately dropped.
|
384
280
|
def delete_snapshot snapshot
|
385
|
-
|
386
|
-
subscriber.delete_snapshot snapshot_path(snapshot),
|
387
|
-
options: default_options
|
388
|
-
end
|
281
|
+
subscriber.delete_snapshot snapshot: snapshot_path(snapshot)
|
389
282
|
end
|
390
283
|
|
391
284
|
##
|
392
285
|
# Adjusts the given subscription to a time or snapshot.
|
393
286
|
def seek subscription, time_or_snapshot
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
subscriber.seek subscription,
|
402
|
-
snapshot: snapshot_path(time_or_snapshot),
|
403
|
-
options: default_options
|
404
|
-
end
|
287
|
+
if a_time? time_or_snapshot
|
288
|
+
time = Convert.time_to_timestamp time_or_snapshot
|
289
|
+
subscriber.seek subscription: subscription, time: time
|
290
|
+
else
|
291
|
+
time_or_snapshot = time_or_snapshot.name if time_or_snapshot.is_a? Snapshot
|
292
|
+
subscriber.seek subscription: subscription_path(subscription),
|
293
|
+
snapshot: snapshot_path(time_or_snapshot)
|
405
294
|
end
|
406
295
|
end
|
407
296
|
|
408
297
|
def get_topic_policy topic_name, options = {}
|
409
|
-
|
410
|
-
publisher.get_iam_policy topic_path(topic_name, options),
|
411
|
-
options: default_options
|
412
|
-
end
|
298
|
+
iam.get_iam_policy resource: topic_path(topic_name, options)
|
413
299
|
end
|
414
300
|
|
415
301
|
def set_topic_policy topic_name, new_policy, options = {}
|
416
|
-
resource
|
417
|
-
|
418
|
-
execute do
|
419
|
-
publisher.set_iam_policy resource, new_policy,
|
420
|
-
options: default_options
|
421
|
-
end
|
302
|
+
iam.set_iam_policy resource: topic_path(topic_name, options), policy: new_policy
|
422
303
|
end
|
423
304
|
|
424
305
|
def test_topic_permissions topic_name, permissions, options = {}
|
425
|
-
resource
|
426
|
-
|
427
|
-
execute do
|
428
|
-
publisher.test_iam_permissions resource, permissions,
|
429
|
-
options: default_options
|
430
|
-
end
|
306
|
+
iam.test_iam_permissions resource: topic_path(topic_name, options), permissions: permissions
|
431
307
|
end
|
432
308
|
|
433
309
|
def get_subscription_policy subscription_name, options = {}
|
434
|
-
resource
|
435
|
-
|
436
|
-
execute do
|
437
|
-
subscriber.get_iam_policy resource, options: default_options
|
438
|
-
end
|
310
|
+
iam.get_iam_policy resource: subscription_path(subscription_name, options)
|
439
311
|
end
|
440
312
|
|
441
313
|
def set_subscription_policy subscription_name, new_policy, options = {}
|
442
|
-
resource
|
443
|
-
|
444
|
-
execute do
|
445
|
-
subscriber.set_iam_policy resource, new_policy,
|
446
|
-
options: default_options
|
447
|
-
end
|
314
|
+
iam.set_iam_policy resource: subscription_path(subscription_name, options), policy: new_policy
|
448
315
|
end
|
449
316
|
|
450
|
-
def test_subscription_permissions subscription_name,
|
451
|
-
|
452
|
-
resource = subscription_path subscription_name, options
|
453
|
-
|
454
|
-
execute do
|
455
|
-
subscriber.test_iam_permissions resource, permissions,
|
456
|
-
options: default_options
|
457
|
-
end
|
317
|
+
def test_subscription_permissions subscription_name, permissions, options = {}
|
318
|
+
iam.test_iam_permissions resource: subscription_path(subscription_name, options), permissions: permissions
|
458
319
|
end
|
459
320
|
|
460
321
|
def project_path options = {}
|
@@ -498,21 +359,6 @@ module Google
|
|
498
359
|
end
|
499
360
|
policy
|
500
361
|
end
|
501
|
-
|
502
|
-
def default_headers
|
503
|
-
{ "google-cloud-resource-prefix" => "projects/#{@project}" }
|
504
|
-
end
|
505
|
-
|
506
|
-
def default_options
|
507
|
-
Google::Gax::CallOptions.new kwargs: default_headers
|
508
|
-
end
|
509
|
-
|
510
|
-
def execute
|
511
|
-
yield
|
512
|
-
rescue Google::Gax::GaxError => e
|
513
|
-
# GaxError wraps BadStatus, but exposes it as #cause
|
514
|
-
raise Google::Cloud::Error.from_error(e.cause)
|
515
|
-
end
|
516
362
|
end
|
517
363
|
end
|
518
364
|
|