Skip to content

Commit 8de9e61

Browse files
committed
Add "coder_workspace" data source
1 parent 89b1887 commit 8de9e61

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

provisioner/terraform/provider/provider.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1313
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1414

15+
"github.com/coder/coder/database"
1516
"github.com/coder/coder/provisionersdk"
1617
)
1718

@@ -57,6 +58,24 @@ func New() *schema.Provider {
5758
}, nil
5859
},
5960
DataSourcesMap: map[string]*schema.Resource{
61+
"coder_workspace": {
62+
Description: "TODO",
63+
ReadContext: func(c context.Context, rd *schema.ResourceData, i interface{}) diag.Diagnostics {
64+
rd.SetId(uuid.NewString())
65+
return nil
66+
},
67+
Schema: map[string]*schema.Schema{
68+
"transition": {
69+
Type: schema.TypeString,
70+
Optional: true,
71+
Description: "TODO",
72+
DefaultFunc: func() (interface{}, error) {
73+
return os.Getenv("CODER_WORKSPACE_TRANSITION"), nil
74+
},
75+
ValidateFunc: validation.StringInSlice([]string{string(database.WorkspaceTransitionStart), string(database.WorkspaceTransitionStop)}, false),
76+
},
77+
},
78+
},
6079
"coder_agent_script": {
6180
Description: "TODO",
6281
ReadContext: func(c context.Context, resourceData *schema.ResourceData, i interface{}) diag.Diagnostics {

provisioner/terraform/provider/provider_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,35 @@ func TestProvider(t *testing.T) {
1919
require.NoError(t, err)
2020
}
2121

22+
func TestWorkspace(t *testing.T) {
23+
t.Parallel()
24+
resource.Test(t, resource.TestCase{
25+
Providers: map[string]*schema.Provider{
26+
"coder": provider.New(),
27+
},
28+
IsUnitTest: true,
29+
Steps: []resource.TestStep{{
30+
Config: `
31+
provider "coder" {
32+
url = "https://example.com"
33+
}
34+
data "coder_workspace" "me" {
35+
transition = "start"
36+
}`,
37+
Check: func(state *terraform.State) error {
38+
require.Len(t, state.Modules, 1)
39+
require.Len(t, state.Modules[0].Resources, 1)
40+
resource := state.Modules[0].Resources["data.coder_workspace.me"]
41+
require.NotNil(t, resource)
42+
value := resource.Primary.Attributes["transition"]
43+
require.NotNil(t, value)
44+
t.Log(value)
45+
return nil
46+
},
47+
}},
48+
})
49+
}
50+
2251
func TestAgentScript(t *testing.T) {
2352
t.Parallel()
2453
resource.Test(t, resource.TestCase{

0 commit comments

Comments
 (0)