Skip to content

Commit 08c910b

Browse files
committed
fix: allow mapped resources in our terraform provider
Fixes #6234.
1 parent 8360357 commit 08c910b

File tree

8 files changed

+824
-295
lines changed

8 files changed

+824
-295
lines changed

provisioner/terraform/resources.go

+311-295
Large diffs are not rendered by default.

provisioner/terraform/resources_test.go

+24
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,30 @@ func TestConvertResources(t *testing.T) {
170170
}},
171171
}},
172172
},
173+
"mapped-apps": {
174+
resources: []*proto.Resource{{
175+
Name: "dev",
176+
Type: "null_resource",
177+
Agents: []*proto.Agent{{
178+
Name: "dev",
179+
OperatingSystem: "linux",
180+
Architecture: "amd64",
181+
Apps: []*proto.App{
182+
{
183+
Slug: "app1",
184+
DisplayName: "app1",
185+
},
186+
{
187+
Slug: "app2",
188+
DisplayName: "app2",
189+
},
190+
},
191+
Auth: &proto.Agent_Token{},
192+
LoginBeforeReady: true,
193+
ConnectionTimeoutSeconds: 120,
194+
}},
195+
}},
196+
},
173197
// Tests fetching metadata about workspace resources.
174198
"resource-metadata": {
175199
resources: []*proto.Resource{{

provisioner/terraform/testdata/generate.sh

+5
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ for d in */; do
1313
continue
1414
fi
1515

16+
if [[ $name != "mapped-apps" ]]; then
17+
popd
18+
continue
19+
fi
20+
1621
terraform init -upgrade
1722
terraform plan -out terraform.tfplan
1823
terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
terraform {
2+
required_providers {
3+
coder = {
4+
source = "coder/coder"
5+
version = "0.6.1"
6+
}
7+
}
8+
}
9+
10+
resource "coder_agent" "dev" {
11+
os = "linux"
12+
arch = "amd64"
13+
}
14+
15+
locals {
16+
apps_map = {
17+
"app1" = {
18+
name = "app1"
19+
}
20+
"app2" = {
21+
name = "app2"
22+
}
23+
}
24+
}
25+
26+
resource "coder_app" "apps" {
27+
for_each = local.apps_map
28+
29+
agent_id = coder_agent.dev.id
30+
slug = each.key
31+
display_name = each.value.name
32+
}
33+
34+
resource "null_resource" "dev" {
35+
depends_on = [
36+
coder_agent.dev
37+
]
38+
}

provisioner/terraform/testdata/mapped-apps/mapped-apps.tfplan.dot

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)