Skip to content

Commit bde9fd5

Browse files
authored
chore: add organization name to workspaces (#13755)
* chore: add organization name to workspaces
1 parent 1286749 commit bde9fd5

13 files changed

+63
-30
lines changed

cli/list.go

+32-27
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strconv"
77
"time"
88

9+
"github.com/google/uuid"
910
"golang.org/x/xerrors"
1011

1112
"github.com/coder/coder/v2/cli/cliui"
@@ -22,19 +23,21 @@ type workspaceListRow struct {
2223
codersdk.Workspace `table:"-"`
2324

2425
// For table format:
25-
Favorite bool `json:"-" table:"favorite"`
26-
WorkspaceName string `json:"-" table:"workspace,default_sort"`
27-
Template string `json:"-" table:"template"`
28-
Status string `json:"-" table:"status"`
29-
Healthy string `json:"-" table:"healthy"`
30-
LastBuilt string `json:"-" table:"last built"`
31-
CurrentVersion string `json:"-" table:"current version"`
32-
Outdated bool `json:"-" table:"outdated"`
33-
StartsAt string `json:"-" table:"starts at"`
34-
StartsNext string `json:"-" table:"starts next"`
35-
StopsAfter string `json:"-" table:"stops after"`
36-
StopsNext string `json:"-" table:"stops next"`
37-
DailyCost string `json:"-" table:"daily cost"`
26+
Favorite bool `json:"-" table:"favorite"`
27+
WorkspaceName string `json:"-" table:"workspace,default_sort"`
28+
OrganizationID uuid.UUID `json:"-" table:"organization id"`
29+
OrganizationName string `json:"-" table:"organization name"`
30+
Template string `json:"-" table:"template"`
31+
Status string `json:"-" table:"status"`
32+
Healthy string `json:"-" table:"healthy"`
33+
LastBuilt string `json:"-" table:"last built"`
34+
CurrentVersion string `json:"-" table:"current version"`
35+
Outdated bool `json:"-" table:"outdated"`
36+
StartsAt string `json:"-" table:"starts at"`
37+
StartsNext string `json:"-" table:"starts next"`
38+
StopsAfter string `json:"-" table:"stops after"`
39+
StopsNext string `json:"-" table:"stops next"`
40+
DailyCost string `json:"-" table:"daily cost"`
3841
}
3942

4043
func workspaceListRowFromWorkspace(now time.Time, workspace codersdk.Workspace) workspaceListRow {
@@ -53,20 +56,22 @@ func workspaceListRowFromWorkspace(now time.Time, workspace codersdk.Workspace)
5356
}
5457
workspaceName := favIco + " " + workspace.OwnerName + "/" + workspace.Name
5558
return workspaceListRow{
56-
Favorite: workspace.Favorite,
57-
Workspace: workspace,
58-
WorkspaceName: workspaceName,
59-
Template: workspace.TemplateName,
60-
Status: status,
61-
Healthy: healthy,
62-
LastBuilt: durationDisplay(lastBuilt),
63-
CurrentVersion: workspace.LatestBuild.TemplateVersionName,
64-
Outdated: workspace.Outdated,
65-
StartsAt: schedRow.StartsAt,
66-
StartsNext: schedRow.StartsNext,
67-
StopsAfter: schedRow.StopsAfter,
68-
StopsNext: schedRow.StopsNext,
69-
DailyCost: strconv.Itoa(int(workspace.LatestBuild.DailyCost)),
59+
Favorite: workspace.Favorite,
60+
Workspace: workspace,
61+
WorkspaceName: workspaceName,
62+
OrganizationID: workspace.OrganizationID,
63+
OrganizationName: workspace.OrganizationName,
64+
Template: workspace.TemplateName,
65+
Status: status,
66+
Healthy: healthy,
67+
LastBuilt: durationDisplay(lastBuilt),
68+
CurrentVersion: workspace.LatestBuild.TemplateVersionName,
69+
Outdated: workspace.Outdated,
70+
StartsAt: schedRow.StartsAt,
71+
StartsNext: schedRow.StartsNext,
72+
StopsAfter: schedRow.StopsAfter,
73+
StopsNext: schedRow.StopsNext,
74+
DailyCost: strconv.Itoa(int(workspace.LatestBuild.DailyCost)),
7075
}
7176
}
7277

