Description
As the tf_vars are unique ( it is not possible to define a value for a variable more than once ) it would make sense to change the type of the tf_vars property in the template resource to a map.
How it is now:
resource "coderd_template" "template" {
name = "example"
description = "example"
versions = [
{
name = "example"
message = "example"
directory = "./template"
active = true
tf_vars = [
{
name = "default_project"
value = "myproject"
},
{
name = "default_image_variant"
value = "bookworm"
},
{
name = "repository"
value = "github.com/my/repo"
}
]
}
]
}
How it could be:
resource "coderd_template" "template" {
name = "example"
description = "example"
versions = [
{
name = "example"
message = "example"
directory = "./template"
active = true
tf_vars = {
"default_project" = "myproject"
"default_image_variant" = "bookworm"
"repository" = "github.com/my/repo"
}
}
]
}
By doing this we could ensure that no variable is defined twice.
It would also greatly improve the plans readability, heres an example:
# coderd_template.templates["terraform"] will be updated in-place
~ resource "coderd_template" "templates" {
~ display_name = "terraform" -> (known after apply)
id = "442609fa-9d44-40bd-81ac-593bcbe4aec7"
~ max_port_share_level = "public" -> (known after apply)
name = "terraform"
~ organization_id = "6aa09569-a619-446e-8e7c-8ea848458631" -> (known after apply)
~ versions = [
~ {
~ id = "512d14e5-2173-4091-be70-5b41209df4ac" -> (known after apply)
~ message = "Merged PR 15261: fix: separate tempalte files to create separate messages" -> "Merged PR 15262: fix: terraform 1.9.8"
~ name = "17f1e43475d9d47871b9aa240026e7cf729d0909" -> "54d813a3f801811851aedf69af079ea7370fafc8"
~ tf_vars = [
- {
- name = "default_image_variant" -> null
- value = "1.9.7" -> null
},
- {
- name = "image_variants" -> null
- value = jsonencode(
[
- "1.5.7",
- "1.7.4",
- "1.9.2",
- "1.9.5",
- "1.9.6",
- "1.9.7",
]
) -> null
},
+ {
+ name = "default_image_variant"
+ value = "1.9.8"
},
+ {
+ name = "image_variants"
+ value = jsonencode(
[
+ "1.5.7",
+ "1.7.4",
+ "1.9.2",
+ "1.9.5",
+ "1.9.6",
+ "1.9.7",
+ "1.9.8",
]
)
},
# (8 unchanged elements hidden)
]
# (3 unchanged attributes hidden)
},
]
# (14 unchanged attributes hidden)
}
this could be as simple as
# coderd_template.templates["terraform"] will be updated in-place
~ resource "coderd_template" "templates" {
~ display_name = "terraform" -> (known after apply)
id = "442609fa-9d44-40bd-81ac-593bcbe4aec7"
~ max_port_share_level = "public" -> (known after apply)
name = "terraform"
~ organization_id = "6aa09569-a619-446e-8e7c-8ea848458631" -> (known after apply)
~ versions = [
~ {
~ id = "512d14e5-2173-4091-be70-5b41209df4ac" -> (known after apply)
~ message = "Merged PR 15261: fix: separate tempalte files to create separate messages" -> "Merged PR 15262: fix: terraform 1.9.8"
~ name = "17f1e43475d9d47871b9aa240026e7cf729d0909" -> "54d813a3f801811851aedf69af079ea7370fafc8"
~ tf_vars = {
~ "default_image_variant" = "1.9.7" -> "1.9.8"
~ "image_variants" = "[\"1.5.7\",\"1.7.4\",\"1.9.2\",\"1.9.5\",\"1.9.6\",\"1.9.7\"]" -> "[\"1.5.7\",\"1.7.4\",\"1.9.2\",\"1.9.5\",\"1.9.6\",\"1.9.7\",\"1.9.8\"]"
# (8 unchanged elements hidden)
}
# (3 unchanged attributes hidden)
},
]
# (14 unchanged attributes hidden)
}
I understand this is a breaking change, but as we are very early in the product life cycle I thought it might be an option to change this now before lots of people use the provider
Edit: Typo
Metadata
Metadata
Assignees
Labels
No labels