Skip to content

Commit 5f793ad

Browse files
authored
fix: re-enable expiration_policy for pull subscription, fix push subscription generation with empty expiration_policy (#232)
1 parent 52ee6da commit 5f793ad

File tree

6 files changed

+18
-9
lines changed

6 files changed

+18
-9
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ module "pubsub" {
9292
| grant\_token\_creator | Specify true if you want to add token creator role to the default Pub/Sub SA. | `bool` | `true` | no |
9393
| message\_storage\_policy | A map of storage policies. Default - inherit from organization's Resource Location Restriction policy. | `map(any)` | `{}` | no |
9494
| project\_id | The project ID to manage the Pub/Sub resources. | `string` | n/a | yes |
95-
| pull\_subscriptions | The list of the pull subscriptions. | <pre>list(object({<br> name = string,<br> ack_deadline_seconds = optional(number),<br> dead_letter_topic = optional(string),<br> max_delivery_attempts = optional(number),<br> retain_acked_messages = optional(bool),<br> message_retention_duration = optional(string),<br> maximum_backoff = optional(string),<br> minimum_backoff = optional(string),<br> filter = optional(string),<br> enable_message_ordering = optional(bool),<br> service_account = optional(string),<br> enable_exactly_once_delivery = optional(bool),<br> }))</pre> | `[]` | no |
95+
| pull\_subscriptions | The list of the pull subscriptions. | <pre>list(object({<br> name = string,<br> ack_deadline_seconds = optional(number),<br> expiration_policy = optional(string),<br> dead_letter_topic = optional(string),<br> max_delivery_attempts = optional(number),<br> retain_acked_messages = optional(bool),<br> message_retention_duration = optional(string),<br> maximum_backoff = optional(string),<br> minimum_backoff = optional(string),<br> filter = optional(string),<br> enable_message_ordering = optional(bool),<br> service_account = optional(string),<br> enable_exactly_once_delivery = optional(bool),<br> }))</pre> | `[]` | no |
9696
| push\_subscriptions | The list of the push subscriptions. | <pre>list(object({<br> name = string,<br> ack_deadline_seconds = optional(number),<br> push_endpoint = optional(string),<br> x-goog-version = optional(string),<br> oidc_service_account_email = optional(string),<br> audience = optional(string),<br> expiration_policy = optional(string),<br> dead_letter_topic = optional(string),<br> retain_acked_messages = optional(bool),<br> message_retention_duration = optional(string),<br> max_delivery_attempts = optional(number),<br> maximum_backoff = optional(string),<br> minimum_backoff = optional(string),<br> filter = optional(string),<br> enable_message_ordering = optional(bool),<br> }))</pre> | `[]` | no |
9797
| schema | Schema for the topic. | <pre>object({<br> name = string<br> type = string<br> definition = string<br> encoding = string<br> })</pre> | `null` | no |
9898
| subscription\_labels | A map of labels to assign to every Pub/Sub subscription. | `map(string)` | `{}` | no |

examples/simple/main.tf

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ module "pubsub" {
3737
enable_exactly_once_delivery = true
3838
},
3939
{
40-
name = "pull2"
41-
minimum_backoff = "10s"
42-
maximum_backoff = "600s"
40+
name = "pull2"
41+
minimum_backoff = "10s"
42+
maximum_backoff = "600s"
43+
expiration_policy = "1209600s" // two weeks
4344
},
4445
]
4546

@@ -51,6 +52,11 @@ module "pubsub" {
5152
ack_deadline_seconds = 20
5253
expiration_policy = "1209600s" // two weeks
5354
},
55+
{
56+
name = "push-default-expiration"
57+
push_endpoint = "https://${var.project_id}.appspot.com/"
58+
x-goog-version = "v1beta1"
59+
},
5460
]
5561

5662
schema = {

main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ resource "google_pubsub_subscription" "push_subscriptions" {
181181
enable_message_ordering = each.value.enable_message_ordering
182182
dynamic "expiration_policy" {
183183
// check if the 'expiration_policy' key exists, if yes, return a list containing it.
184-
for_each = contains(keys(each.value), "expiration_policy") ? [each.value.expiration_policy] : []
184+
for_each = each.value.expiration_policy != null ? [each.value.expiration_policy] : []
185185
content {
186186
ttl = expiration_policy.value
187187
}
@@ -240,7 +240,7 @@ resource "google_pubsub_subscription" "pull_subscriptions" {
240240
enable_message_ordering = each.value.enable_message_ordering
241241
dynamic "expiration_policy" {
242242
// check if the 'expiration_policy' key exists, if yes, return a list containing it.
243-
for_each = contains(keys(each.value), "expiration_policy") ? [each.value.expiration_policy] : []
243+
for_each = each.value.expiration_policy != null ? [each.value.expiration_policy] : []
244244
content {
245245
ttl = expiration_policy.value
246246
}

metadata.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ spec:
2727
version: 8.0.1
2828
actuationTool:
2929
flavor: Terraform
30-
version: ">= 0.13"
30+
version: ">= 1.3"
3131
description: {}
3232
content:
3333
examples:
@@ -96,12 +96,13 @@ spec:
9696
list(object({
9797
name = string,
9898
ack_deadline_seconds = optional(number),
99+
expiration_policy = optional(string),
99100
dead_letter_topic = optional(string),
100101
max_delivery_attempts = optional(number),
101102
retain_acked_messages = optional(bool),
102103
message_retention_duration = optional(string),
103-
maximum_backoff = optional(number),
104-
minimum_backoff = optional(number),
104+
maximum_backoff = optional(string),
105+
minimum_backoff = optional(string),
105106
filter = optional(string),
106107
enable_message_ordering = optional(bool),
107108
service_account = optional(string),

test/integration/simple/simple_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func TestSimple(t *testing.T) {
6767
op = gcloud.Runf(t, "pubsub subscriptions describe pull2 --project=%s", projectId)
6868
assert.Equal("600s", op.Get("retryPolicy.maximumBackoff").String(), "has expected maximum_backoff")
6969
assert.Equal("10s", op.Get("retryPolicy.minimumBackoff").String(), "has expected minimum_backoff")
70+
assert.Equal("1209600s", op.Get("expirationPolicy.ttl").String(), "has expected expiration_policy")
7071

7172
op = gcloud.Runf(t, "pubsub schemas describe example --project=%s", projectId)
7273
assert.Equal(fmt.Sprintf("projects/%s/schemas/example", projectId), op.Get("name").String(), "has expected name")

variables.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ variable "pull_subscriptions" {
6767
type = list(object({
6868
name = string,
6969
ack_deadline_seconds = optional(number),
70+
expiration_policy = optional(string),
7071
dead_letter_topic = optional(string),
7172
max_delivery_attempts = optional(number),
7273
retain_acked_messages = optional(bool),

0 commit comments

Comments
 (0)