google-cloud-pubsub 0.34.1 → 0.35.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 +4 -4
- data/AUTHENTICATION.md +33 -12
- data/CHANGELOG.md +13 -0
- data/lib/google/cloud/pubsub/async_publisher.rb +7 -6
- data/lib/google/cloud/pubsub/project.rb +1 -1
- data/lib/google/cloud/pubsub/service.rb +14 -14
- data/lib/google/cloud/pubsub/snapshot.rb +1 -1
- data/lib/google/cloud/pubsub/snapshot/list.rb +1 -1
- data/lib/google/cloud/pubsub/subscriber.rb +1 -1
- data/lib/google/cloud/pubsub/subscriber/enumerator_queue.rb +1 -1
- data/lib/google/cloud/pubsub/subscriber/stream.rb +1 -1
- data/lib/google/cloud/pubsub/subscriber/timed_unary_buffer.rb +2 -2
- data/lib/google/cloud/pubsub/subscription.rb +128 -3
- data/lib/google/cloud/pubsub/subscription/list.rb +1 -1
- data/lib/google/cloud/pubsub/subscription/push_config.rb +244 -0
- data/lib/google/cloud/pubsub/topic.rb +23 -3
- data/lib/google/cloud/pubsub/topic/list.rb +1 -1
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/field_mask.rb +18 -26
- data/lib/google/cloud/pubsub/v1/doc/google/protobuf/timestamp.rb +15 -13
- data/lib/google/cloud/pubsub/v1/doc/google/pubsub/v1/pubsub.rb +49 -5
- data/lib/google/cloud/pubsub/v1/publisher_client.rb +40 -10
- data/lib/google/cloud/pubsub/v1/subscriber_client.rb +88 -24
- data/lib/google/cloud/pubsub/version.rb +1 -1
- data/lib/google/pubsub/v1/pubsub_pb.rb +10 -0
- data/lib/google/pubsub/v1/pubsub_services_pb.rb +9 -7
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9eb65ead0bfa397fca5d4eab13a005d64dabb629da1b0b4638fbbd45fab65cf3
|
|
4
|
+
data.tar.gz: 01027a9e96bda8a16107309c06eba2f4cd971a56ca851b59463a1958c06a63ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 93dfbbcc2ea3e8cb444ed00bbf92a9d514cbf3868fc7cbe540be112358203c0d0becf16dd36e459accd65a1cb12db589f7e29a8942685418356b8a530ce374c9
|
|
7
|
+
data.tar.gz: 660f2887f98ddef1f1c5a83f928e4855008f6770c3bbe02ac6f9a1c567ad8bd3dfc160bdbb7abc397de8197ccd27e6d588443c352a8ff3a6b8cfd3e09b3231bb
|
data/AUTHENTICATION.md
CHANGED
|
@@ -2,20 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
In general, the google-cloud-pubsub library uses [Service
|
|
4
4
|
Account](https://cloud.google.com/iam/docs/creating-managing-service-accounts)
|
|
5
|
-
credentials to connect to Google Cloud services. When running
|
|
5
|
+
credentials to connect to Google Cloud services. When running within [Google
|
|
6
|
+
Cloud Platform environments](#google-cloud-platform-environments)
|
|
6
7
|
the credentials will be discovered automatically. When running on other
|
|
7
8
|
environments, the Service Account credentials can be specified by providing the
|
|
8
9
|
path to the [JSON
|
|
9
10
|
keyfile](https://cloud.google.com/iam/docs/managing-service-account-keys) for
|
|
10
|
-
the account (or the JSON itself) in environment
|
|
11
|
-
SDK credentials can also
|
|
12
|
-
recommended during development.
|
|
11
|
+
the account (or the JSON itself) in [environment
|
|
12
|
+
variables](#environment-variables). Additionally, Cloud SDK credentials can also
|
|
13
|
+
be discovered automatically, but this is only recommended during development.
|
|
14
|
+
|
|
15
|
+
## Quickstart
|
|
16
|
+
|
|
17
|
+
1. [Create a service account and credentials](#creating-a-service-account).
|
|
18
|
+
2. Set the [environment variable](#environment-variables).
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
export PUBSUB_CREDENTIALS=/path/to/json`
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
3. Initialize the client.
|
|
25
|
+
|
|
26
|
+
```ruby
|
|
27
|
+
require "google/cloud/pubsub"
|
|
28
|
+
|
|
29
|
+
client = Google::Cloud::PubSub.new
|
|
30
|
+
```
|
|
13
31
|
|
|
14
32
|
## Project and Credential Lookup
|
|
15
33
|
|
|
16
|
-
The google-cloud-pubsub library aims to make authentication
|
|
17
|
-
possible, and provides several mechanisms to configure your system
|
|
18
|
-
providing **Project ID** and **Service Account Credentials** directly in
|
|
34
|
+
The google-cloud-pubsub library aims to make authentication
|
|
35
|
+
as simple as possible, and provides several mechanisms to configure your system
|
|
36
|
+
without providing **Project ID** and **Service Account Credentials** directly in
|
|
37
|
+
code.
|
|
19
38
|
|
|
20
39
|
**Project ID** is discovered in the following order:
|
|
21
40
|
|
|
@@ -23,6 +42,7 @@ providing **Project ID** and **Service Account Credentials** directly in code.
|
|
|
23
42
|
2. Specify project ID in configuration
|
|
24
43
|
3. Discover project ID in environment variables
|
|
25
44
|
4. Discover GCE project ID
|
|
45
|
+
5. Discover project ID in credentials JSON
|
|
26
46
|
|
|
27
47
|
**Credentials** are discovered in the following order:
|
|
28
48
|
|
|
@@ -73,12 +93,12 @@ environment variable, or the **Credentials JSON** itself can be stored for
|
|
|
73
93
|
environments such as Docker containers where writing files is difficult or not
|
|
74
94
|
encouraged.
|
|
75
95
|
|
|
76
|
-
The environment variables that
|
|
96
|
+
The environment variables that google-cloud-pubsub checks for project ID are:
|
|
77
97
|
|
|
78
98
|
1. `PUBSUB_PROJECT`
|
|
79
99
|
2. `GOOGLE_CLOUD_PROJECT`
|
|
80
100
|
|
|
81
|
-
The environment variables that
|
|
101
|
+
The environment variables that google-cloud-pubsub checks for credentials are configured on {Google::Cloud::PubSub::V1::Credentials}:
|
|
82
102
|
|
|
83
103
|
1. `PUBSUB_CREDENTIALS` - Path to JSON file, or JSON contents
|
|
84
104
|
2. `PUBSUB_KEYFILE` - Path to JSON file, or JSON contents
|
|
@@ -92,7 +112,7 @@ require "google/cloud/pubsub"
|
|
|
92
112
|
ENV["PUBSUB_PROJECT"] = "my-project-id"
|
|
93
113
|
ENV["PUBSUB_CREDENTIALS"] = "path/to/keyfile.json"
|
|
94
114
|
|
|
95
|
-
|
|
115
|
+
client = Google::Cloud::PubSub.new
|
|
96
116
|
```
|
|
97
117
|
|
|
98
118
|
### Configuration
|
|
@@ -107,7 +127,7 @@ Google::Cloud::PubSub.configure do |config|
|
|
|
107
127
|
config.credentials = "path/to/keyfile.json"
|
|
108
128
|
end
|
|
109
129
|
|
|
110
|
-
|
|
130
|
+
client = Google::Cloud::PubSub.new
|
|
111
131
|
```
|
|
112
132
|
|
|
113
133
|
### Cloud SDK
|
|
@@ -140,7 +160,8 @@ Google Cloud requires a **Project ID** and **Service Account Credentials** to
|
|
|
140
160
|
connect to the APIs. You will use the **Project ID** and **JSON key file** to
|
|
141
161
|
connect to most services with google-cloud-pubsub.
|
|
142
162
|
|
|
143
|
-
If you are not running this client
|
|
163
|
+
If you are not running this client within [Google Cloud Platform
|
|
164
|
+
environments](#google-cloud-platform-environments), you need a Google
|
|
144
165
|
Developers service account.
|
|
145
166
|
|
|
146
167
|
1. Visit the [Google Developers Console][dev-console].
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
+
### 0.35.0 / 2019-04-25
|
|
4
|
+
|
|
5
|
+
* Add Subscription#push_config and Subscription::PushConfig
|
|
6
|
+
* Add Subscription#expires_in
|
|
7
|
+
* Add Topic#reload!
|
|
8
|
+
* Add Subscription#reload!
|
|
9
|
+
* Update low-level generated files
|
|
10
|
+
* Add PushConfig#oidc_token
|
|
11
|
+
* Add ordering_key to PubsubMessage.
|
|
12
|
+
* Add enable_message_ordering to Subscription.
|
|
13
|
+
* Extract gRPC header values from request.
|
|
14
|
+
* Update documentation.
|
|
15
|
+
|
|
3
16
|
### 0.34.1 / 2019-02-13
|
|
4
17
|
|
|
5
18
|
* Fix bug (typo) in retrieving default on_error proc.
|
|
@@ -217,7 +217,8 @@ module Google
|
|
|
217
217
|
@cond.wait
|
|
218
218
|
else
|
|
219
219
|
# still waiting for the interval to publish the batch...
|
|
220
|
-
@
|
|
220
|
+
timeout = @interval - time_since_first_publish
|
|
221
|
+
@cond.wait timeout
|
|
221
222
|
end
|
|
222
223
|
end
|
|
223
224
|
end
|
|
@@ -234,21 +235,21 @@ module Google
|
|
|
234
235
|
def publish_batch_async topic_name, batch
|
|
235
236
|
return unless @publish_thread_pool.running?
|
|
236
237
|
|
|
237
|
-
Concurrent::Future.new
|
|
238
|
+
Concurrent::Future.new executor: @publish_thread_pool do
|
|
238
239
|
begin
|
|
239
240
|
grpc = @service.publish topic_name, batch.messages
|
|
240
|
-
batch.items.zip
|
|
241
|
+
batch.items.zip Array(grpc.message_ids) do |item, id|
|
|
241
242
|
next unless item.callback
|
|
242
243
|
|
|
243
244
|
item.msg.message_id = id
|
|
244
|
-
publish_result = PublishResult.from_grpc
|
|
245
|
+
publish_result = PublishResult.from_grpc item.msg
|
|
245
246
|
execute_callback_async item.callback, publish_result
|
|
246
247
|
end
|
|
247
248
|
rescue StandardError => e
|
|
248
249
|
batch.items.each do |item|
|
|
249
250
|
next unless item.callback
|
|
250
251
|
|
|
251
|
-
publish_result = PublishResult.from_error
|
|
252
|
+
publish_result = PublishResult.from_error item.msg, e
|
|
252
253
|
execute_callback_async item.callback, publish_result
|
|
253
254
|
end
|
|
254
255
|
end
|
|
@@ -258,7 +259,7 @@ module Google
|
|
|
258
259
|
def execute_callback_async callback, publish_result
|
|
259
260
|
return unless @callback_thread_pool.running?
|
|
260
261
|
|
|
261
|
-
Concurrent::Future.new
|
|
262
|
+
Concurrent::Future.new executor: @callback_thread_pool do
|
|
262
263
|
callback.call publish_result
|
|
263
264
|
end.execute
|
|
264
265
|
end
|
|
@@ -150,7 +150,7 @@ module Google
|
|
|
150
150
|
def topic topic_name, project: nil, skip_lookup: nil, async: nil
|
|
151
151
|
ensure_service!
|
|
152
152
|
options = { project: project }
|
|
153
|
-
return Topic.from_name
|
|
153
|
+
return Topic.from_name topic_name, service, options if skip_lookup
|
|
154
154
|
grpc = service.get_topic topic_name
|
|
155
155
|
Topic.from_grpc grpc, service, async: async
|
|
156
156
|
rescue Google::Cloud::NotFoundError
|
|
@@ -168,7 +168,7 @@ module Google
|
|
|
168
168
|
##
|
|
169
169
|
# Gets the details of a subscription.
|
|
170
170
|
def get_subscription subscription_name, options = {}
|
|
171
|
-
subscription = subscription_path
|
|
171
|
+
subscription = subscription_path subscription_name, options
|
|
172
172
|
execute do
|
|
173
173
|
subscriber.get_subscription subscription, options: default_options
|
|
174
174
|
end
|
|
@@ -218,8 +218,8 @@ module Google
|
|
|
218
218
|
##
|
|
219
219
|
# Creates a subscription on a given topic for a given subscriber.
|
|
220
220
|
def create_subscription topic, subscription_name, options = {}
|
|
221
|
-
name = subscription_path
|
|
222
|
-
topic = topic_path
|
|
221
|
+
name = subscription_path subscription_name, options
|
|
222
|
+
topic = topic_path topic
|
|
223
223
|
push_config = if options[:endpoint]
|
|
224
224
|
Google::Cloud::PubSub::V1::PushConfig.new \
|
|
225
225
|
push_endpoint: options[:endpoint],
|
|
@@ -263,7 +263,7 @@ module Google
|
|
|
263
263
|
##
|
|
264
264
|
# Pulls a single message from the server.
|
|
265
265
|
def pull subscription, options = {}
|
|
266
|
-
subscription = subscription_path
|
|
266
|
+
subscription = subscription_path subscription, options
|
|
267
267
|
max_messages = options.fetch(:max, 100).to_i
|
|
268
268
|
return_immediately = !(!options.fetch(:immediate, true))
|
|
269
269
|
|
|
@@ -293,7 +293,7 @@ module Google
|
|
|
293
293
|
##
|
|
294
294
|
# Modifies the PushConfig for a specified subscription.
|
|
295
295
|
def modify_push_config subscription, endpoint, attributes
|
|
296
|
-
subscription = subscription_path
|
|
296
|
+
subscription = subscription_path subscription
|
|
297
297
|
# Convert attributes to strings to match the protobuf definition
|
|
298
298
|
attributes = Hash[attributes.map { |k, v| [String(k), String(v)] }]
|
|
299
299
|
push_config = Google::Cloud::PubSub::V1::PushConfig.new(
|
|
@@ -370,7 +370,7 @@ module Google
|
|
|
370
370
|
##
|
|
371
371
|
# Adjusts the given subscription to a time or snapshot.
|
|
372
372
|
def seek subscription, time_or_snapshot
|
|
373
|
-
subscription = subscription_path
|
|
373
|
+
subscription = subscription_path subscription
|
|
374
374
|
execute do
|
|
375
375
|
if a_time? time_or_snapshot
|
|
376
376
|
time = Convert.time_to_timestamp time_or_snapshot
|
|
@@ -394,7 +394,7 @@ module Google
|
|
|
394
394
|
end
|
|
395
395
|
|
|
396
396
|
def set_topic_policy topic_name, new_policy, options = {}
|
|
397
|
-
resource = topic_path
|
|
397
|
+
resource = topic_path topic_name, options
|
|
398
398
|
|
|
399
399
|
execute do
|
|
400
400
|
publisher.set_iam_policy resource, new_policy,
|
|
@@ -403,7 +403,7 @@ module Google
|
|
|
403
403
|
end
|
|
404
404
|
|
|
405
405
|
def test_topic_permissions topic_name, permissions, options = {}
|
|
406
|
-
resource = topic_path
|
|
406
|
+
resource = topic_path topic_name, options
|
|
407
407
|
|
|
408
408
|
execute do
|
|
409
409
|
publisher.test_iam_permissions resource, permissions,
|
|
@@ -412,7 +412,7 @@ module Google
|
|
|
412
412
|
end
|
|
413
413
|
|
|
414
414
|
def get_subscription_policy subscription_name, options = {}
|
|
415
|
-
resource = subscription_path
|
|
415
|
+
resource = subscription_path subscription_name, options
|
|
416
416
|
|
|
417
417
|
execute do
|
|
418
418
|
subscriber.get_iam_policy resource, options: default_options
|
|
@@ -420,7 +420,7 @@ module Google
|
|
|
420
420
|
end
|
|
421
421
|
|
|
422
422
|
def set_subscription_policy subscription_name, new_policy, options = {}
|
|
423
|
-
resource = subscription_path
|
|
423
|
+
resource = subscription_path subscription_name, options
|
|
424
424
|
|
|
425
425
|
execute do
|
|
426
426
|
subscriber.set_iam_policy resource, new_policy,
|
|
@@ -430,7 +430,7 @@ module Google
|
|
|
430
430
|
|
|
431
431
|
def test_subscription_permissions subscription_name,
|
|
432
432
|
permissions, options = {}
|
|
433
|
-
resource = subscription_path
|
|
433
|
+
resource = subscription_path subscription_name, options
|
|
434
434
|
|
|
435
435
|
execute do
|
|
436
436
|
subscriber.test_iam_permissions resource, permissions,
|
|
@@ -445,19 +445,19 @@ module Google
|
|
|
445
445
|
|
|
446
446
|
def topic_path topic_name, options = {}
|
|
447
447
|
return topic_name if topic_name.to_s.include? "/"
|
|
448
|
-
"#{project_path
|
|
448
|
+
"#{project_path options}/topics/#{topic_name}"
|
|
449
449
|
end
|
|
450
450
|
|
|
451
451
|
def subscription_path subscription_name, options = {}
|
|
452
452
|
return subscription_name if subscription_name.to_s.include? "/"
|
|
453
|
-
"#{project_path
|
|
453
|
+
"#{project_path options}/subscriptions/#{subscription_name}"
|
|
454
454
|
end
|
|
455
455
|
|
|
456
456
|
def snapshot_path snapshot_name, options = {}
|
|
457
457
|
if snapshot_name.nil? || snapshot_name.to_s.include?("/")
|
|
458
458
|
return snapshot_name
|
|
459
459
|
end
|
|
460
|
-
"#{project_path
|
|
460
|
+
"#{project_path options}/snapshots/#{snapshot_name}"
|
|
461
461
|
end
|
|
462
462
|
|
|
463
463
|
def inspect
|
|
@@ -138,7 +138,7 @@ module Google
|
|
|
138
138
|
#
|
|
139
139
|
def labels= new_labels
|
|
140
140
|
raise ArgumentError, "Value must be a Hash" if new_labels.nil?
|
|
141
|
-
labels_map = Google::Protobuf::Map.new
|
|
141
|
+
labels_map = Google::Protobuf::Map.new :string, :string
|
|
142
142
|
Hash(new_labels).each { |k, v| labels_map[String(k)] = String(v) }
|
|
143
143
|
update_grpc = @grpc.dup
|
|
144
144
|
update_grpc.labels = labels_map
|
|
@@ -128,7 +128,7 @@ module Google
|
|
|
128
128
|
def all request_limit: nil
|
|
129
129
|
request_limit = request_limit.to_i if request_limit
|
|
130
130
|
unless block_given?
|
|
131
|
-
return enum_for
|
|
131
|
+
return enum_for :all, request_limit: request_limit
|
|
132
132
|
end
|
|
133
133
|
results = self
|
|
134
134
|
loop do
|
|
@@ -266,7 +266,7 @@ module Google
|
|
|
266
266
|
def perform_callback_async rec_msg
|
|
267
267
|
return unless callback_thread_pool.running?
|
|
268
268
|
|
|
269
|
-
Concurrent::Future.new
|
|
269
|
+
Concurrent::Future.new executor: callback_thread_pool do
|
|
270
270
|
begin
|
|
271
271
|
@subscriber.callback.call rec_msg
|
|
272
272
|
rescue StandardError => callback_error
|
|
@@ -34,7 +34,7 @@ module Google
|
|
|
34
34
|
# entry.
|
|
35
35
|
@register = {}
|
|
36
36
|
|
|
37
|
-
@task = Concurrent::TimerTask.new
|
|
37
|
+
@task = Concurrent::TimerTask.new execution_interval: interval do
|
|
38
38
|
flush!
|
|
39
39
|
end
|
|
40
40
|
end
|
|
@@ -204,7 +204,7 @@ module Google
|
|
|
204
204
|
end
|
|
205
205
|
|
|
206
206
|
def add_future pool
|
|
207
|
-
Concurrent::Future.new
|
|
207
|
+
Concurrent::Future.new executor: pool do
|
|
208
208
|
begin
|
|
209
209
|
yield
|
|
210
210
|
rescue StandardError => error
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
require "google/cloud/pubsub/convert"
|
|
17
17
|
require "google/cloud/errors"
|
|
18
18
|
require "google/cloud/pubsub/subscription/list"
|
|
19
|
+
require "google/cloud/pubsub/subscription/push_config"
|
|
19
20
|
require "google/cloud/pubsub/received_message"
|
|
20
21
|
require "google/cloud/pubsub/snapshot"
|
|
21
22
|
require "google/cloud/pubsub/subscriber"
|
|
@@ -189,7 +190,8 @@ module Google
|
|
|
189
190
|
|
|
190
191
|
##
|
|
191
192
|
# Returns the URL locating the endpoint to which messages should be
|
|
192
|
-
# pushed.
|
|
193
|
+
# pushed. For example, a Webhook endpoint might use
|
|
194
|
+
# "https://example.com/push".
|
|
193
195
|
#
|
|
194
196
|
# Makes an API call to retrieve the endpoint value when called on a
|
|
195
197
|
# reference object. See {#reference?}.
|
|
@@ -203,6 +205,7 @@ module Google
|
|
|
203
205
|
|
|
204
206
|
##
|
|
205
207
|
# Sets the URL locating the endpoint to which messages should be pushed.
|
|
208
|
+
# For example, a Webhook endpoint might use "https://example.com/push".
|
|
206
209
|
#
|
|
207
210
|
# @param [String] new_endpoint The new endpoint value.
|
|
208
211
|
#
|
|
@@ -218,6 +221,65 @@ module Google
|
|
|
218
221
|
)
|
|
219
222
|
end
|
|
220
223
|
|
|
224
|
+
##
|
|
225
|
+
# Inspect the Subscription's push configuration settings. The
|
|
226
|
+
# configuration can be changed by modifying the values in the method's
|
|
227
|
+
# block.
|
|
228
|
+
#
|
|
229
|
+
# Subscription objects that are reference only will return an empty
|
|
230
|
+
# {Subscription::PushConfig} object, which can be configured and saved
|
|
231
|
+
# using the method's block. Unlike {#endpoint}, which will retrieve the
|
|
232
|
+
# full resource from the API before returning. To get the actual values
|
|
233
|
+
# for a reference object, call {#reload!} before calling {#push_config}.
|
|
234
|
+
#
|
|
235
|
+
# @yield [push_config] a block for modifying the push configuration
|
|
236
|
+
# @yieldparam [Subscription::PushConfig] push_config the push
|
|
237
|
+
# configuration
|
|
238
|
+
#
|
|
239
|
+
# @return [Subscription::PushConfig]
|
|
240
|
+
#
|
|
241
|
+
# @example
|
|
242
|
+
# require "google/cloud/pubsub"
|
|
243
|
+
#
|
|
244
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
245
|
+
#
|
|
246
|
+
# sub = pubsub.subscription "my-topic-sub"
|
|
247
|
+
# sub.push_config.endpoint #=> "http://example.com/callback"
|
|
248
|
+
# sub.push_config.authentication.email #=> "user@example.com"
|
|
249
|
+
# sub.push_config.authentication.audience #=> "client-12345"
|
|
250
|
+
#
|
|
251
|
+
# @example Update the push configuration by passing a block:
|
|
252
|
+
# require "google/cloud/pubsub"
|
|
253
|
+
#
|
|
254
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
255
|
+
# sub = pubsub.subscription "my-subscription"
|
|
256
|
+
#
|
|
257
|
+
# sub.push_config do |pc|
|
|
258
|
+
# pc.endpoint = "http://example.net/callback"
|
|
259
|
+
# pc.set_oidc_token "user@example.net", "client-67890"
|
|
260
|
+
# end
|
|
261
|
+
#
|
|
262
|
+
def push_config
|
|
263
|
+
ensure_service!
|
|
264
|
+
|
|
265
|
+
orig_config = reference? ? nil : @grpc.push_config
|
|
266
|
+
config = PushConfig.from_grpc orig_config
|
|
267
|
+
|
|
268
|
+
if block_given?
|
|
269
|
+
old_config = config.to_grpc.dup
|
|
270
|
+
yield config
|
|
271
|
+
new_config = config.to_grpc
|
|
272
|
+
|
|
273
|
+
if old_config != new_config # has the object been changed?
|
|
274
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new \
|
|
275
|
+
name: name, push_config: new_config
|
|
276
|
+
@grpc = service.update_subscription update_grpc, :push_config
|
|
277
|
+
end
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
config.freeze
|
|
281
|
+
end
|
|
282
|
+
|
|
221
283
|
##
|
|
222
284
|
# A hash of user-provided labels associated with this subscription.
|
|
223
285
|
# Labels can be used to organize and group subscriptions.See [Creating
|
|
@@ -256,6 +318,48 @@ module Google
|
|
|
256
318
|
@resource_name = nil
|
|
257
319
|
end
|
|
258
320
|
|
|
321
|
+
##
|
|
322
|
+
# The duration (in seconds) for when a subscription expires after the
|
|
323
|
+
# subscription goes inactive. A subscription is considered active as
|
|
324
|
+
# long as any connected subscriber is successfully consuming messages
|
|
325
|
+
# from the subscription or is issuing operations on the subscription.
|
|
326
|
+
#
|
|
327
|
+
# If {#expires_in=} is not set, a *default* value of of 31 days will be
|
|
328
|
+
# used. The minimum allowed value is 1 day.
|
|
329
|
+
#
|
|
330
|
+
# Makes an API call to retrieve the labels value when called on a
|
|
331
|
+
# reference object. See {#reference?}.
|
|
332
|
+
#
|
|
333
|
+
# @return [Numeric, nil] The expiration duration, or `nil` if unset.
|
|
334
|
+
#
|
|
335
|
+
def expires_in
|
|
336
|
+
ensure_grpc!
|
|
337
|
+
|
|
338
|
+
return nil if @grpc.expiration_policy.nil?
|
|
339
|
+
|
|
340
|
+
Convert.duration_to_number @grpc.expiration_policy.ttl
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
##
|
|
344
|
+
# Sets the duration (in seconds) for when a subscription expires after
|
|
345
|
+
# the subscription goes inactive.
|
|
346
|
+
#
|
|
347
|
+
# See also {#expires_in}.
|
|
348
|
+
#
|
|
349
|
+
# @param [Numeric, nil] ttl The expiration duration in seconds, or `nil`
|
|
350
|
+
# to unset.
|
|
351
|
+
#
|
|
352
|
+
def expires_in= ttl
|
|
353
|
+
new_expiration_policy = Google::Pubsub::V1::ExpirationPolicy.new(
|
|
354
|
+
ttl: Convert.number_to_duration(ttl)
|
|
355
|
+
)
|
|
356
|
+
|
|
357
|
+
update_grpc = Google::Cloud::PubSub::V1::Subscription.new \
|
|
358
|
+
name: name, expiration_policy: new_expiration_policy
|
|
359
|
+
@grpc = service.update_subscription update_grpc, :expiration_policy
|
|
360
|
+
@resource_name = nil
|
|
361
|
+
end
|
|
362
|
+
|
|
259
363
|
##
|
|
260
364
|
# Determines whether the subscription exists in the Pub/Sub service.
|
|
261
365
|
#
|
|
@@ -682,6 +786,28 @@ module Google
|
|
|
682
786
|
!@grpc.nil?
|
|
683
787
|
end
|
|
684
788
|
|
|
789
|
+
##
|
|
790
|
+
# Reloads the subscription with current data from the Pub/Sub service.
|
|
791
|
+
#
|
|
792
|
+
# @return [Google::Cloud::PubSub::Subscription] Returns the reloaded
|
|
793
|
+
# subscription
|
|
794
|
+
#
|
|
795
|
+
# @example
|
|
796
|
+
# require "google/cloud/pubsub"
|
|
797
|
+
#
|
|
798
|
+
# pubsub = Google::Cloud::PubSub.new
|
|
799
|
+
#
|
|
800
|
+
# sub = pubsub.get_subscription "my-topic-sub"
|
|
801
|
+
# sub.reload!
|
|
802
|
+
#
|
|
803
|
+
def reload!
|
|
804
|
+
ensure_service!
|
|
805
|
+
@grpc = service.get_subscription name
|
|
806
|
+
@resource_name = nil
|
|
807
|
+
self
|
|
808
|
+
end
|
|
809
|
+
alias refresh! reload!
|
|
810
|
+
|
|
685
811
|
##
|
|
686
812
|
# Gets the [Cloud IAM](https://cloud.google.com/iam/) access control
|
|
687
813
|
# policy for this subscription.
|
|
@@ -834,8 +960,7 @@ module Google
|
|
|
834
960
|
# Ensures a Google::Cloud::PubSub::V1::Subscription object exists.
|
|
835
961
|
def ensure_grpc!
|
|
836
962
|
ensure_service!
|
|
837
|
-
|
|
838
|
-
@resource_name = nil
|
|
963
|
+
reload! if reference?
|
|
839
964
|
end
|
|
840
965
|
|
|
841
966
|
##
|