mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: Show custom resource icons in the UI (#4020)
This commit is contained in:
@@ -37,6 +37,7 @@ type agentAppAttributes struct {
|
||||
type metadataAttributes struct {
|
||||
ResourceID string `mapstructure:"resource_id"`
|
||||
Hide bool `mapstructure:"hide"`
|
||||
Icon string `mapstructure:"icon"`
|
||||
Items []metadataItem `mapstructure:"item"`
|
||||
}
|
||||
|
||||
@@ -237,6 +238,7 @@ func ConvertResources(module *tfjson.StateModule, rawGraph string) ([]*proto.Res
|
||||
// Associate metadata blocks with resources.
|
||||
resourceMetadata := map[string][]*proto.Resource_Metadata{}
|
||||
resourceHidden := map[string]bool{}
|
||||
resourceIcon := map[string]string{}
|
||||
for _, resource := range tfResourceByLabel {
|
||||
if resource.Type != "coder_metadata" {
|
||||
continue
|
||||
@@ -295,6 +297,7 @@ func ConvertResources(module *tfjson.StateModule, rawGraph string) ([]*proto.Res
|
||||
}
|
||||
|
||||
resourceHidden[targetLabel] = attrs.Hide
|
||||
resourceIcon[targetLabel] = attrs.Icon
|
||||
for _, item := range attrs.Items {
|
||||
resourceMetadata[targetLabel] = append(resourceMetadata[targetLabel],
|
||||
&proto.Resource_Metadata{
|
||||
@@ -325,6 +328,7 @@ func ConvertResources(module *tfjson.StateModule, rawGraph string) ([]*proto.Res
|
||||
Type: resource.Type,
|
||||
Agents: agents,
|
||||
Hide: resourceHidden[label],
|
||||
Icon: resourceIcon[label],
|
||||
Metadata: resourceMetadata[label],
|
||||
})
|
||||
}
|
||||
|
||||
@@ -121,6 +121,7 @@ func TestConvertResources(t *testing.T) {
|
||||
Name: "about",
|
||||
Type: "null_resource",
|
||||
Hide: true,
|
||||
Icon: "/icon/server.svg",
|
||||
Metadata: []*proto.Resource_Metadata{{
|
||||
Key: "hello",
|
||||
Value: "world",
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -147,7 +147,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"module.module:null": {
|
||||
"name": "null",
|
||||
|
||||
+4
-4
@@ -16,11 +16,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "ee0b689a-9785-4d72-923f-e2acf88d709b",
|
||||
"id": "f05ddf9e-106a-4669-bba8-5e2289bd891d",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "a295c68a-27af-4dc8-92cd-db154084cf30"
|
||||
"token": "ed4655b9-e917-44af-8706-a1215384a35f"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"outputs": {
|
||||
"script": ""
|
||||
},
|
||||
"random": "410687191584620713"
|
||||
"random": "7640853885488752810"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"inputs": {},
|
||||
@@ -59,7 +59,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "7780508472225873711",
|
||||
"id": "6481148597794195898",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -125,7 +125,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
|
||||
Generated
Vendored
+4
-4
@@ -16,11 +16,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "97baf22d-c3fc-4570-a025-58dd5235366f",
|
||||
"id": "fcd8018c-7e4a-4e92-855b-e02319ab051e",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "ae325f47-8fe4-436c-9787-7295eef26604"
|
||||
"token": "ad906408-0eb0-4844-83f7-0f5070427e1c"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -32,7 +32,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "8957171845319631256",
|
||||
"id": "2672857180605476162",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
@@ -49,7 +49,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "7521770950111838137",
|
||||
"id": "264584188140644760",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
Vendored
+1
-1
@@ -125,7 +125,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
|
||||
Generated
Vendored
+4
-4
@@ -16,11 +16,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "75c43b92-2812-4a6b-9a40-16c124c3c2ff",
|
||||
"id": "e3df7d56-17ce-4d8a-9d4e-30ea41cc8a93",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "bf14e82d-7e8f-49b5-8e2a-fb84da4b6afa"
|
||||
"token": "1717f79d-2c72-440e-a5c6-e4b8c3fef084"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -32,7 +32,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "5082348601033637104",
|
||||
"id": "2957375211969224115",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
@@ -48,7 +48,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "135765900644760615",
|
||||
"id": "6924176854496195292",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -126,7 +126,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
|
||||
+5
-5
@@ -16,11 +16,11 @@
|
||||
"auth": "google-instance-identity",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "9112719f-1e11-41d0-8baf-7f92e94fb510",
|
||||
"id": "9a37096a-7f01-42cd-93d8-9f4572c94489",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "8d556c96-9010-4ae9-8993-69c01de97d24"
|
||||
"token": "7784ea1f-7fe5-463f-af8d-255c32d12992"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -32,8 +32,8 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "9112719f-1e11-41d0-8baf-7f92e94fb510",
|
||||
"id": "35efb5bc-da00-45e8-b38c-df4899417842",
|
||||
"agent_id": "9a37096a-7f01-42cd-93d8-9f4572c94489",
|
||||
"id": "8ed448e2-51d7-4cc7-9e26-a3a77f252b1d",
|
||||
"instance_id": "example"
|
||||
},
|
||||
"sensitive_values": {},
|
||||
@@ -49,7 +49,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "6105197068461821872",
|
||||
"id": "771742387122791362",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -182,7 +182,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
|
||||
+7
-7
@@ -16,11 +16,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "0a714220-de27-4721-a6ab-d5c21c8e99b8",
|
||||
"id": "0c3c20d8-8a1d-4fc9-bc73-ed45ddad9a9d",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "d241aebd-6d75-4c06-a02e-74b41607345c"
|
||||
"token": "48b3f4c4-4bb9-477c-8d32-d1e14188e5f8"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -36,11 +36,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "27567c6b-c52a-4c01-a6ad-368fddb36c9a",
|
||||
"id": "08e8ebc8-4660-47f0-acb5-6ca46747919d",
|
||||
"init_script": "",
|
||||
"os": "darwin",
|
||||
"startup_script": null,
|
||||
"token": "eb5f4e5e-eb57-434c-a444-274b811afa30"
|
||||
"token": "827a1f01-a2d7-4794-ab73-8fd8442010d5"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -56,11 +56,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "b689c633-e666-43e1-ac77-9522f187a098",
|
||||
"id": "50f52bd4-a52b-4c73-bf99-fe956913bca4",
|
||||
"init_script": "",
|
||||
"os": "windows",
|
||||
"startup_script": null,
|
||||
"token": "90a9c42e-df1f-4656-ac4c-c7f4ab06a269"
|
||||
"token": "159d6407-a913-4e05-8ba7-786d47a7e34b"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -72,7 +72,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "7866048965316331550",
|
||||
"id": "2529387636030139440",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
|
||||
+7
-7
@@ -16,11 +16,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "04d74496-49a6-4757-b1b2-47e21840067e",
|
||||
"id": "3d4ee1d5-6413-4dc7-baec-2fa9dbd870ba",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "1417b29e-da8c-45fb-998d-fbec32069e8d"
|
||||
"token": "32e082d7-af02-42f1-a5bd-f6adc34220a1"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -32,10 +32,10 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "04d74496-49a6-4757-b1b2-47e21840067e",
|
||||
"agent_id": "3d4ee1d5-6413-4dc7-baec-2fa9dbd870ba",
|
||||
"command": null,
|
||||
"icon": null,
|
||||
"id": "0a5869ef-00d9-4a37-9f72-e0b2bf0d266b",
|
||||
"id": "90e045f9-19f1-4d8a-8021-be61c44ee54f",
|
||||
"name": null,
|
||||
"relative_path": null,
|
||||
"url": null
|
||||
@@ -53,10 +53,10 @@
|
||||
"provider_name": "registry.terraform.io/coder/coder",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"agent_id": "04d74496-49a6-4757-b1b2-47e21840067e",
|
||||
"agent_id": "3d4ee1d5-6413-4dc7-baec-2fa9dbd870ba",
|
||||
"command": null,
|
||||
"icon": null,
|
||||
"id": "d525e0c1-b494-4911-8b17-8cfb2d248fbf",
|
||||
"id": "873026f8-3050-4b0b-bebf-41e13e5949bb",
|
||||
"name": null,
|
||||
"relative_path": null,
|
||||
"url": null
|
||||
@@ -74,7 +74,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "5711218402680555438",
|
||||
"id": "4447693752005094678",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {},
|
||||
|
||||
@@ -2,7 +2,7 @@ terraform {
|
||||
required_providers {
|
||||
coder = {
|
||||
source = "coder/coder"
|
||||
version = "0.4.10"
|
||||
version = "0.4.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,21 +16,22 @@ resource "null_resource" "about" {}
|
||||
|
||||
resource "coder_metadata" "about_info" {
|
||||
resource_id = null_resource.about.id
|
||||
hide = true
|
||||
hide = true
|
||||
icon = "/icon/server.svg"
|
||||
item {
|
||||
key = "hello"
|
||||
key = "hello"
|
||||
value = "world"
|
||||
}
|
||||
item {
|
||||
key = "null"
|
||||
}
|
||||
item {
|
||||
key = "empty"
|
||||
key = "empty"
|
||||
value = ""
|
||||
}
|
||||
item {
|
||||
key = "secret"
|
||||
value = "squirrel"
|
||||
key = "secret"
|
||||
value = "squirrel"
|
||||
sensitive = true
|
||||
}
|
||||
}
|
||||
|
||||
+6
-1
@@ -30,6 +30,7 @@
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"hide": true,
|
||||
"icon": "/icon/server.svg",
|
||||
"item": [
|
||||
{
|
||||
"key": "hello",
|
||||
@@ -119,6 +120,7 @@
|
||||
"before": null,
|
||||
"after": {
|
||||
"hide": true,
|
||||
"icon": "/icon/server.svg",
|
||||
"item": [
|
||||
{
|
||||
"key": "hello",
|
||||
@@ -198,7 +200,7 @@
|
||||
"coder": {
|
||||
"name": "coder",
|
||||
"full_name": "registry.terraform.io/coder/coder",
|
||||
"version_constraint": "0.4.10"
|
||||
"version_constraint": "0.4.11"
|
||||
},
|
||||
"null": {
|
||||
"name": "null",
|
||||
@@ -233,6 +235,9 @@
|
||||
"hide": {
|
||||
"constant_value": true
|
||||
},
|
||||
"icon": {
|
||||
"constant_value": "/icon/server.svg"
|
||||
},
|
||||
"item": [
|
||||
{
|
||||
"key": {
|
||||
|
||||
+6
-5
@@ -16,11 +16,11 @@
|
||||
"auth": "token",
|
||||
"dir": null,
|
||||
"env": null,
|
||||
"id": "bf761056-4c83-4f36-98e9-fb15c4f3818f",
|
||||
"id": "09aac2a4-9d8e-43ef-83cb-34657db199f4",
|
||||
"init_script": "",
|
||||
"os": "linux",
|
||||
"startup_script": null,
|
||||
"token": "fcc945d1-ad27-47e5-9c31-aeb4ffd2dd67"
|
||||
"token": "a0f6b8af-8edc-447f-b6d2-67a60ecd2a77"
|
||||
},
|
||||
"sensitive_values": {}
|
||||
},
|
||||
@@ -33,7 +33,8 @@
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"hide": true,
|
||||
"id": "6f981e35-73a3-4478-8227-fed4643afd71",
|
||||
"icon": "/icon/server.svg",
|
||||
"id": "a7f9cf03-de78-4d17-bcbb-21dc34c2d86a",
|
||||
"item": [
|
||||
{
|
||||
"is_null": false,
|
||||
@@ -60,7 +61,7 @@
|
||||
"value": "squirrel"
|
||||
}
|
||||
],
|
||||
"resource_id": "3184975245680216434"
|
||||
"resource_id": "6209384655473556868"
|
||||
},
|
||||
"sensitive_values": {
|
||||
"item": [
|
||||
@@ -82,7 +83,7 @@
|
||||
"provider_name": "registry.terraform.io/hashicorp/null",
|
||||
"schema_version": 0,
|
||||
"values": {
|
||||
"id": "3184975245680216434",
|
||||
"id": "6209384655473556868",
|
||||
"triggers": null
|
||||
},
|
||||
"sensitive_values": {}
|
||||
|
||||
Reference in New Issue
Block a user