diff --git a/README.md b/README.md index dea0eaaa..4f96b663 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ module "pubsub" { | grant\_token\_creator | Specify true if you want to add token creator role to the default Pub/Sub SA. | `bool` | `true` | no | | message\_storage\_policy | A map of storage policies. Default - inherit from organization's Resource Location Restriction policy. | `map(any)` | `{}` | no | | project\_id | The project ID to manage the Pub/Sub resources. | `string` | n/a | yes | -| pull\_subscriptions | The list of the pull subscriptions. |
list(object({
name = string,
ack_deadline_seconds = optional(number),
dead_letter_topic = optional(string),
max_delivery_attempts = optional(number),
retain_acked_messages = optional(bool),
message_retention_duration = optional(string),
maximum_backoff = optional(string),
minimum_backoff = optional(string),
filter = optional(string),
enable_message_ordering = optional(bool),
service_account = optional(string),
enable_exactly_once_delivery = optional(bool),
}))
| `[]` | no | +| pull\_subscriptions | The list of the pull subscriptions. |
list(object({
name = string,
ack_deadline_seconds = optional(number),
expiration_policy = optional(string),
dead_letter_topic = optional(string),
max_delivery_attempts = optional(number),
retain_acked_messages = optional(bool),
message_retention_duration = optional(string),
maximum_backoff = optional(string),
minimum_backoff = optional(string),
filter = optional(string),
enable_message_ordering = optional(bool),
service_account = optional(string),
enable_exactly_once_delivery = optional(bool),
}))
| `[]` | no | | push\_subscriptions | The list of the push subscriptions. |
list(object({
name = string,
ack_deadline_seconds = optional(number),
push_endpoint = optional(string),
x-goog-version = optional(string),
oidc_service_account_email = optional(string),
audience = optional(string),
expiration_policy = optional(string),
dead_letter_topic = optional(string),
retain_acked_messages = optional(bool),
message_retention_duration = optional(string),
max_delivery_attempts = optional(number),
maximum_backoff = optional(string),
minimum_backoff = optional(string),
filter = optional(string),
enable_message_ordering = optional(bool),
}))
| `[]` | no | | schema | Schema for the topic. |
object({
name = string
type = string
definition = string
encoding = string
})
| `null` | no | | subscription\_labels | A map of labels to assign to every Pub/Sub subscription. | `map(string)` | `{}` | no | diff --git a/examples/simple/main.tf b/examples/simple/main.tf index e7a5f92e..4a3be7a0 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -37,9 +37,10 @@ module "pubsub" { enable_exactly_once_delivery = true }, { - name = "pull2" - minimum_backoff = "10s" - maximum_backoff = "600s" + name = "pull2" + minimum_backoff = "10s" + maximum_backoff = "600s" + expiration_policy = "1209600s" // two weeks }, ] @@ -51,6 +52,11 @@ module "pubsub" { ack_deadline_seconds = 20 expiration_policy = "1209600s" // two weeks }, + { + name = "push-default-expiration" + push_endpoint = "https://${var.project_id}.appspot.com/" + x-goog-version = "v1beta1" + }, ] schema = { diff --git a/main.tf b/main.tf index e67ff121..81a09d2c 100644 --- a/main.tf +++ b/main.tf @@ -181,7 +181,7 @@ resource "google_pubsub_subscription" "push_subscriptions" { enable_message_ordering = each.value.enable_message_ordering dynamic "expiration_policy" { // check if the 'expiration_policy' key exists, if yes, return a list containing it. - for_each = contains(keys(each.value), "expiration_policy") ? [each.value.expiration_policy] : [] + for_each = each.value.expiration_policy != null ? [each.value.expiration_policy] : [] content { ttl = expiration_policy.value } @@ -240,7 +240,7 @@ resource "google_pubsub_subscription" "pull_subscriptions" { enable_message_ordering = each.value.enable_message_ordering dynamic "expiration_policy" { // check if the 'expiration_policy' key exists, if yes, return a list containing it. - for_each = contains(keys(each.value), "expiration_policy") ? [each.value.expiration_policy] : [] + for_each = each.value.expiration_policy != null ? [each.value.expiration_policy] : [] content { ttl = expiration_policy.value } diff --git a/metadata.yaml b/metadata.yaml index 2d44b5a7..73edf13e 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -27,7 +27,7 @@ spec: version: 8.0.1 actuationTool: flavor: Terraform - version: ">= 0.13" + version: ">= 1.3" description: {} content: examples: @@ -96,12 +96,13 @@ spec: list(object({ name = string, ack_deadline_seconds = optional(number), + expiration_policy = optional(string), dead_letter_topic = optional(string), max_delivery_attempts = optional(number), retain_acked_messages = optional(bool), message_retention_duration = optional(string), - maximum_backoff = optional(number), - minimum_backoff = optional(number), + maximum_backoff = optional(string), + minimum_backoff = optional(string), filter = optional(string), enable_message_ordering = optional(bool), service_account = optional(string), diff --git a/test/integration/simple/simple_test.go b/test/integration/simple/simple_test.go index efa4aa46..cfc0adb4 100755 --- a/test/integration/simple/simple_test.go +++ b/test/integration/simple/simple_test.go @@ -67,6 +67,7 @@ func TestSimple(t *testing.T) { op = gcloud.Runf(t, "pubsub subscriptions describe pull2 --project=%s", projectId) assert.Equal("600s", op.Get("retryPolicy.maximumBackoff").String(), "has expected maximum_backoff") assert.Equal("10s", op.Get("retryPolicy.minimumBackoff").String(), "has expected minimum_backoff") + assert.Equal("1209600s", op.Get("expirationPolicy.ttl").String(), "has expected expiration_policy") op = gcloud.Runf(t, "pubsub schemas describe example --project=%s", projectId) assert.Equal(fmt.Sprintf("projects/%s/schemas/example", projectId), op.Get("name").String(), "has expected name") diff --git a/variables.tf b/variables.tf index 69612d41..5e6c5b45 100644 --- a/variables.tf +++ b/variables.tf @@ -67,6 +67,7 @@ variable "pull_subscriptions" { type = list(object({ name = string, ack_deadline_seconds = optional(number), + expiration_policy = optional(string), dead_letter_topic = optional(string), max_delivery_attempts = optional(number), retain_acked_messages = optional(bool),