From 81b28c72b15dc264f311017d4c588138b274a084 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sun, 28 Jun 2026 23:31:38 +1000 Subject: [PATCH] fix: use data source for size custom formats to work around provider set key bug The devopsarr sonarr provider cannot handle float min/max values in SizeSpecification as set element keys. Remove size custom formats from terraform management and look up their IDs via a data source instead. Also change variable types from map(any) to any to allow heterogeneous quality profile structures. --- config/custom_format/size_0_800.yaml | 8 -------- config/custom_format/size_1500_3000.yaml | 8 -------- config/custom_format/size_3000_6000.yaml | 8 -------- config/custom_format/size_6000_10000.yaml | 8 -------- config/custom_format/size_800_1500.yaml | 8 -------- modules/sonarr/main.tf | 11 ++++++++++- modules/sonarr/variables.tf | 14 +++++++------- 7 files changed, 17 insertions(+), 48 deletions(-) delete mode 100644 config/custom_format/size_0_800.yaml delete mode 100644 config/custom_format/size_1500_3000.yaml delete mode 100644 config/custom_format/size_3000_6000.yaml delete mode 100644 config/custom_format/size_6000_10000.yaml delete mode 100644 config/custom_format/size_800_1500.yaml diff --git a/config/custom_format/size_0_800.yaml b/config/custom_format/size_0_800.yaml deleted file mode 100644 index 66ed03b..0000000 --- a/config/custom_format/size_0_800.yaml +++ /dev/null @@ -1,8 +0,0 @@ -include_custom_format_when_renaming: false -specifications: -- name: size_0_800 - implementation: SizeSpecification - negate: false - required: false - min: 0 - max: 0.8 diff --git a/config/custom_format/size_1500_3000.yaml b/config/custom_format/size_1500_3000.yaml deleted file mode 100644 index df3a550..0000000 --- a/config/custom_format/size_1500_3000.yaml +++ /dev/null @@ -1,8 +0,0 @@ -include_custom_format_when_renaming: false -specifications: -- name: size_1500_3000 - implementation: SizeSpecification - negate: false - required: false - min: 1.5 - max: 3 diff --git a/config/custom_format/size_3000_6000.yaml b/config/custom_format/size_3000_6000.yaml deleted file mode 100644 index 1f19989..0000000 --- a/config/custom_format/size_3000_6000.yaml +++ /dev/null @@ -1,8 +0,0 @@ -include_custom_format_when_renaming: false -specifications: -- name: size_3000_6000 - implementation: SizeSpecification - negate: false - required: false - min: 3 - max: 6 diff --git a/config/custom_format/size_6000_10000.yaml b/config/custom_format/size_6000_10000.yaml deleted file mode 100644 index b7fdfd4..0000000 --- a/config/custom_format/size_6000_10000.yaml +++ /dev/null @@ -1,8 +0,0 @@ -include_custom_format_when_renaming: false -specifications: -- name: size_6000_10000 - implementation: SizeSpecification - negate: false - required: false - min: 6 - max: 10 diff --git a/config/custom_format/size_800_1500.yaml b/config/custom_format/size_800_1500.yaml deleted file mode 100644 index bd9f923..0000000 --- a/config/custom_format/size_800_1500.yaml +++ /dev/null @@ -1,8 +0,0 @@ -include_custom_format_when_renaming: false -specifications: -- name: size_800_1500 - implementation: SizeSpecification - negate: false - required: false - min: 0.8 - max: 1.5 diff --git a/modules/sonarr/main.tf b/modules/sonarr/main.tf index 86598ae..6e61c55 100644 --- a/modules/sonarr/main.tf +++ b/modules/sonarr/main.tf @@ -5,6 +5,15 @@ resource "sonarr_custom_format" "this" { specifications = each.value.specifications } +data "sonarr_custom_formats" "all" {} + +locals { + custom_format_ids = merge( + { for cf in data.sonarr_custom_formats.all.custom_formats : cf.name => cf.id }, + { for k, v in sonarr_custom_format.this : k => v.id }, + ) +} + resource "sonarr_quality_profile" "this" { for_each = var.quality_profiles name = each.key @@ -17,7 +26,7 @@ resource "sonarr_quality_profile" "this" { format_items = [ for fi in lookup(each.value, "format_items", []) : { name = fi.name - format = sonarr_custom_format.this[fi.format].id + format = local.custom_format_ids[fi.format] score = fi.score } ] diff --git a/modules/sonarr/variables.tf b/modules/sonarr/variables.tf index 67d117a..1782c9f 100644 --- a/modules/sonarr/variables.tf +++ b/modules/sonarr/variables.tf @@ -1,34 +1,34 @@ variable "custom_formats" { - type = map(any) + type = any default = {} } variable "quality_profiles" { - type = map(any) + type = any default = {} } variable "download_clients" { - type = map(any) + type = any default = {} } variable "indexers" { - type = map(any) + type = any default = {} } variable "notifications" { - type = map(any) + type = any default = {} } variable "delay_profiles" { - type = map(any) + type = any default = {} } variable "root_folders" { - type = map(any) + type = any default = {} }