Skip to content

Commit 7ed088d

Browse files
authored
chore!: remove deprecated items from coder_workspace data source (#255)
1 parent 3022367 commit 7ed088d

File tree

9 files changed

+107
-167
lines changed

9 files changed

+107
-167
lines changed

docs/data-sources/workspace.md

+43-10
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,51 @@ Use this data source to get information for the active workspace build.
1313
## Example Usage
1414

1515
```terraform
16-
data "coder_workspace" "dev" {
16+
provider "coder" {}
17+
18+
provider "docker" {}
19+
20+
data "coder_workspace" "me" {}
21+
22+
data "coder_workspace_owner" "me" {}
23+
24+
resource "coder_agent" "dev" {
25+
arch = "amd64"
26+
os = "linux"
27+
dir = "/workspace"
1728
}
1829
19-
resource "kubernetes_pod" "dev" {
20-
count = data.coder_workspace.dev.transition == "start" ? 1 : 0
30+
resource "docker_container" "workspace" {
31+
count = data.coder_workspace.me.start_count
32+
image = docker_image.main.name
33+
# Uses lower() to avoid Docker restriction on container names.
34+
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
35+
# Hostname makes the shell more user friendly: coder@my-workspace:~$
36+
hostname = data.coder_workspace.me.name
37+
# Use the docker gateway if the access URL is 127.0.0.1
38+
entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
39+
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
40+
host {
41+
host = "host.docker.internal"
42+
ip = "host-gateway"
43+
}
44+
# Add labels in Docker to keep track of orphan resources.
45+
labels {
46+
label = "coder.owner"
47+
value = data.coder_workspace_owner.me.name
48+
}
49+
labels {
50+
label = "coder.owner_id"
51+
value = data.coder_workspace_owner.me.id
52+
}
53+
labels {
54+
label = "coder.workspace_id"
55+
value = data.coder_workspace.me.id
56+
}
57+
labels {
58+
label = "coder.workspace_name"
59+
value = data.coder_workspace.me.name
60+
}
2161
}
2262
```
2363

@@ -30,13 +70,6 @@ resource "kubernetes_pod" "dev" {
3070
- `access_url` (String) The access URL of the Coder deployment provisioning this workspace.
3171
- `id` (String) UUID of the workspace.
3272
- `name` (String) Name of the workspace.
33-
- `owner` (String, **Deprecated**: Use `coder_workspace_owner.name` instead.) Username of the workspace owner.
34-
- `owner_email` (String, **Deprecated**: Use `coder_workspace_owner.email` instead.) Email address of the workspace owner.
35-
- `owner_groups` (List of String, **Deprecated**: Use `coder_workspace_owner.groups` instead.) List of groups the workspace owner belongs to.
36-
- `owner_id` (String, **Deprecated**: Use `coder_workspace_owner.id` instead.) UUID of the workspace owner.
37-
- `owner_name` (String, **Deprecated**: Use `coder_workspace_owner.full_name` instead.) Name of the workspace owner.
38-
- `owner_oidc_access_token` (String, **Deprecated**: Use `coder_workspace_owner.oidc_access_token` instead.) A valid OpenID Connect access token of the workspace owner. This is only available if the workspace owner authenticated with OpenID Connect. If a valid token cannot be obtained, this value will be an empty string.
39-
- `owner_session_token` (String, **Deprecated**: Use `coder_workspace_owner.session_token` instead.) Session token for authenticating with a Coder deployment. It is regenerated everytime a workspace is started.
4073
- `start_count` (Number) A computed count based on `transition` state. If `start`, count will equal 1.
4174
- `template_id` (String) ID of the workspace's template.
4275
- `template_name` (String) Name of the workspace's template.

docs/data-sources/workspace_owner.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,12 @@ Use this data source to fetch information about the workspace owner.
1515
```terraform
1616
provider "coder" {}
1717
18-
data "coder_workspace" "me" {}
19-
2018
data "coder_workspace_owner" "me" {}
2119
2220
resource "coder_agent" "dev" {
2321
arch = "amd64"
2422
os = "linux"
25-
dir = local.repo_dir
23+
dir = "/workspace"
2624
env = {
2725
OIDC_TOKEN : data.coder_workspace_owner.me.oidc_access_token,
2826
}
@@ -36,7 +34,7 @@ resource "coder_env" "git_author_name" {
3634
}
3735
3836
resource "coder_env" "git_author_email" {
39-
agent_id = var.agent_id
37+
agent_id = coder_agent.dev.id
4038
name = "GIT_AUTHOR_EMAIL"
4139
value = data.coder_workspace_owner.me.email
4240
count = data.coder_workspace_owner.me.email != "" ? 1 : 0
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,46 @@
1-
data "coder_workspace" "dev" {
1+
provider "coder" {}
2+
3+
provider "docker" {}
4+
5+
data "coder_workspace" "me" {}
6+
7+
data "coder_workspace_owner" "me" {}
8+
9+
resource "coder_agent" "dev" {
10+
arch = "amd64"
11+
os = "linux"
12+
dir = "/workspace"
213
}
314

4-
resource "kubernetes_pod" "dev" {
5-
count = data.coder_workspace.dev.transition == "start" ? 1 : 0
15+
resource "docker_container" "workspace" {
16+
count = data.coder_workspace.me.start_count
17+
image = docker_image.main.name
18+
# Uses lower() to avoid Docker restriction on container names.
19+
name = "coder-${data.coder_workspace_owner.me.name}-${lower(data.coder_workspace.me.name)}"
20+
# Hostname makes the shell more user friendly: coder@my-workspace:~$
21+
hostname = data.coder_workspace.me.name
22+
# Use the docker gateway if the access URL is 127.0.0.1
23+
entrypoint = ["sh", "-c", replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")]
24+
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
25+
host {
26+
host = "host.docker.internal"
27+
ip = "host-gateway"
28+
}
29+
# Add labels in Docker to keep track of orphan resources.
30+
labels {
31+
label = "coder.owner"
32+
value = data.coder_workspace_owner.me.name
33+
}
34+
labels {
35+
label = "coder.owner_id"
36+
value = data.coder_workspace_owner.me.id
37+
}
38+
labels {
39+
label = "coder.workspace_id"
40+
value = data.coder_workspace.me.id
41+
}
42+
labels {
43+
label = "coder.workspace_name"
44+
value = data.coder_workspace.me.name
45+
}
646
}

examples/data-sources/coder_workspace_owner/data-source.tf

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
provider "coder" {}
22

3-
data "coder_workspace" "me" {}
4-
53
data "coder_workspace_owner" "me" {}
64

75
resource "coder_agent" "dev" {
86
arch = "amd64"
97
os = "linux"
10-
dir = local.repo_dir
8+
dir = "/workspace"
119
env = {
1210
OIDC_TOKEN : data.coder_workspace_owner.me.oidc_access_token,
1311
}
@@ -21,7 +19,7 @@ resource "coder_env" "git_author_name" {
2119
}
2220

2321
resource "coder_env" "git_author_email" {
24-
agent_id = var.agent_id
22+
agent_id = coder_agent.dev.id
2523
name = "GIT_AUTHOR_EMAIL"
2624
value = data.coder_workspace_owner.me.email
2725
count = data.coder_workspace_owner.me.email != "" ? 1 : 0

integration/integration_test.go

+12-26
Original file line numberDiff line numberDiff line change
@@ -71,25 +71,18 @@ func TestIntegration(t *testing.T) {
7171
name: "test-data-source",
7272
minVersion: "v0.0.0",
7373
expectedOutput: map[string]string{
74-
"provisioner.arch": runtime.GOARCH,
75-
"provisioner.id": `[a-zA-Z0-9-]+`,
76-
"provisioner.os": runtime.GOOS,
77-
"workspace.access_port": `\d+`,
78-
"workspace.access_url": `https?://\D+:\d+`,
79-
"workspace.id": `[a-zA-z0-9-]+`,
80-
"workspace.name": `test-data-source`,
81-
"workspace.owner": `testing`,
82-
"workspace.owner_email": `testing@coder\.com`,
83-
"workspace.owner_groups": `\[\]`,
84-
"workspace.owner_id": `[a-zA-Z0-9]+`,
85-
"workspace.owner_name": `default`,
86-
"workspace.owner_oidc_access_token": `^$`, // TODO: need a test OIDC integration
87-
"workspace.owner_session_token": `[a-zA-Z0-9-]+`,
88-
"workspace.start_count": `1`,
89-
"workspace.template_id": `[a-zA-Z0-9-]+`,
90-
"workspace.template_name": `test-data-source`,
91-
"workspace.template_version": `.+`,
92-
"workspace.transition": `start`,
74+
"provisioner.arch": runtime.GOARCH,
75+
"provisioner.id": `[a-zA-Z0-9-]+`,
76+
"provisioner.os": runtime.GOOS,
77+
"workspace.access_port": `\d+`,
78+
"workspace.access_url": `https?://\D+:\d+`,
79+
"workspace.id": `[a-zA-z0-9-]+`,
80+
"workspace.name": `test-data-source`,
81+
"workspace.start_count": `1`,
82+
"workspace.template_id": `[a-zA-Z0-9-]+`,
83+
"workspace.template_name": `test-data-source`,
84+
"workspace.template_version": `.+`,
85+
"workspace.transition": `start`,
9386
},
9487
},
9588
{
@@ -103,13 +96,6 @@ func TestIntegration(t *testing.T) {
10396
"workspace.access_url": `https?://\D+:\d+`,
10497
"workspace.id": `[a-zA-z0-9-]+`,
10598
"workspace.name": ``,
106-
"workspace.owner": `testing`,
107-
"workspace.owner_email": `testing@coder\.com`,
108-
"workspace.owner_groups": `\[\]`,
109-
"workspace.owner_id": `[a-zA-Z0-9]+`,
110-
"workspace.owner_name": `default`,
111-
"workspace.owner_oidc_access_token": `^$`, // TODO: need a test OIDC integration
112-
"workspace.owner_session_token": `[a-zA-Z0-9-]+`,
11399
"workspace.start_count": `1`,
114100
"workspace.template_id": `[a-zA-Z0-9-]+`,
115101
"workspace.template_name": `workspace-owner`,

integration/test-data-source/main.tf

+1-9
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ terraform {
99
}
1010
}
1111

12-
// TODO: test coder_external_auth and coder_git_auth
12+
// TODO: test coder_external_auth
1313
// data coder_external_auth "me" {}
14-
// data coder_git_auth "me" {}
1514
data "coder_provisioner" "me" {}
1615
data "coder_workspace" "me" {}
1716
data "coder_workspace_owner" "me" {}
@@ -26,13 +25,6 @@ locals {
2625
"workspace.access_url" : data.coder_workspace.me.access_url,
2726
"workspace.id" : data.coder_workspace.me.id,
2827
"workspace.name" : data.coder_workspace.me.name,
29-
"workspace.owner" : data.coder_workspace.me.owner,
30-
"workspace.owner_email" : data.coder_workspace.me.owner_email,
31-
"workspace.owner_groups" : jsonencode(data.coder_workspace.me.owner_groups),
32-
"workspace.owner_id" : data.coder_workspace.me.owner_id,
33-
"workspace.owner_name" : data.coder_workspace.me.owner_name,
34-
"workspace.owner_oidc_access_token" : data.coder_workspace.me.owner_oidc_access_token,
35-
"workspace.owner_session_token" : data.coder_workspace.me.owner_session_token,
3628
"workspace.start_count" : tostring(data.coder_workspace.me.start_count),
3729
"workspace.template_id" : data.coder_workspace.me.template_id,
3830
"workspace.template_name" : data.coder_workspace.me.template_name,

integration/workspace-owner/main.tf

+1-9
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ terraform {
99
}
1010
}
1111

12-
// TODO: test coder_external_auth and coder_git_auth
12+
// TODO: test coder_external_auth
1313
// data coder_external_auth "me" {}
14-
// data coder_git_auth "me" {}
1514
data "coder_provisioner" "me" {}
1615
data "coder_workspace" "me" {}
1716
data "coder_workspace_owner" "me" {}
@@ -26,13 +25,6 @@ locals {
2625
"workspace.access_url" : data.coder_workspace.me.access_url,
2726
"workspace.id" : data.coder_workspace.me.id,
2827
"workspace.name" : data.coder_workspace.me.name,
29-
"workspace.owner" : data.coder_workspace.me.owner,
30-
"workspace.owner_email" : data.coder_workspace.me.owner_email,
31-
"workspace.owner_groups" : jsonencode(data.coder_workspace.me.owner_groups),
32-
"workspace.owner_id" : data.coder_workspace.me.owner_id,
33-
"workspace.owner_name" : data.coder_workspace.me.owner_name,
34-
"workspace.owner_oidc_access_token" : data.coder_workspace.me.owner_oidc_access_token,
35-
"workspace.owner_session_token" : data.coder_workspace.me.owner_session_token,
3628
"workspace.start_count" : tostring(data.coder_workspace.me.start_count),
3729
"workspace.template_id" : data.coder_workspace.me.template_id,
3830
"workspace.template_name" : data.coder_workspace.me.template_name,

provider/workspace.go

-76
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package provider
22

33
import (
44
"context"
5-
"encoding/json"
65
"reflect"
76
"strconv"
87

@@ -28,37 +27,9 @@ func workspaceDataSource() *schema.Resource {
2827
}
2928
_ = rd.Set("start_count", count)
3029

31-
owner := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER", "default")
32-
_ = rd.Set("owner", owner)
33-
34-
ownerEmail := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER_EMAIL", "[email protected]")
35-
_ = rd.Set("owner_email", ownerEmail)
36-
37-
ownerGroupsText := helpers.OptionalEnv("CODER_WORKSPACE_OWNER_GROUPS")
38-
var ownerGroups []string
39-
if ownerGroupsText != "" {
40-
err := json.Unmarshal([]byte(ownerGroupsText), &ownerGroups)
41-
if err != nil {
42-
return diag.Errorf("couldn't parse owner groups %q", ownerGroupsText)
43-
}
44-
}
45-
_ = rd.Set("owner_groups", ownerGroups)
46-
47-
ownerName := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER_NAME", "default")
48-
_ = rd.Set("owner_name", ownerName)
49-
50-
ownerID := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_OWNER_ID", uuid.Nil.String())
51-
_ = rd.Set("owner_id", ownerID)
52-
53-
ownerOIDCAccessToken := helpers.OptionalEnv("CODER_WORKSPACE_OWNER_OIDC_ACCESS_TOKEN")
54-
_ = rd.Set("owner_oidc_access_token", ownerOIDCAccessToken)
55-
5630
name := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_NAME", "default")
5731
rd.Set("name", name)
5832

59-
sessionToken := helpers.OptionalEnv("CODER_WORKSPACE_OWNER_SESSION_TOKEN")
60-
_ = rd.Set("owner_session_token", sessionToken)
61-
6233
id := helpers.OptionalEnvOrDefault("CODER_WORKSPACE_ID", uuid.NewString())
6334
rd.SetId(id)
6435

@@ -122,47 +93,6 @@ func workspaceDataSource() *schema.Resource {
12293
Computed: true,
12394
Description: "Either `start` or `stop`. Use this to start/stop resources with `count`.",
12495
},
125-
"owner": {
126-
Type: schema.TypeString,
127-
Computed: true,
128-
Description: "Username of the workspace owner.",
129-
Deprecated: "Use `coder_workspace_owner.name` instead.",
130-
},
131-
"owner_email": {
132-
Type: schema.TypeString,
133-
Computed: true,
134-
Description: "Email address of the workspace owner.",
135-
Deprecated: "Use `coder_workspace_owner.email` instead.",
136-
},
137-
"owner_id": {
138-
Type: schema.TypeString,
139-
Computed: true,
140-
Description: "UUID of the workspace owner.",
141-
Deprecated: "Use `coder_workspace_owner.id` instead.",
142-
},
143-
"owner_name": {
144-
Type: schema.TypeString,
145-
Computed: true,
146-
Description: "Name of the workspace owner.",
147-
Deprecated: "Use `coder_workspace_owner.full_name` instead.",
148-
},
149-
"owner_oidc_access_token": {
150-
Type: schema.TypeString,
151-
Computed: true,
152-
Description: "A valid OpenID Connect access token of the workspace owner. " +
153-
"This is only available if the workspace owner authenticated with OpenID Connect. " +
154-
"If a valid token cannot be obtained, this value will be an empty string.",
155-
Deprecated: "Use `coder_workspace_owner.oidc_access_token` instead.",
156-
},
157-
"owner_groups": {
158-
Type: schema.TypeList,
159-
Elem: &schema.Schema{
160-
Type: schema.TypeString,
161-
},
162-
Computed: true,
163-
Description: "List of groups the workspace owner belongs to.",
164-
Deprecated: "Use `coder_workspace_owner.groups` instead.",
165-
},
16696
"id": {
16797
Type: schema.TypeString,
16898
Computed: true,
@@ -173,12 +103,6 @@ func workspaceDataSource() *schema.Resource {
173103
Computed: true,
174104
Description: "Name of the workspace.",
175105
},
176-
"owner_session_token": {
177-
Type: schema.TypeString,
178-
Computed: true,
179-
Description: "Session token for authenticating with a Coder deployment. It is regenerated everytime a workspace is started.",
180-
Deprecated: "Use `coder_workspace_owner.session_token` instead.",
181-
},
182106
"template_id": {
183107
Type: schema.TypeString,
184108
Computed: true,

0 commit comments

Comments
 (0)