fix: align terraform resources with actual provider schema
Use nested attribute assignment instead of dynamic blocks for specifications, quality_groups, and format_items. Remove unsupported season_search_maximum_single_episode_age from indexer configs. Flatten custom format specifications to use value/min/max directly.
This commit is contained in:
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: av1
|
||||||
- name: value
|
|
||||||
value: "av1"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: (x|h)\.?264
|
||||||
- name: value
|
|
||||||
value: "(x|h)\\.?264"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: (((x|h)\.?265)|(HEVC))
|
||||||
- name: value
|
|
||||||
value: "(((x|h)\\.?265)|(HEVC))"
|
|
||||||
|
|||||||
@@ -4,20 +4,14 @@ specifications:
|
|||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: true
|
required: true
|
||||||
fields:
|
value: hdr10
|
||||||
- name: value
|
|
||||||
value: "hdr10"
|
|
||||||
- name: x265
|
- name: x265
|
||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: true
|
required: true
|
||||||
fields:
|
value: (((x|h)\.?265)|(HEVC))
|
||||||
- name: value
|
|
||||||
value: "(((x|h)\\.?265)|(HEVC))"
|
|
||||||
- name: Surround Sound
|
- name: Surround Sound
|
||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: true
|
required: true
|
||||||
fields:
|
value: DTS.?(HD|ES|X(?!\D))|TRUEHD|ATMOS|DD(\+|P).?([5-9])|EAC3.?([5-9])
|
||||||
- name: value
|
|
||||||
value: "DTS.?(HD|ES|X(?!\\D))|TRUEHD|ATMOS|DD(\\+|P).?([5-9])|EAC3.?([5-9])"
|
|
||||||
|
|||||||
@@ -4,27 +4,19 @@ specifications:
|
|||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: true
|
required: true
|
||||||
fields:
|
value: 10bit
|
||||||
- name: value
|
|
||||||
value: "10bit"
|
|
||||||
- name: hvec
|
- name: hvec
|
||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: hvec
|
||||||
- name: value
|
|
||||||
value: "hvec"
|
|
||||||
- name: x265
|
- name: x265
|
||||||
implementation: ReleaseTitleSpecification
|
implementation: ReleaseTitleSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: true
|
required: true
|
||||||
fields:
|
value: (((x|h)\.?265)|(HEVC))
|
||||||
- name: value
|
- name: 'release_iVy: iVy'
|
||||||
value: "(((x|h)\\.?265)|(HEVC))"
|
|
||||||
- name: "release_iVy: iVy"
|
|
||||||
implementation: ReleaseGroupSpecification
|
implementation: ReleaseGroupSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: true
|
required: true
|
||||||
fields:
|
value: -iVy$
|
||||||
- name: value
|
|
||||||
value: "-iVy$"
|
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
include_custom_format_when_renaming: false
|
include_custom_format_when_renaming: false
|
||||||
specifications:
|
specifications:
|
||||||
- name: "AsmoFuscated "
|
- name: 'AsmoFuscated '
|
||||||
implementation: ReleaseGroupSpecification
|
implementation: ReleaseGroupSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: AsmoFuscated$
|
||||||
- name: value
|
|
||||||
value: "AsmoFuscated$"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ReleaseGroupSpecification
|
implementation: ReleaseGroupSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: d3g$
|
||||||
- name: value
|
|
||||||
value: "d3g$"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ReleaseGroupSpecification
|
implementation: ReleaseGroupSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: iVy$
|
||||||
- name: value
|
|
||||||
value: "iVy$"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ResolutionSpecification
|
implementation: ResolutionSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '1080'
|
||||||
- name: value
|
|
||||||
value: "1080"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ResolutionSpecification
|
implementation: ResolutionSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '2160'
|
||||||
- name: value
|
|
||||||
value: "2160"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: ResolutionSpecification
|
implementation: ResolutionSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '720'
|
||||||
- name: value
|
|
||||||
value: "720"
|
|
||||||
|
|||||||
@@ -4,8 +4,5 @@ specifications:
|
|||||||
implementation: SizeSpecification
|
implementation: SizeSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
min: 0
|
||||||
- name: min
|
max: 0.8
|
||||||
value: "0"
|
|
||||||
- name: max
|
|
||||||
value: "0.8"
|
|
||||||
|
|||||||
@@ -4,8 +4,5 @@ specifications:
|
|||||||
implementation: SizeSpecification
|
implementation: SizeSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
min: 1.5
|
||||||
- name: min
|
max: 3
|
||||||
value: "1.5"
|
|
||||||
- name: max
|
|
||||||
value: "3"
|
|
||||||
|
|||||||
@@ -4,8 +4,5 @@ specifications:
|
|||||||
implementation: SizeSpecification
|
implementation: SizeSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
min: 3
|
||||||
- name: min
|
max: 6
|
||||||
value: "3"
|
|
||||||
- name: max
|
|
||||||
value: "6"
|
|
||||||
|
|||||||
@@ -4,8 +4,5 @@ specifications:
|
|||||||
implementation: SizeSpecification
|
implementation: SizeSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
min: 6
|
||||||
- name: min
|
max: 10
|
||||||
value: "6"
|
|
||||||
- name: max
|
|
||||||
value: "10"
|
|
||||||
|
|||||||
@@ -4,8 +4,5 @@ specifications:
|
|||||||
implementation: SizeSpecification
|
implementation: SizeSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
min: 0.8
|
||||||
- name: min
|
max: 1.5
|
||||||
value: "0.8"
|
|
||||||
- name: max
|
|
||||||
value: "1.5"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: SourceSpecification
|
implementation: SourceSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '6'
|
||||||
- name: value
|
|
||||||
value: "6"
|
|
||||||
|
|||||||
@@ -4,6 +4,4 @@ specifications:
|
|||||||
implementation: SourceSpecification
|
implementation: SourceSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '1'
|
||||||
- name: value
|
|
||||||
value: "1"
|
|
||||||
|
|||||||
@@ -4,13 +4,9 @@ specifications:
|
|||||||
implementation: SourceSpecification
|
implementation: SourceSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '3'
|
||||||
- name: value
|
|
||||||
value: "3"
|
|
||||||
- name: webrip
|
- name: webrip
|
||||||
implementation: SourceSpecification
|
implementation: SourceSpecification
|
||||||
negate: false
|
negate: false
|
||||||
required: false
|
required: false
|
||||||
fields:
|
value: '4'
|
||||||
- name: value
|
|
||||||
value: "4"
|
|
||||||
|
|||||||
@@ -12,4 +12,3 @@ categories:
|
|||||||
- 5070
|
- 5070
|
||||||
- 5080
|
- 5080
|
||||||
anime_categories: []
|
anime_categories: []
|
||||||
season_search_maximum_single_episode_age: 0
|
|
||||||
|
|||||||
@@ -14,4 +14,3 @@ categories:
|
|||||||
- 5050
|
- 5050
|
||||||
anime_categories:
|
anime_categories:
|
||||||
- 5070
|
- 5070
|
||||||
season_search_maximum_single_episode_age: 0
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# This file is maintained automatically by "tofu init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.opentofu.org/devopsarr/sonarr" {
|
||||||
|
version = "3.4.2"
|
||||||
|
constraints = "3.4.2"
|
||||||
|
hashes = [
|
||||||
|
"h1:2XcXWqATWjGrdkC4lngY4LvqUgwxfy5pjpLWRlNVYcY=",
|
||||||
|
"zh:01d675253aef5586b165bc4749d006f91cda6ce65b24842c7911cc178fe7e09d",
|
||||||
|
"zh:2da242ee58c1726cff9ce9260bc94756bc8a775a717da5aec8e9a8bf60578ac6",
|
||||||
|
"zh:30acc52a3a31ac75387728c27b3193f0419dcb72ee7488e8dbcd407884921205",
|
||||||
|
"zh:47adaba9c7915c832a9d8dfb5d0a18dd08b60fd7c531a810b2642ab75d200ee1",
|
||||||
|
"zh:551b580729cd82cc7a303d836985286e79a26062f02629bf51081ba2e4edf471",
|
||||||
|
"zh:5e5c5b1614cf0c61aa154543da1d5bda295a405fda52746d9193b0b8db922ddb",
|
||||||
|
"zh:65ebe76847129677f747364ee20591f01f5df4a67b06c5dff1bf53b813ec613a",
|
||||||
|
"zh:67db823f6016e345f2cbceb5300d0cce595bdeb0da32b15a1743724f0a4f978f",
|
||||||
|
"zh:75f119f674b3b0988133d38c1645e97cf6f0aee62a4131dfd62c8462636c2a94",
|
||||||
|
"zh:7ca3d6cfd4ccc2a9fb008ca93362c97a98f2ae98b55a56a7902fd33030d64179",
|
||||||
|
"zh:82033841c5a3fceecc1e3b84ef7328f027e2bb4bf63dfc24886510fed9d8a843",
|
||||||
|
"zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f",
|
||||||
|
"zh:9aee54de9fcce6ef4f6b4f4f394a5628690d7d4849b03cd996ff991f8b29433a",
|
||||||
|
"zh:cda3fd66138de23856f869549aa06c82ce1f899474bc133d29d8463bfa032b16",
|
||||||
|
"zh:e4f8a67b8d08702056073a5ac8928dbb991767a52d3f36c3726399df0b5f2b96",
|
||||||
|
]
|
||||||
|
}
|
||||||
+10
-46
@@ -2,24 +2,7 @@ resource "sonarr_custom_format" "this" {
|
|||||||
for_each = var.custom_formats
|
for_each = var.custom_formats
|
||||||
name = each.key
|
name = each.key
|
||||||
include_custom_format_when_renaming = lookup(each.value, "include_custom_format_when_renaming", false)
|
include_custom_format_when_renaming = lookup(each.value, "include_custom_format_when_renaming", false)
|
||||||
|
specifications = each.value.specifications
|
||||||
dynamic "specifications" {
|
|
||||||
for_each = each.value.specifications
|
|
||||||
content {
|
|
||||||
name = specifications.value.name
|
|
||||||
implementation = specifications.value.implementation
|
|
||||||
negate = lookup(specifications.value, "negate", false)
|
|
||||||
required = lookup(specifications.value, "required", false)
|
|
||||||
|
|
||||||
dynamic "fields" {
|
|
||||||
for_each = lookup(specifications.value, "fields", [])
|
|
||||||
content {
|
|
||||||
name = fields.value.name
|
|
||||||
value = tostring(lookup(fields.value, "value", ""))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "sonarr_quality_profile" "this" {
|
resource "sonarr_quality_profile" "this" {
|
||||||
@@ -29,33 +12,15 @@ resource "sonarr_quality_profile" "this" {
|
|||||||
cutoff = each.value.cutoff
|
cutoff = each.value.cutoff
|
||||||
cutoff_format_score = lookup(each.value, "cutoff_format_score", 0)
|
cutoff_format_score = lookup(each.value, "cutoff_format_score", 0)
|
||||||
min_format_score = lookup(each.value, "min_format_score", 0)
|
min_format_score = lookup(each.value, "min_format_score", 0)
|
||||||
|
quality_groups = each.value.quality_groups
|
||||||
|
|
||||||
dynamic "quality_groups" {
|
format_items = [
|
||||||
for_each = each.value.quality_groups
|
for fi in lookup(each.value, "format_items", []) : {
|
||||||
content {
|
name = fi.name
|
||||||
id = quality_groups.value.id
|
format = sonarr_custom_format.this[fi.format].id
|
||||||
name = lookup(quality_groups.value, "name", null)
|
score = fi.score
|
||||||
|
|
||||||
dynamic "qualities" {
|
|
||||||
for_each = quality_groups.value.qualities
|
|
||||||
content {
|
|
||||||
id = qualities.value.id
|
|
||||||
name = qualities.value.name
|
|
||||||
source = qualities.value.source
|
|
||||||
resolution = qualities.value.resolution
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dynamic "format_items" {
|
|
||||||
for_each = lookup(each.value, "format_items", [])
|
|
||||||
content {
|
|
||||||
name = format_items.value.name
|
|
||||||
format = format_items.value.format
|
|
||||||
score = format_items.value.score
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "sonarr_download_client_nzbget" "this" {
|
resource "sonarr_download_client_nzbget" "this" {
|
||||||
@@ -85,7 +50,6 @@ resource "sonarr_indexer_newznab" "this" {
|
|||||||
api_key = lookup(each.value, "api_key", "")
|
api_key = lookup(each.value, "api_key", "")
|
||||||
categories = lookup(each.value, "categories", [])
|
categories = lookup(each.value, "categories", [])
|
||||||
anime_categories = lookup(each.value, "anime_categories", [])
|
anime_categories = lookup(each.value, "anime_categories", [])
|
||||||
season_search_maximum_single_episode_age = lookup(each.value, "season_search_maximum_single_episode_age", 0)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "sonarr_notification_emby" "this" {
|
resource "sonarr_notification_emby" "this" {
|
||||||
@@ -94,7 +58,7 @@ resource "sonarr_notification_emby" "this" {
|
|||||||
host = each.value.host
|
host = each.value.host
|
||||||
port = each.value.port
|
port = each.value.port
|
||||||
use_ssl = lookup(each.value, "use_ssl", false)
|
use_ssl = lookup(each.value, "use_ssl", false)
|
||||||
api_key = lookup(each.value, "api_key", "")
|
api_key = each.value.api_key
|
||||||
notify = lookup(each.value, "notify", false)
|
notify = lookup(each.value, "notify", false)
|
||||||
update_library = lookup(each.value, "update_library", true)
|
update_library = lookup(each.value, "update_library", true)
|
||||||
|
|
||||||
@@ -119,7 +83,7 @@ resource "sonarr_delay_profile" "this" {
|
|||||||
bypass_if_highest_quality = lookup(each.value, "bypass_if_highest_quality", true)
|
bypass_if_highest_quality = lookup(each.value, "bypass_if_highest_quality", true)
|
||||||
bypass_if_above_custom_format_score = lookup(each.value, "bypass_if_above_custom_format_score", false)
|
bypass_if_above_custom_format_score = lookup(each.value, "bypass_if_above_custom_format_score", false)
|
||||||
minimum_custom_format_score = lookup(each.value, "minimum_custom_format_score", 0)
|
minimum_custom_format_score = lookup(each.value, "minimum_custom_format_score", 0)
|
||||||
tags = lookup(each.value, "tags", [])
|
tags = each.value.tags
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "sonarr_root_folder" "this" {
|
resource "sonarr_root_folder" "this" {
|
||||||
|
|||||||
Reference in New Issue
Block a user