Skip to content

Commit 214e594

Browse files
feat: Show custom resource icons in the UI (#4020)
1 parent 83c35bb commit 214e594

File tree

60 files changed

+282
-220
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+282
-220
lines changed

coderd/database/databasefake/databasefake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,6 +1801,7 @@ func (q *fakeQuerier) InsertWorkspaceResource(_ context.Context, arg database.In
18011801
Type: arg.Type,
18021802
Name: arg.Name,
18031803
Hide: arg.Hide,
1804+
Icon: arg.Icon,
18041805
}
18051806
q.provisionerJobResources = append(q.provisionerJobResources, resource)
18061807
return resource, nil

coderd/database/dump.sql

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE workspace_resources
2+
DROP COLUMN icon;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE workspace_resources
2+
ADD COLUMN icon VARCHAR(256) NOT NULL DEFAULT ''

coderd/database/models.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

Lines changed: 11 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/workspaceresources.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ SELECT * FROM workspace_resources WHERE created_at > $1;
1919

2020
-- name: InsertWorkspaceResource :one
2121
INSERT INTO
22-
workspace_resources (id, created_at, job_id, transition, type, name, hide)
22+
workspace_resources (id, created_at, job_id, transition, type, name, hide, icon)
2323
VALUES
24-
($1, $2, $3, $4, $5, $6, $7) RETURNING *;
24+
($1, $2, $3, $4, $5, $6, $7, $8) RETURNING *;
2525

2626
-- name: GetWorkspaceResourceMetadataByResourceID :many
2727
SELECT

coderd/provisionerdaemons.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,7 @@ func insertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
753753
Type: protoResource.Type,
754754
Name: protoResource.Name,
755755
Hide: protoResource.Hide,
756+
Icon: protoResource.Icon,
756757
})
757758
if err != nil {
758759
return xerrors.Errorf("insert provisioner job resource %q: %w", protoResource.Name, err)

coderd/workspacebuilds.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,7 @@ func convertWorkspaceResource(resource database.WorkspaceResource, agents []code
707707
Type: resource.Type,
708708
Name: resource.Name,
709709
Hide: resource.Hide,
710+
Icon: resource.Icon,
710711
Agents: agents,
711712
Metadata: convertedMetadata,
712713
}

coderd/workspaceresources_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func TestWorkspaceResource(t *testing.T) {
2727
Resources: []*proto.Resource{{
2828
Name: "beta",
2929
Type: "example",
30+
Icon: "/icon/server.svg",
3031
Agents: []*proto.Agent{{
3132
Id: "something",
3233
Name: "b",
@@ -60,9 +61,11 @@ func TestWorkspaceResource(t *testing.T) {
6061
resource, err := client.WorkspaceResource(ctx, resources[1].ID)
6162
require.NoError(t, err)
6263
require.Len(t, resource.Agents, 2)
63-
// Ensure it's sorted alphabetically!
64+
// Ensure agents are sorted alphabetically!
6465
require.Equal(t, "a", resource.Agents[0].Name)
6566
require.Equal(t, "b", resource.Agents[1].Name)
67+
// Ensure Icon is present
68+
require.Equal(t, "/icon/server.svg", resources[1].Icon)
6669
})
6770

6871
t.Run("Apps", func(t *testing.T) {

codersdk/workspaceresources.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type WorkspaceResource struct {
2626
Type string `json:"type"`
2727
Name string `json:"name"`
2828
Hide bool `json:"hide"`
29+
Icon string `json:"icon"`
2930
Agents []WorkspaceAgent `json:"agents,omitempty"`
3031
Metadata []WorkspaceResourceMetadata `json:"metadata,omitempty"`
3132
}

examples/templates/aws-linux/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
}
88
}

examples/templates/aws-windows/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
}
88
}

examples/templates/azure-linux/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
azurerm = {
88
source = "hashicorp/azurerm"

examples/templates/do-linux/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
digitalocean = {
88
source = "digitalocean/digitalocean"

examples/templates/docker-code-server/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
docker = {
88
source = "kreuzwerker/docker"

examples/templates/docker-image-builds/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ terraform {
33
required_providers {
44
coder = {
55
source = "coder/coder"
6-
version = "0.4.9"
6+
version = "0.4.11"
77
}
88
docker = {
99
source = "kreuzwerker/docker"

examples/templates/docker-with-dotfiles/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ terraform {
99
required_providers {
1010
coder = {
1111
source = "coder/coder"
12-
version = "0.4.9"
12+
version = "0.4.11"
1313
}
1414
docker = {
1515
source = "kreuzwerker/docker"

examples/templates/docker/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
docker = {
88
source = "kreuzwerker/docker"

examples/templates/ecs-container/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ terraform {
66
}
77
coder = {
88
source = "coder/coder"
9-
version = "~> 0.4.9"
9+
version = "0.4.11"
1010
}
1111
}
1212
}

examples/templates/gcp-linux/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
google = {
88
source = "hashicorp/google"

examples/templates/gcp-vm-container/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
google = {
88
source = "hashicorp/google"

examples/templates/gcp-windows/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
google = {
88
source = "hashicorp/google"

examples/templates/kubernetes/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.9"
5+
version = "0.4.11"
66
}
77
kubernetes = {
88
source = "hashicorp/kubernetes"

provisioner/terraform/resources.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type agentAppAttributes struct {
3737
type metadataAttributes struct {
3838
ResourceID string `mapstructure:"resource_id"`
3939
Hide bool `mapstructure:"hide"`
40+
Icon string `mapstructure:"icon"`
4041
Items []metadataItem `mapstructure:"item"`
4142
}
4243

@@ -237,6 +238,7 @@ func ConvertResources(module *tfjson.StateModule, rawGraph string) ([]*proto.Res
237238
// Associate metadata blocks with resources.
238239
resourceMetadata := map[string][]*proto.Resource_Metadata{}
239240
resourceHidden := map[string]bool{}
241+
resourceIcon := map[string]string{}
240242
for _, resource := range tfResourceByLabel {
241243
if resource.Type != "coder_metadata" {
242244
continue
@@ -295,6 +297,7 @@ func ConvertResources(module *tfjson.StateModule, rawGraph string) ([]*proto.Res
295297
}
296298

297299
resourceHidden[targetLabel] = attrs.Hide
300+
resourceIcon[targetLabel] = attrs.Icon
298301
for _, item := range attrs.Items {
299302
resourceMetadata[targetLabel] = append(resourceMetadata[targetLabel],
300303
&proto.Resource_Metadata{
@@ -325,6 +328,7 @@ func ConvertResources(module *tfjson.StateModule, rawGraph string) ([]*proto.Res
325328
Type: resource.Type,
326329
Agents: agents,
327330
Hide: resourceHidden[label],
331+
Icon: resourceIcon[label],
328332
Metadata: resourceMetadata[label],
329333
})
330334
}

provisioner/terraform/resources_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ func TestConvertResources(t *testing.T) {
121121
Name: "about",
122122
Type: "null_resource",
123123
Hide: true,
124+
Icon: "/icon/server.svg",
124125
Metadata: []*proto.Resource_Metadata{{
125126
Key: "hello",
126127
Value: "world",

provisioner/terraform/testdata/calling-module/calling-module.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.10"
5+
version = "0.4.11"
66
}
77
}
88
}

provisioner/terraform/testdata/calling-module/calling-module.tfplan.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/calling-module/calling-module.tfstate.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisioner/terraform/testdata/chaining-resources/chaining-resources.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.10"
5+
version = "0.4.11"
66
}
77
}
88
}

0 commit comments

Comments
 (0)