cli/testdata/coder_list_--help.golden

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ OPTIONS:
1313

1414
-c, --column string-array (default: workspace,template,status,healthy,last built,current version,outdated,starts at,stops after)
1515
Columns to display in table output. Available columns: favorite,
16-
workspace, template, status, healthy, last built, current version,
17-
outdated, starts at, starts next, stops after, stops next, daily cost.
16+
workspace, organization id, organization name, template, status,
17+
healthy, last built, current version, outdated, starts at, starts
18+
next, stops after, stops next, daily cost.
1819

1920
-o, --output string (default: table)
2021
Output format. Available formats: table, json.

cli/testdata/coder_list_--output_json.golden

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"owner_name": "testuser",
88
"owner_avatar_url": "",
99
"organization_id": "[first org ID]",
10+
"organization_name": "first-organization",
1011
"template_id": "[template ID]",
1112
"template_name": "test-template",
1213
"template_display_name": "",

coderd/apidoc/docs.go

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

coderd/apidoc/swagger.json

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

coderd/workspaces.go

+1
Original file line numberDiff line numberDiff line change
@@ -1774,6 +1774,7 @@ func convertWorkspace(
17741774
OwnerName: username,
17751775
OwnerAvatarURL: avatarURL,
17761776
OrganizationID: workspace.OrganizationID,
1777+
OrganizationName: template.OrganizationName,
17771778
TemplateID: workspace.TemplateID,
17781779
LatestBuild: workspaceBuild,
17791780
TemplateName: template.Name,

coderd/workspaces_test.go

+8
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ func TestWorkspace(t *testing.T) {
6464
require.NoError(t, err)
6565
require.Equal(t, user.UserID, ws.LatestBuild.InitiatorID)
6666
require.Equal(t, codersdk.BuildReasonInitiator, ws.LatestBuild.Reason)
67+
68+
org, err := client.Organization(ctx, ws.OrganizationID)
69+
require.NoError(t, err)
70+
require.Equal(t, ws.OrganizationName, org.Name)
6771
})
6872

6973
t.Run("Deleted", func(t *testing.T) {
@@ -1496,13 +1500,17 @@ func TestWorkspaceFilterManual(t *testing.T) {
14961500
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
14971501
defer cancel()
14981502

1503+
org, err := client.Organization(ctx, user.OrganizationID)
1504+
require.NoError(t, err)
1505+
14991506
// single workspace
15001507
res, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
15011508
FilterQuery: fmt.Sprintf("template:%s %s/%s", template.Name, workspace.OwnerName, workspace.Name),
15021509
})
15031510
require.NoError(t, err)
15041511
require.Len(t, res.Workspaces, 1)
15051512
require.Equal(t, workspace.ID, res.Workspaces[0].ID)
1513+
require.Equal(t, workspace.OrganizationName, org.Name)
15061514
})
15071515
t.Run("FilterQueryHasAgentConnecting", func(t *testing.T) {
15081516
t.Parallel()

codersdk/workspaces.go

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type Workspace struct {
3333
OwnerName string `json:"owner_name"`
3434
OwnerAvatarURL string `json:"owner_avatar_url"`
3535
OrganizationID uuid.UUID `json:"organization_id" format:"uuid"`
36+
OrganizationName string `json:"organization_name"`
3637
TemplateID uuid.UUID `json:"template_id" format:"uuid"`
3738
TemplateName string `json:"template_name"`
3839
TemplateDisplayName string `json:"template_display_name"`

docs/api/schemas.md

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

docs/api/workspaces.md

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

docs/cli/list.md

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

site/src/api/typesGenerated.ts

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

site/src/testHelpers/entities.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,7 @@ export const MockWorkspace: TypesGen.Workspace = {
10571057
outdated: false,
10581058
owner_id: MockUser.id,
10591059
organization_id: MockOrganization.id,
1060+
organization_name: "default",
10601061
owner_name: MockUser.username,
10611062
owner_avatar_url: "https://avatars.githubusercontent.com/u/7122116?v=4",
10621063
autostart_schedule: MockWorkspaceAutostartEnabled.schedule,

0 commit comments

Comments
 (0)