Skip to content

Commit 0f35ab5

Browse files
feat: add enabled computed field to coder_ai_task
As discussed, we want to enable a way for consumers to know if their template is being provisioned as a task or not. We know that `CODER_TASK_ID` is set by the provisioner, it is being provisioned as a task, and not as a usual workspace. We use this knowledge to set a computed field `enabled` to reflect this.
1 parent bc840fd commit 0f35ab5

File tree

2 files changed

+66
-6
lines changed

2 files changed

+66
-6
lines changed

provider/ai_task.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,16 @@ func aiTaskResource() *schema.Resource {
3434

3535
if idStr := os.Getenv("CODER_TASK_ID"); idStr != "" {
3636
resourceData.SetId(idStr)
37+
resourceData.Set("enabled", true)
3738
} else {
3839
resourceData.SetId(uuid.NewString())
39-
40-
diags = append(diags, diag.Diagnostic{
41-
Severity: diag.Warning,
42-
Summary: "`CODER_TASK_ID` should be set. If you are seeing this message, the version of the Coder Terraform provider you are using is likely too new for your current Coder version.",
43-
})
40+
resourceData.Set("enabled", false)
4441
}
4542

4643
if prompt := os.Getenv("CODER_TASK_PROMPT"); prompt != "" {
4744
resourceData.Set("prompt", prompt)
4845
} else {
49-
resourceData.Set("prompt", "default")
46+
resourceData.Set("prompt", "")
5047
}
5148

5249
var (
@@ -112,6 +109,11 @@ func aiTaskResource() *schema.Resource {
112109
ValidateFunc: validation.IsUUID,
113110
ConflictsWith: []string{"sidebar_app"},
114111
},
112+
"enabled": {
113+
Type: schema.TypeBool,
114+
Description: "The field is true if the template is being provisioned as a task.",
115+
Computed: true,
116+
},
115117
},
116118
}
117119
}

provider/ai_task_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,62 @@ import (
99
"github.com/stretchr/testify/require"
1010
)
1111

12+
func TestAITask_Enabled(t *testing.T) {
13+
t.Run("EnabledWhenTask", func(t *testing.T) {
14+
t.Setenv("CODER_TASK_ID", "7d8d4c2e-fb57-44f9-a183-22509819c2e7")
15+
16+
resource.Test(t, resource.TestCase{
17+
ProviderFactories: coderFactory(),
18+
IsUnitTest: true,
19+
Steps: []resource.TestStep{{
20+
Config: `
21+
provider "coder" {
22+
}
23+
resource "coder_ai_task" "test" {
24+
app_id = "9a3ff7b4-4b3f-48c6-8d3a-a8118ac921fc"
25+
}
26+
`,
27+
Check: func(state *terraform.State) error {
28+
require.Len(t, state.Modules, 1)
29+
resource := state.Modules[0].Resources["coder_ai_task.test"]
30+
require.NotNil(t, resource)
31+
32+
require.Equal(t, "true", resource.Primary.Attributes["enabled"])
33+
34+
return nil
35+
},
36+
}},
37+
})
38+
})
39+
40+
t.Run("DisabledWhenWorkspace", func(t *testing.T) {
41+
t.Setenv("CODER_TASK_ID", "")
42+
43+
resource.Test(t, resource.TestCase{
44+
ProviderFactories: coderFactory(),
45+
IsUnitTest: true,
46+
Steps: []resource.TestStep{{
47+
Config: `
48+
provider "coder" {
49+
}
50+
resource "coder_ai_task" "test" {
51+
app_id = "9a3ff7b4-4b3f-48c6-8d3a-a8118ac921fc"
52+
}
53+
`,
54+
Check: func(state *terraform.State) error {
55+
require.Len(t, state.Modules, 1)
56+
resource := state.Modules[0].Resources["coder_ai_task.test"]
57+
require.NotNil(t, resource)
58+
59+
require.Equal(t, "false", resource.Primary.Attributes["enabled"])
60+
61+
return nil
62+
},
63+
}},
64+
})
65+
})
66+
}
67+
1268
func TestAITask(t *testing.T) {
1369
t.Setenv("CODER_TASK_ID", "7d8d4c2e-fb57-44f9-a183-22509819c2e7")
1470
t.Setenv("CODER_TASK_PROMPT", "some task prompt")
@@ -35,6 +91,7 @@ func TestAITask(t *testing.T) {
3591
"id",
3692
"prompt",
3793
"app_id",
94+
"enabled",
3895
} {
3996
value := resource.Primary.Attributes[key]
4097
require.NotNil(t, value)
@@ -97,6 +154,7 @@ func TestAITask(t *testing.T) {
97154
"id",
98155
"prompt",
99156
"app_id",
157+
"enabled",
100158
} {
101159
value := resource.Primary.Attributes[key]
102160
require.NotNil(t, value)

0 commit comments

Comments
 (0)