From cffe140aaf504b01214af972c4d95c8731357881 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Mon, 10 Feb 2025 17:59:34 +0000 Subject: [PATCH 1/8] chore: return template data for provisioner daemons --- coderd/apidoc/docs.go | 9 +++ coderd/apidoc/swagger.json | 9 +++ coderd/database/queries.sql.go | 29 ++++++--- .../database/queries/provisionerdaemons.sql | 9 ++- coderd/provisionerdaemons.go | 3 + codersdk/provisionerdaemons.go | 11 ++-- docs/reference/api/debug.md | 3 + docs/reference/api/enterprise.md | 62 ++++++++++--------- docs/reference/api/provisioning.md | 46 ++++++++------ docs/reference/api/schemas.md | 52 +++++++++++----- docs/reference/cli/provisioner_list.md | 8 +-- site/src/api/typesGenerated.ts | 3 + 12 files changed, 162 insertions(+), 82 deletions(-) diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index 5e4fcb001cc36..7af3a212410f2 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -13080,6 +13080,15 @@ const docTemplate = `{ "type": "string" } }, + "template_display_name": { + "type": "string" + }, + "template_icon": { + "type": "string" + }, + "template_name": { + "type": "string" + }, "version": { "type": "string" } diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 29658d0a5e7b9..00925dd3d344f 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -11809,6 +11809,15 @@ "type": "string" } }, + "template_display_name": { + "type": "string" + }, + "template_icon": { + "type": "string" + }, + "template_name": { + "type": "string" + }, "version": { "type": "string" } diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index 7653094a22e2b..b6a14a665c09e 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -5576,7 +5576,10 @@ SELECT current_job.id AS current_job_id, current_job.job_status AS current_job_status, previous_job.id AS previous_job_id, - previous_job.job_status AS previous_job_status + previous_job.job_status AS previous_job_status, + tmpl.name AS template_name, + tmpl.display_name AS template_display_name, + tmpl.icon AS template_icon FROM provisioner_daemons pd JOIN @@ -5601,6 +5604,10 @@ LEFT JOIN LIMIT 1 ) ) +JOIN + template_versions version ON version.id = pd.version +LEFT JOIN + templates tmpl ON tmpl.id = version.template_id WHERE pd.organization_id = $2::uuid AND (COALESCE(array_length($3::uuid[], 1), 0) = 0 OR pd.id = ANY($3::uuid[])) @@ -5617,13 +5624,16 @@ type GetProvisionerDaemonsWithStatusByOrganizationParams struct { } type GetProvisionerDaemonsWithStatusByOrganizationRow struct { - ProvisionerDaemon ProvisionerDaemon `db:"provisioner_daemon" json:"provisioner_daemon"` - Status ProvisionerDaemonStatus `db:"status" json:"status"` - KeyName string `db:"key_name" json:"key_name"` - CurrentJobID uuid.NullUUID `db:"current_job_id" json:"current_job_id"` - CurrentJobStatus NullProvisionerJobStatus `db:"current_job_status" json:"current_job_status"` - PreviousJobID uuid.NullUUID `db:"previous_job_id" json:"previous_job_id"` - PreviousJobStatus NullProvisionerJobStatus `db:"previous_job_status" json:"previous_job_status"` + ProvisionerDaemon ProvisionerDaemon `db:"provisioner_daemon" json:"provisioner_daemon"` + Status ProvisionerDaemonStatus `db:"status" json:"status"` + KeyName string `db:"key_name" json:"key_name"` + CurrentJobID uuid.NullUUID `db:"current_job_id" json:"current_job_id"` + CurrentJobStatus NullProvisionerJobStatus `db:"current_job_status" json:"current_job_status"` + PreviousJobID uuid.NullUUID `db:"previous_job_id" json:"previous_job_id"` + PreviousJobStatus NullProvisionerJobStatus `db:"previous_job_status" json:"previous_job_status"` + TemplateName sql.NullString `db:"template_name" json:"template_name"` + TemplateDisplayName sql.NullString `db:"template_display_name" json:"template_display_name"` + TemplateIcon sql.NullString `db:"template_icon" json:"template_icon"` } func (q *sqlQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context, arg GetProvisionerDaemonsWithStatusByOrganizationParams) ([]GetProvisionerDaemonsWithStatusByOrganizationRow, error) { @@ -5658,6 +5668,9 @@ func (q *sqlQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.C &i.CurrentJobStatus, &i.PreviousJobID, &i.PreviousJobStatus, + &i.TemplateName, + &i.TemplateDisplayName, + &i.TemplateIcon, ); err != nil { return nil, err } diff --git a/coderd/database/queries/provisionerdaemons.sql b/coderd/database/queries/provisionerdaemons.sql index abf490c9ab47f..1034eb4961739 100644 --- a/coderd/database/queries/provisionerdaemons.sql +++ b/coderd/database/queries/provisionerdaemons.sql @@ -44,7 +44,10 @@ SELECT current_job.id AS current_job_id, current_job.job_status AS current_job_status, previous_job.id AS previous_job_id, - previous_job.job_status AS previous_job_status + previous_job.job_status AS previous_job_status, + tmpl.name AS template_name, + tmpl.display_name AS template_display_name, + tmpl.icon AS template_icon FROM provisioner_daemons pd JOIN @@ -69,6 +72,10 @@ LEFT JOIN LIMIT 1 ) ) +JOIN + template_versions version ON version.id = pd.version +LEFT JOIN + templates tmpl ON tmpl.id = version.template_id WHERE pd.organization_id = @organization_id::uuid AND (COALESCE(array_length(@ids::uuid[], 1), 0) = 0 OR pd.id = ANY(@ids::uuid[])) diff --git a/coderd/provisionerdaemons.go b/coderd/provisionerdaemons.go index 30add82e3e287..dad9393198201 100644 --- a/coderd/provisionerdaemons.go +++ b/coderd/provisionerdaemons.go @@ -75,6 +75,9 @@ func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) { pd.Status = ptr.Ref(codersdk.ProvisionerDaemonStatus(dbDaemon.Status)) pd.CurrentJob = currentJob pd.PreviousJob = previousJob + pd.TemplateName = &dbDaemon.TemplateName.String + pd.TemplateDisplayName = &dbDaemon.TemplateDisplayName.String + pd.TemplateIcon = &dbDaemon.TemplateIcon.String return pd })) diff --git a/codersdk/provisionerdaemons.go b/codersdk/provisionerdaemons.go index 9c8f131cca8a6..25f3c687c5317 100644 --- a/codersdk/provisionerdaemons.go +++ b/codersdk/provisionerdaemons.go @@ -62,10 +62,13 @@ type ProvisionerDaemon struct { Tags map[string]string `json:"tags" table:"tags"` // Optional fields. - KeyName *string `json:"key_name" table:"key name"` - Status *ProvisionerDaemonStatus `json:"status" enums:"offline,idle,busy" table:"status"` - CurrentJob *ProvisionerDaemonJob `json:"current_job" table:"current job,recursive"` - PreviousJob *ProvisionerDaemonJob `json:"previous_job" table:"previous job,recursive"` + KeyName *string `json:"key_name" table:"key name"` + Status *ProvisionerDaemonStatus `json:"status" enums:"offline,idle,busy" table:"status"` + CurrentJob *ProvisionerDaemonJob `json:"current_job" table:"current job,recursive"` + PreviousJob *ProvisionerDaemonJob `json:"previous_job" table:"previous job,recursive"` + TemplateName *string `json:"template_name" table:"template name"` + TemplateIcon *string `json:"template_icon" table:"template icon"` + TemplateDisplayName *string `json:"template_display_name" table:"template display name"` } type ProvisionerDaemonJob struct { diff --git a/docs/reference/api/debug.md b/docs/reference/api/debug.md index 63fd1aeda8f98..6dc844ba8a012 100644 --- a/docs/reference/api/debug.md +++ b/docs/reference/api/debug.md @@ -329,6 +329,9 @@ curl -X GET http://coder-server:8080/api/v2/debug/health \ "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" }, "warnings": [ diff --git a/docs/reference/api/enterprise.md b/docs/reference/api/enterprise.md index a1a61f4a5b54a..9217186684b86 100644 --- a/docs/reference/api/enterprise.md +++ b/docs/reference/api/enterprise.md @@ -1649,6 +1649,9 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" } ], @@ -1676,34 +1679,37 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi Status Code **200** -| Name | Type | Required | Restrictions | Description | -|----------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| -| `[array item]` | array | false | | | -| `» daemons` | array | false | | | -| `»» api_version` | string | false | | | -| `»» created_at` | string(date-time) | false | | | -| `»» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `»»» id` | string(uuid) | false | | | -| `»»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | -| `»» id` | string(uuid) | false | | | -| `»» key_id` | string(uuid) | false | | | -| `»» key_name` | string | false | | Optional fields. | -| `»» last_seen_at` | string(date-time) | false | | | -| `»» name` | string | false | | | -| `»» organization_id` | string(uuid) | false | | | -| `»» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `»» provisioners` | array | false | | | -| `»» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | -| `»» tags` | object | false | | | -| `»»» [any property]` | string | false | | | -| `»» version` | string | false | | | -| `» key` | [codersdk.ProvisionerKey](schemas.md#codersdkprovisionerkey) | false | | | -| `»» created_at` | string(date-time) | false | | | -| `»» id` | string(uuid) | false | | | -| `»» name` | string | false | | | -| `»» organization` | string(uuid) | false | | | -| `»» tags` | [codersdk.ProvisionerKeyTags](schemas.md#codersdkprovisionerkeytags) | false | | | -| `»»» [any property]` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|----------------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| +| `[array item]` | array | false | | | +| `» daemons` | array | false | | | +| `»» api_version` | string | false | | | +| `»» created_at` | string(date-time) | false | | | +| `»» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `»»» id` | string(uuid) | false | | | +| `»»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | +| `»» id` | string(uuid) | false | | | +| `»» key_id` | string(uuid) | false | | | +| `»» key_name` | string | false | | Optional fields. | +| `»» last_seen_at` | string(date-time) | false | | | +| `»» name` | string | false | | | +| `»» organization_id` | string(uuid) | false | | | +| `»» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `»» provisioners` | array | false | | | +| `»» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | +| `»» tags` | object | false | | | +| `»»» [any property]` | string | false | | | +| `»» template_display_name` | string | false | | | +| `»» template_icon` | string | false | | | +| `»» template_name` | string | false | | | +| `»» version` | string | false | | | +| `» key` | [codersdk.ProvisionerKey](schemas.md#codersdkprovisionerkey) | false | | | +| `»» created_at` | string(date-time) | false | | | +| `»» id` | string(uuid) | false | | | +| `»» name` | string | false | | | +| `»» organization` | string(uuid) | false | | | +| `»» tags` | [codersdk.ProvisionerKeyTags](schemas.md#codersdkprovisionerkeytags) | false | | | +| `»»» [any property]` | string | false | | | #### Enumerated Values diff --git a/docs/reference/api/provisioning.md b/docs/reference/api/provisioning.md index bf3c36269fafa..bf9d0c5eaeca3 100644 --- a/docs/reference/api/provisioning.md +++ b/docs/reference/api/provisioning.md @@ -51,6 +51,9 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" } ] @@ -66,26 +69,29 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi Status Code **200** -| Name | Type | Required | Restrictions | Description | -|---------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| -| `[array item]` | array | false | | | -| `» api_version` | string | false | | | -| `» created_at` | string(date-time) | false | | | -| `» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `»» id` | string(uuid) | false | | | -| `»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | -| `» id` | string(uuid) | false | | | -| `» key_id` | string(uuid) | false | | | -| `» key_name` | string | false | | Optional fields. | -| `» last_seen_at` | string(date-time) | false | | | -| `» name` | string | false | | | -| `» organization_id` | string(uuid) | false | | | -| `» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `» provisioners` | array | false | | | -| `» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | -| `» tags` | object | false | | | -| `»» [any property]` | string | false | | | -| `» version` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|---------------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| +| `[array item]` | array | false | | | +| `» api_version` | string | false | | | +| `» created_at` | string(date-time) | false | | | +| `» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `»» id` | string(uuid) | false | | | +| `»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | +| `» id` | string(uuid) | false | | | +| `» key_id` | string(uuid) | false | | | +| `» key_name` | string | false | | Optional fields. | +| `» last_seen_at` | string(date-time) | false | | | +| `» name` | string | false | | | +| `» organization_id` | string(uuid) | false | | | +| `» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `» provisioners` | array | false | | | +| `» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | +| `» tags` | object | false | | | +| `»» [any property]` | string | false | | | +| `» template_display_name` | string | false | | | +| `» template_icon` | string | false | | | +| `» template_name` | string | false | | | +| `» version` | string | false | | | #### Enumerated Values diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md index ebccd362c9c96..6c7354bd82658 100644 --- a/docs/reference/api/schemas.md +++ b/docs/reference/api/schemas.md @@ -4508,29 +4508,35 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" } ``` ### Properties -| Name | Type | Required | Restrictions | Description | -|--------------------|----------------------------------------------------------------------|----------|--------------|------------------| -| `api_version` | string | false | | | -| `created_at` | string | false | | | -| `current_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | -| `id` | string | false | | | -| `key_id` | string | false | | | -| `key_name` | string | false | | Optional fields. | -| `last_seen_at` | string | false | | | -| `name` | string | false | | | -| `organization_id` | string | false | | | -| `previous_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | -| `provisioners` | array of string | false | | | -| `status` | [codersdk.ProvisionerDaemonStatus](#codersdkprovisionerdaemonstatus) | false | | | -| `tags` | object | false | | | -| » `[any property]` | string | false | | | -| `version` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|-------------------------|----------------------------------------------------------------------|----------|--------------|------------------| +| `api_version` | string | false | | | +| `created_at` | string | false | | | +| `current_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | +| `id` | string | false | | | +| `key_id` | string | false | | | +| `key_name` | string | false | | Optional fields. | +| `last_seen_at` | string | false | | | +| `name` | string | false | | | +| `organization_id` | string | false | | | +| `previous_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | +| `provisioners` | array of string | false | | | +| `status` | [codersdk.ProvisionerDaemonStatus](#codersdkprovisionerdaemonstatus) | false | | | +| `tags` | object | false | | | +| » `[any property]` | string | false | | | +| `template_display_name` | string | false | | | +| `template_icon` | string | false | | | +| `template_name` | string | false | | | +| `version` | string | false | | | #### Enumerated Values @@ -4830,6 +4836,9 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" } ], @@ -9848,6 +9857,9 @@ Zero means unspecified. There might be a limit, but the client need not try to r "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" }, "warnings": [ @@ -9984,6 +9996,9 @@ Zero means unspecified. There might be a limit, but the client need not try to r "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" }, "warnings": [ @@ -10051,6 +10066,9 @@ Zero means unspecified. There might be a limit, but the client need not try to r "property1": "string", "property2": "string" }, + "template_display_name": "string", + "template_icon": "string", + "template_name": "string", "version": "string" }, "warnings": [ diff --git a/docs/reference/cli/provisioner_list.md b/docs/reference/cli/provisioner_list.md index 11abd7dcc3d75..6bbd9c4373fd1 100644 --- a/docs/reference/cli/provisioner_list.md +++ b/docs/reference/cli/provisioner_list.md @@ -26,10 +26,10 @@ Select which organization (uuid or name) to use. ### -c, --column -| | | -|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Type | [id\|organization id\|created at\|last seen at\|name\|version\|api version\|tags\|key name\|status\|current job id\|current job status\|previous job id\|previous job status\|organization] | -| Default | name,organization,status,key name,created at,last seen at,version,tags | +| | | +|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Type | [id\|organization id\|created at\|last seen at\|name\|version\|api version\|tags\|key name\|status\|current job id\|current job status\|previous job id\|previous job status\|template name\|template icon\|template display name\|organization] | +| Default | name,organization,status,key name,created at,last seen at,version,tags | Columns to display in table output. diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 5ad807af38b6e..1c60d6ace0c43 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1585,6 +1585,9 @@ export interface ProvisionerDaemon { readonly status: ProvisionerDaemonStatus | null; readonly current_job: ProvisionerDaemonJob | null; readonly previous_job: ProvisionerDaemonJob | null; + readonly template_name: string | null; + readonly template_icon: string | null; + readonly template_display_name: string | null; } // From codersdk/provisionerdaemons.go From 89b571205339fc520a01401b7b6c53ad18ea50df Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Mon, 10 Feb 2025 18:05:36 +0000 Subject: [PATCH 2/8] Convert uuid to text --- coderd/database/queries.sql.go | 2 +- coderd/database/queries/provisionerdaemons.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index b6a14a665c09e..d1026cecfb558 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -5605,7 +5605,7 @@ LEFT JOIN ) ) JOIN - template_versions version ON version.id = pd.version + template_versions version ON version.id::text = pd.version LEFT JOIN templates tmpl ON tmpl.id = version.template_id WHERE diff --git a/coderd/database/queries/provisionerdaemons.sql b/coderd/database/queries/provisionerdaemons.sql index 1034eb4961739..23aff1717a7fc 100644 --- a/coderd/database/queries/provisionerdaemons.sql +++ b/coderd/database/queries/provisionerdaemons.sql @@ -73,7 +73,7 @@ LEFT JOIN ) ) JOIN - template_versions version ON version.id = pd.version + template_versions version ON version.id::text = pd.version LEFT JOIN templates tmpl ON tmpl.id = version.template_id WHERE From b15d1b28c49e750278c9f59113d6aae4bc993617 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Mon, 10 Feb 2025 18:14:01 +0000 Subject: [PATCH 3/8] Fix entities --- site/src/testHelpers/entities.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index a607df6bb87c9..faf542a78d26c 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -584,6 +584,9 @@ export const MockProvisioner: TypesGen.ProvisionerDaemon = { status: "idle", current_job: null, previous_job: null, + template_display_name: "Test Template", + template_icon: "/icon/code.svg", + template_name: "test-template", }; export const MockUserAuthProvisioner: TypesGen.ProvisionerDaemon = { @@ -3773,6 +3776,9 @@ export const MockHealth: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", + template_display_name: "Test Template", + template_icon: "/icon/code.svg", + template_name: "test-template", }, warnings: [], }, @@ -3799,6 +3805,9 @@ export const MockHealth: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", + template_display_name: "Test Template", + template_icon: "/icon/code.svg", + template_name: "test-template", }, warnings: [], }, @@ -3825,6 +3834,9 @@ export const MockHealth: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", + template_display_name: "Test Template", + template_icon: "/icon/code.svg", + template_name: "test-template", }, warnings: [ { @@ -3982,6 +3994,9 @@ export const DeploymentHealthUnhealthy: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", + template_display_name: "Test Template", + template_icon: "/icon/code.svg", + template_name: "test-template", }, warnings: [ { From 415bd205b018728ffd288a2ad93fcea9ec6e95be Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 11 Feb 2025 13:08:59 +0000 Subject: [PATCH 4/8] Apply PR review suggestions --- coderd/apidoc/docs.go | 18 +-- coderd/apidoc/swagger.json | 18 +-- coderd/database/queries.sql.go | 34 ++--- .../database/queries/provisionerdaemons.sql | 8 +- coderd/provisionerdaemons.go | 10 +- codersdk/provisionerdaemons.go | 18 +-- docs/reference/api/debug.md | 13 +- docs/reference/api/enterprise.md | 75 +++++------ docs/reference/api/provisioning.md | 59 ++++----- docs/reference/api/schemas.md | 118 ++++++++++-------- docs/reference/cli/provisioner_list.md | 8 +- site/src/api/typesGenerated.ts | 6 +- 12 files changed, 206 insertions(+), 179 deletions(-) diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index 7af3a212410f2..b83dc98c2a2ce 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -13080,15 +13080,6 @@ const docTemplate = `{ "type": "string" } }, - "template_display_name": { - "type": "string" - }, - "template_icon": { - "type": "string" - }, - "template_name": { - "type": "string" - }, "version": { "type": "string" } @@ -13115,6 +13106,15 @@ const docTemplate = `{ "$ref": "#/definitions/codersdk.ProvisionerJobStatus" } ] + }, + "template_display_name": { + "type": "string" + }, + "template_icon": { + "type": "string" + }, + "template_name": { + "type": "string" } } }, diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 00925dd3d344f..8c9bf31ce9e8e 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -11809,15 +11809,6 @@ "type": "string" } }, - "template_display_name": { - "type": "string" - }, - "template_icon": { - "type": "string" - }, - "template_name": { - "type": "string" - }, "version": { "type": "string" } @@ -11844,6 +11835,15 @@ "$ref": "#/definitions/codersdk.ProvisionerJobStatus" } ] + }, + "template_display_name": { + "type": "string" + }, + "template_icon": { + "type": "string" + }, + "template_name": { + "type": "string" } } }, diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index abb9059705d07..2c0adf3b186e0 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -5756,9 +5756,9 @@ SELECT current_job.job_status AS current_job_status, previous_job.id AS previous_job_id, previous_job.job_status AS previous_job_status, - tmpl.name AS template_name, - tmpl.display_name AS template_display_name, - tmpl.icon AS template_icon + tmpl.name AS current_job_template_name, + tmpl.display_name AS current_job_template_display_name, + tmpl.icon AS current_job_template_icon FROM provisioner_daemons pd JOIN @@ -5784,7 +5784,7 @@ LEFT JOIN ) ) JOIN - template_versions version ON version.id::text = pd.version + template_versions version ON version.id = (current_job.input->>'template_version_id')::uuid LEFT JOIN templates tmpl ON tmpl.id = version.template_id WHERE @@ -5803,16 +5803,16 @@ type GetProvisionerDaemonsWithStatusByOrganizationParams struct { } type GetProvisionerDaemonsWithStatusByOrganizationRow struct { - ProvisionerDaemon ProvisionerDaemon `db:"provisioner_daemon" json:"provisioner_daemon"` - Status ProvisionerDaemonStatus `db:"status" json:"status"` - KeyName string `db:"key_name" json:"key_name"` - CurrentJobID uuid.NullUUID `db:"current_job_id" json:"current_job_id"` - CurrentJobStatus NullProvisionerJobStatus `db:"current_job_status" json:"current_job_status"` - PreviousJobID uuid.NullUUID `db:"previous_job_id" json:"previous_job_id"` - PreviousJobStatus NullProvisionerJobStatus `db:"previous_job_status" json:"previous_job_status"` - TemplateName sql.NullString `db:"template_name" json:"template_name"` - TemplateDisplayName sql.NullString `db:"template_display_name" json:"template_display_name"` - TemplateIcon sql.NullString `db:"template_icon" json:"template_icon"` + ProvisionerDaemon ProvisionerDaemon `db:"provisioner_daemon" json:"provisioner_daemon"` + Status ProvisionerDaemonStatus `db:"status" json:"status"` + KeyName string `db:"key_name" json:"key_name"` + CurrentJobID uuid.NullUUID `db:"current_job_id" json:"current_job_id"` + CurrentJobStatus NullProvisionerJobStatus `db:"current_job_status" json:"current_job_status"` + PreviousJobID uuid.NullUUID `db:"previous_job_id" json:"previous_job_id"` + PreviousJobStatus NullProvisionerJobStatus `db:"previous_job_status" json:"previous_job_status"` + CurrentJobTemplateName sql.NullString `db:"current_job_template_name" json:"current_job_template_name"` + CurrentJobTemplateDisplayName sql.NullString `db:"current_job_template_display_name" json:"current_job_template_display_name"` + CurrentJobTemplateIcon sql.NullString `db:"current_job_template_icon" json:"current_job_template_icon"` } func (q *sqlQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context, arg GetProvisionerDaemonsWithStatusByOrganizationParams) ([]GetProvisionerDaemonsWithStatusByOrganizationRow, error) { @@ -5847,9 +5847,9 @@ func (q *sqlQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.C &i.CurrentJobStatus, &i.PreviousJobID, &i.PreviousJobStatus, - &i.TemplateName, - &i.TemplateDisplayName, - &i.TemplateIcon, + &i.CurrentJobTemplateName, + &i.CurrentJobTemplateDisplayName, + &i.CurrentJobTemplateIcon, ); err != nil { return nil, err } diff --git a/coderd/database/queries/provisionerdaemons.sql b/coderd/database/queries/provisionerdaemons.sql index 23aff1717a7fc..62024b01e88fd 100644 --- a/coderd/database/queries/provisionerdaemons.sql +++ b/coderd/database/queries/provisionerdaemons.sql @@ -45,9 +45,9 @@ SELECT current_job.job_status AS current_job_status, previous_job.id AS previous_job_id, previous_job.job_status AS previous_job_status, - tmpl.name AS template_name, - tmpl.display_name AS template_display_name, - tmpl.icon AS template_icon + tmpl.name AS current_job_template_name, + tmpl.display_name AS current_job_template_display_name, + tmpl.icon AS current_job_template_icon FROM provisioner_daemons pd JOIN @@ -73,7 +73,7 @@ LEFT JOIN ) ) JOIN - template_versions version ON version.id::text = pd.version + template_versions version ON version.id = (current_job.input->>'template_version_id')::uuid LEFT JOIN templates tmpl ON tmpl.id = version.template_id WHERE diff --git a/coderd/provisionerdaemons.go b/coderd/provisionerdaemons.go index dad9393198201..058cb8001e3df 100644 --- a/coderd/provisionerdaemons.go +++ b/coderd/provisionerdaemons.go @@ -59,8 +59,11 @@ func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) { var currentJob, previousJob *codersdk.ProvisionerDaemonJob if dbDaemon.CurrentJobID.Valid { currentJob = &codersdk.ProvisionerDaemonJob{ - ID: dbDaemon.CurrentJobID.UUID, - Status: codersdk.ProvisionerJobStatus(dbDaemon.CurrentJobStatus.ProvisionerJobStatus), + ID: dbDaemon.CurrentJobID.UUID, + Status: codersdk.ProvisionerJobStatus(dbDaemon.CurrentJobStatus.ProvisionerJobStatus), + TemplateName: dbDaemon.CurrentJobTemplateName.String, + TemplateIcon: dbDaemon.CurrentJobTemplateIcon.String, + TemplateDisplayName: dbDaemon.CurrentJobTemplateDisplayName.String, } } if dbDaemon.PreviousJobID.Valid { @@ -75,9 +78,6 @@ func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) { pd.Status = ptr.Ref(codersdk.ProvisionerDaemonStatus(dbDaemon.Status)) pd.CurrentJob = currentJob pd.PreviousJob = previousJob - pd.TemplateName = &dbDaemon.TemplateName.String - pd.TemplateDisplayName = &dbDaemon.TemplateDisplayName.String - pd.TemplateIcon = &dbDaemon.TemplateIcon.String return pd })) diff --git a/codersdk/provisionerdaemons.go b/codersdk/provisionerdaemons.go index 25f3c687c5317..f6130f3b8235d 100644 --- a/codersdk/provisionerdaemons.go +++ b/codersdk/provisionerdaemons.go @@ -62,18 +62,18 @@ type ProvisionerDaemon struct { Tags map[string]string `json:"tags" table:"tags"` // Optional fields. - KeyName *string `json:"key_name" table:"key name"` - Status *ProvisionerDaemonStatus `json:"status" enums:"offline,idle,busy" table:"status"` - CurrentJob *ProvisionerDaemonJob `json:"current_job" table:"current job,recursive"` - PreviousJob *ProvisionerDaemonJob `json:"previous_job" table:"previous job,recursive"` - TemplateName *string `json:"template_name" table:"template name"` - TemplateIcon *string `json:"template_icon" table:"template icon"` - TemplateDisplayName *string `json:"template_display_name" table:"template display name"` + KeyName *string `json:"key_name" table:"key name"` + Status *ProvisionerDaemonStatus `json:"status" enums:"offline,idle,busy" table:"status"` + CurrentJob *ProvisionerDaemonJob `json:"current_job" table:"current job,recursive"` + PreviousJob *ProvisionerDaemonJob `json:"previous_job" table:"previous job,recursive"` } type ProvisionerDaemonJob struct { - ID uuid.UUID `json:"id" format:"uuid" table:"id"` - Status ProvisionerJobStatus `json:"status" enums:"pending,running,succeeded,canceling,canceled,failed" table:"status"` + ID uuid.UUID `json:"id" format:"uuid" table:"id"` + Status ProvisionerJobStatus `json:"status" enums:"pending,running,succeeded,canceling,canceled,failed" table:"status"` + TemplateName string `json:"template_name" table:"template name"` + TemplateIcon string `json:"template_icon" table:"template icon"` + TemplateDisplayName string `json:"template_display_name" table:"template display name"` } // MatchedProvisioners represents the number of provisioner daemons diff --git a/docs/reference/api/debug.md b/docs/reference/api/debug.md index 6dc844ba8a012..93fd3e7b638c2 100644 --- a/docs/reference/api/debug.md +++ b/docs/reference/api/debug.md @@ -309,7 +309,10 @@ curl -X GET http://coder-server:8080/api/v2/debug/health \ "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -319,7 +322,10 @@ curl -X GET http://coder-server:8080/api/v2/debug/health \ "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -329,9 +335,6 @@ curl -X GET http://coder-server:8080/api/v2/debug/health \ "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" }, "warnings": [ diff --git a/docs/reference/api/enterprise.md b/docs/reference/api/enterprise.md index 9217186684b86..282cf20ab252d 100644 --- a/docs/reference/api/enterprise.md +++ b/docs/reference/api/enterprise.md @@ -1629,7 +1629,10 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -1639,7 +1642,10 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -1649,9 +1655,6 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" } ], @@ -1679,37 +1682,37 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi Status Code **200** -| Name | Type | Required | Restrictions | Description | -|----------------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| -| `[array item]` | array | false | | | -| `» daemons` | array | false | | | -| `»» api_version` | string | false | | | -| `»» created_at` | string(date-time) | false | | | -| `»» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `»»» id` | string(uuid) | false | | | -| `»»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | -| `»» id` | string(uuid) | false | | | -| `»» key_id` | string(uuid) | false | | | -| `»» key_name` | string | false | | Optional fields. | -| `»» last_seen_at` | string(date-time) | false | | | -| `»» name` | string | false | | | -| `»» organization_id` | string(uuid) | false | | | -| `»» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `»» provisioners` | array | false | | | -| `»» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | -| `»» tags` | object | false | | | -| `»»» [any property]` | string | false | | | -| `»» template_display_name` | string | false | | | -| `»» template_icon` | string | false | | | -| `»» template_name` | string | false | | | -| `»» version` | string | false | | | -| `» key` | [codersdk.ProvisionerKey](schemas.md#codersdkprovisionerkey) | false | | | -| `»» created_at` | string(date-time) | false | | | -| `»» id` | string(uuid) | false | | | -| `»» name` | string | false | | | -| `»» organization` | string(uuid) | false | | | -| `»» tags` | [codersdk.ProvisionerKeyTags](schemas.md#codersdkprovisionerkeytags) | false | | | -| `»»» [any property]` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|-----------------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| +| `[array item]` | array | false | | | +| `» daemons` | array | false | | | +| `»» api_version` | string | false | | | +| `»» created_at` | string(date-time) | false | | | +| `»» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `»»» id` | string(uuid) | false | | | +| `»»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | +| `»»» template_display_name` | string | false | | | +| `»»» template_icon` | string | false | | | +| `»»» template_name` | string | false | | | +| `»» id` | string(uuid) | false | | | +| `»» key_id` | string(uuid) | false | | | +| `»» key_name` | string | false | | Optional fields. | +| `»» last_seen_at` | string(date-time) | false | | | +| `»» name` | string | false | | | +| `»» organization_id` | string(uuid) | false | | | +| `»» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `»» provisioners` | array | false | | | +| `»» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | +| `»» tags` | object | false | | | +| `»»» [any property]` | string | false | | | +| `»» version` | string | false | | | +| `» key` | [codersdk.ProvisionerKey](schemas.md#codersdkprovisionerkey) | false | | | +| `»» created_at` | string(date-time) | false | | | +| `»» id` | string(uuid) | false | | | +| `»» name` | string | false | | | +| `»» organization` | string(uuid) | false | | | +| `»» tags` | [codersdk.ProvisionerKeyTags](schemas.md#codersdkprovisionerkeytags) | false | | | +| `»»» [any property]` | string | false | | | #### Enumerated Values diff --git a/docs/reference/api/provisioning.md b/docs/reference/api/provisioning.md index bf9d0c5eaeca3..a8f7fd7e83214 100644 --- a/docs/reference/api/provisioning.md +++ b/docs/reference/api/provisioning.md @@ -31,7 +31,10 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -41,7 +44,10 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -51,9 +57,6 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" } ] @@ -69,29 +72,29 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi Status Code **200** -| Name | Type | Required | Restrictions | Description | -|---------------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| -| `[array item]` | array | false | | | -| `» api_version` | string | false | | | -| `» created_at` | string(date-time) | false | | | -| `» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `»» id` | string(uuid) | false | | | -| `»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | -| `» id` | string(uuid) | false | | | -| `» key_id` | string(uuid) | false | | | -| `» key_name` | string | false | | Optional fields. | -| `» last_seen_at` | string(date-time) | false | | | -| `» name` | string | false | | | -| `» organization_id` | string(uuid) | false | | | -| `» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | -| `» provisioners` | array | false | | | -| `» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | -| `» tags` | object | false | | | -| `»» [any property]` | string | false | | | -| `» template_display_name` | string | false | | | -| `» template_icon` | string | false | | | -| `» template_name` | string | false | | | -| `» version` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|----------------------------|--------------------------------------------------------------------------------|----------|--------------|------------------| +| `[array item]` | array | false | | | +| `» api_version` | string | false | | | +| `» created_at` | string(date-time) | false | | | +| `» current_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `»» id` | string(uuid) | false | | | +| `»» status` | [codersdk.ProvisionerJobStatus](schemas.md#codersdkprovisionerjobstatus) | false | | | +| `»» template_display_name` | string | false | | | +| `»» template_icon` | string | false | | | +| `»» template_name` | string | false | | | +| `» id` | string(uuid) | false | | | +| `» key_id` | string(uuid) | false | | | +| `» key_name` | string | false | | Optional fields. | +| `» last_seen_at` | string(date-time) | false | | | +| `» name` | string | false | | | +| `» organization_id` | string(uuid) | false | | | +| `» previous_job` | [codersdk.ProvisionerDaemonJob](schemas.md#codersdkprovisionerdaemonjob) | false | | | +| `» provisioners` | array | false | | | +| `» status` | [codersdk.ProvisionerDaemonStatus](schemas.md#codersdkprovisionerdaemonstatus) | false | | | +| `» tags` | object | false | | | +| `»» [any property]` | string | false | | | +| `» version` | string | false | | | #### Enumerated Values diff --git a/docs/reference/api/schemas.md b/docs/reference/api/schemas.md index 6c7354bd82658..93870a2b584e2 100644 --- a/docs/reference/api/schemas.md +++ b/docs/reference/api/schemas.md @@ -4488,7 +4488,10 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -4498,7 +4501,10 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -4508,35 +4514,29 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" } ``` ### Properties -| Name | Type | Required | Restrictions | Description | -|-------------------------|----------------------------------------------------------------------|----------|--------------|------------------| -| `api_version` | string | false | | | -| `created_at` | string | false | | | -| `current_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | -| `id` | string | false | | | -| `key_id` | string | false | | | -| `key_name` | string | false | | Optional fields. | -| `last_seen_at` | string | false | | | -| `name` | string | false | | | -| `organization_id` | string | false | | | -| `previous_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | -| `provisioners` | array of string | false | | | -| `status` | [codersdk.ProvisionerDaemonStatus](#codersdkprovisionerdaemonstatus) | false | | | -| `tags` | object | false | | | -| » `[any property]` | string | false | | | -| `template_display_name` | string | false | | | -| `template_icon` | string | false | | | -| `template_name` | string | false | | | -| `version` | string | false | | | +| Name | Type | Required | Restrictions | Description | +|--------------------|----------------------------------------------------------------------|----------|--------------|------------------| +| `api_version` | string | false | | | +| `created_at` | string | false | | | +| `current_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | +| `id` | string | false | | | +| `key_id` | string | false | | | +| `key_name` | string | false | | Optional fields. | +| `last_seen_at` | string | false | | | +| `name` | string | false | | | +| `organization_id` | string | false | | | +| `previous_job` | [codersdk.ProvisionerDaemonJob](#codersdkprovisionerdaemonjob) | false | | | +| `provisioners` | array of string | false | | | +| `status` | [codersdk.ProvisionerDaemonStatus](#codersdkprovisionerdaemonstatus) | false | | | +| `tags` | object | false | | | +| » `[any property]` | string | false | | | +| `version` | string | false | | | #### Enumerated Values @@ -4551,16 +4551,22 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith ```json { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" } ``` ### Properties -| Name | Type | Required | Restrictions | Description | -|----------|----------------------------------------------------------------|----------|--------------|-------------| -| `id` | string | false | | | -| `status` | [codersdk.ProvisionerJobStatus](#codersdkprovisionerjobstatus) | false | | | +| Name | Type | Required | Restrictions | Description | +|-------------------------|----------------------------------------------------------------|----------|--------------|-------------| +| `id` | string | false | | | +| `status` | [codersdk.ProvisionerJobStatus](#codersdkprovisionerjobstatus) | false | | | +| `template_display_name` | string | false | | | +| `template_icon` | string | false | | | +| `template_name` | string | false | | | #### Enumerated Values @@ -4816,7 +4822,10 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -4826,7 +4835,10 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -4836,9 +4848,6 @@ Git clone makes use of this by parsing the URL from: 'Username for "https://gith "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" } ], @@ -9837,7 +9846,10 @@ Zero means unspecified. There might be a limit, but the client need not try to r "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -9847,7 +9859,10 @@ Zero means unspecified. There might be a limit, but the client need not try to r "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -9857,9 +9872,6 @@ Zero means unspecified. There might be a limit, but the client need not try to r "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" }, "warnings": [ @@ -9976,7 +9988,10 @@ Zero means unspecified. There might be a limit, but the client need not try to r "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -9986,7 +10001,10 @@ Zero means unspecified. There might be a limit, but the client need not try to r "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -9996,9 +10014,6 @@ Zero means unspecified. There might be a limit, but the client need not try to r "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" }, "warnings": [ @@ -10046,7 +10061,10 @@ Zero means unspecified. There might be a limit, but the client need not try to r "created_at": "2019-08-24T14:15:22Z", "current_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "key_id": "1e779c8a-6786-4c89-b7c3-a6666f5fd6b5", @@ -10056,7 +10074,10 @@ Zero means unspecified. There might be a limit, but the client need not try to r "organization_id": "7c60d51f-b44e-4682-87d6-449835ea4de6", "previous_job": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", - "status": "pending" + "status": "pending", + "template_display_name": "string", + "template_icon": "string", + "template_name": "string" }, "provisioners": [ "string" @@ -10066,9 +10087,6 @@ Zero means unspecified. There might be a limit, but the client need not try to r "property1": "string", "property2": "string" }, - "template_display_name": "string", - "template_icon": "string", - "template_name": "string", "version": "string" }, "warnings": [ diff --git a/docs/reference/cli/provisioner_list.md b/docs/reference/cli/provisioner_list.md index 6bbd9c4373fd1..93718ddd01ea8 100644 --- a/docs/reference/cli/provisioner_list.md +++ b/docs/reference/cli/provisioner_list.md @@ -26,10 +26,10 @@ Select which organization (uuid or name) to use. ### -c, --column -| | | -|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Type | [id\|organization id\|created at\|last seen at\|name\|version\|api version\|tags\|key name\|status\|current job id\|current job status\|previous job id\|previous job status\|template name\|template icon\|template display name\|organization] | -| Default | name,organization,status,key name,created at,last seen at,version,tags | +| | | +|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Type | [id\|organization id\|created at\|last seen at\|name\|version\|api version\|tags\|key name\|status\|current job id\|current job status\|current job template name\|current job template icon\|current job template display name\|previous job id\|previous job status\|previous job template name\|previous job template icon\|previous job template display name\|organization] | +| Default | name,organization,status,key name,created at,last seen at,version,tags | Columns to display in table output. diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 1c60d6ace0c43..8a779cca7de3f 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1585,15 +1585,15 @@ export interface ProvisionerDaemon { readonly status: ProvisionerDaemonStatus | null; readonly current_job: ProvisionerDaemonJob | null; readonly previous_job: ProvisionerDaemonJob | null; - readonly template_name: string | null; - readonly template_icon: string | null; - readonly template_display_name: string | null; } // From codersdk/provisionerdaemons.go export interface ProvisionerDaemonJob { readonly id: string; readonly status: ProvisionerJobStatus; + readonly template_name: string; + readonly template_icon: string; + readonly template_display_name: string; } // From codersdk/client.go From 9c7f873fd3fd67aa3825742392fe9e194d9eb7d2 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 11 Feb 2025 13:13:57 +0000 Subject: [PATCH 5/8] Fix --- site/src/testHelpers/entities.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index faf542a78d26c..a607df6bb87c9 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -584,9 +584,6 @@ export const MockProvisioner: TypesGen.ProvisionerDaemon = { status: "idle", current_job: null, previous_job: null, - template_display_name: "Test Template", - template_icon: "/icon/code.svg", - template_name: "test-template", }; export const MockUserAuthProvisioner: TypesGen.ProvisionerDaemon = { @@ -3776,9 +3773,6 @@ export const MockHealth: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", - template_display_name: "Test Template", - template_icon: "/icon/code.svg", - template_name: "test-template", }, warnings: [], }, @@ -3805,9 +3799,6 @@ export const MockHealth: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", - template_display_name: "Test Template", - template_icon: "/icon/code.svg", - template_name: "test-template", }, warnings: [], }, @@ -3834,9 +3825,6 @@ export const MockHealth: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", - template_display_name: "Test Template", - template_icon: "/icon/code.svg", - template_name: "test-template", }, warnings: [ { @@ -3994,9 +3982,6 @@ export const DeploymentHealthUnhealthy: TypesGen.HealthcheckReport = { current_job: null, previous_job: null, status: "idle", - template_display_name: "Test Template", - template_icon: "/icon/code.svg", - template_name: "test-template", }, warnings: [ { From 77b8ad67d838724c74b952862a19cd7a086f38c5 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 11 Feb 2025 13:21:09 +0000 Subject: [PATCH 6/8] Update golden file --- cli/testdata/coder_provisioner_list_--help.golden | 2 +- cli/testdata/coder_provisioner_list_--output_json.golden | 5 ++++- enterprise/cli/testdata/coder_provisioner_list_--help.golden | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cli/testdata/coder_provisioner_list_--help.golden b/cli/testdata/coder_provisioner_list_--help.golden index a9943cb9da392..111eb8315b162 100644 --- a/cli/testdata/coder_provisioner_list_--help.golden +++ b/cli/testdata/coder_provisioner_list_--help.golden @@ -11,7 +11,7 @@ OPTIONS: -O, --org string, $CODER_ORGANIZATION Select which organization (uuid or name) to use. - -c, --column [id|organization id|created at|last seen at|name|version|api version|tags|key name|status|current job id|current job status|previous job id|previous job status|organization] (default: name,organization,status,key name,created at,last seen at,version,tags) + -c, --column [id|organization id|created at|last seen at|name|version|api version|tags|key name|status|current job id|current job status|current job template name|current job template icon|current job template display name|previous job id|previous job status|previous job template name|previous job template icon|previous job template display name|organization] (default: name,organization,status,key name,created at,last seen at,version,tags) Columns to display in table output. -o, --output table|json (default: table) diff --git a/cli/testdata/coder_provisioner_list_--output_json.golden b/cli/testdata/coder_provisioner_list_--output_json.golden index cd0c085a8cc4a..d6983d11e5fa3 100644 --- a/cli/testdata/coder_provisioner_list_--output_json.golden +++ b/cli/testdata/coder_provisioner_list_--output_json.golden @@ -20,7 +20,10 @@ "current_job": null, "previous_job": { "id": "======[workspace build job ID]======", - "status": "succeeded" + "status": "succeeded", + "template_name": "", + "template_icon": "", + "template_display_name": "" }, "organization_name": "Coder" } diff --git a/enterprise/cli/testdata/coder_provisioner_list_--help.golden b/enterprise/cli/testdata/coder_provisioner_list_--help.golden index a9943cb9da392..111eb8315b162 100644 --- a/enterprise/cli/testdata/coder_provisioner_list_--help.golden +++ b/enterprise/cli/testdata/coder_provisioner_list_--help.golden @@ -11,7 +11,7 @@ OPTIONS: -O, --org string, $CODER_ORGANIZATION Select which organization (uuid or name) to use. - -c, --column [id|organization id|created at|last seen at|name|version|api version|tags|key name|status|current job id|current job status|previous job id|previous job status|organization] (default: name,organization,status,key name,created at,last seen at,version,tags) + -c, --column [id|organization id|created at|last seen at|name|version|api version|tags|key name|status|current job id|current job status|current job template name|current job template icon|current job template display name|previous job id|previous job status|previous job template name|previous job template icon|previous job template display name|organization] (default: name,organization,status,key name,created at,last seen at,version,tags) Columns to display in table output. -o, --output table|json (default: table) From ecc1f40b40dc5489f3a4908b8d5f25b2f3dfa772 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 11 Feb 2025 15:51:48 +0000 Subject: [PATCH 7/8] Use LEFT JOIN --- coderd/database/queries.sql.go | 2 +- coderd/database/queries/provisionerdaemons.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index 2c0adf3b186e0..0fc173cac7fdc 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -5783,7 +5783,7 @@ LEFT JOIN LIMIT 1 ) ) -JOIN +LEFT JOIN template_versions version ON version.id = (current_job.input->>'template_version_id')::uuid LEFT JOIN templates tmpl ON tmpl.id = version.template_id diff --git a/coderd/database/queries/provisionerdaemons.sql b/coderd/database/queries/provisionerdaemons.sql index 62024b01e88fd..54ca5abc925dd 100644 --- a/coderd/database/queries/provisionerdaemons.sql +++ b/coderd/database/queries/provisionerdaemons.sql @@ -72,7 +72,7 @@ LEFT JOIN LIMIT 1 ) ) -JOIN +LEFT JOIN template_versions version ON version.id = (current_job.input->>'template_version_id')::uuid LEFT JOIN templates tmpl ON tmpl.id = version.template_id From 401c9329d0487cb4dd2026ed102408cce03030dd Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 11 Feb 2025 16:37:27 +0000 Subject: [PATCH 8/8] Use COALESCE --- coderd/database/queries.sql.go | 12 ++++++------ coderd/database/queries/provisionerdaemons.sql | 6 +++--- coderd/provisionerdaemons.go | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index 0fc173cac7fdc..fec7157c5c715 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -5756,9 +5756,9 @@ SELECT current_job.job_status AS current_job_status, previous_job.id AS previous_job_id, previous_job.job_status AS previous_job_status, - tmpl.name AS current_job_template_name, - tmpl.display_name AS current_job_template_display_name, - tmpl.icon AS current_job_template_icon + COALESCE(tmpl.name, ''::text) AS current_job_template_name, + COALESCE(tmpl.display_name, ''::text) AS current_job_template_display_name, + COALESCE(tmpl.icon, ''::text) AS current_job_template_icon FROM provisioner_daemons pd JOIN @@ -5810,9 +5810,9 @@ type GetProvisionerDaemonsWithStatusByOrganizationRow struct { CurrentJobStatus NullProvisionerJobStatus `db:"current_job_status" json:"current_job_status"` PreviousJobID uuid.NullUUID `db:"previous_job_id" json:"previous_job_id"` PreviousJobStatus NullProvisionerJobStatus `db:"previous_job_status" json:"previous_job_status"` - CurrentJobTemplateName sql.NullString `db:"current_job_template_name" json:"current_job_template_name"` - CurrentJobTemplateDisplayName sql.NullString `db:"current_job_template_display_name" json:"current_job_template_display_name"` - CurrentJobTemplateIcon sql.NullString `db:"current_job_template_icon" json:"current_job_template_icon"` + CurrentJobTemplateName string `db:"current_job_template_name" json:"current_job_template_name"` + CurrentJobTemplateDisplayName string `db:"current_job_template_display_name" json:"current_job_template_display_name"` + CurrentJobTemplateIcon string `db:"current_job_template_icon" json:"current_job_template_icon"` } func (q *sqlQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context, arg GetProvisionerDaemonsWithStatusByOrganizationParams) ([]GetProvisionerDaemonsWithStatusByOrganizationRow, error) { diff --git a/coderd/database/queries/provisionerdaemons.sql b/coderd/database/queries/provisionerdaemons.sql index 54ca5abc925dd..b003153ee939d 100644 --- a/coderd/database/queries/provisionerdaemons.sql +++ b/coderd/database/queries/provisionerdaemons.sql @@ -45,9 +45,9 @@ SELECT current_job.job_status AS current_job_status, previous_job.id AS previous_job_id, previous_job.job_status AS previous_job_status, - tmpl.name AS current_job_template_name, - tmpl.display_name AS current_job_template_display_name, - tmpl.icon AS current_job_template_icon + COALESCE(tmpl.name, ''::text) AS current_job_template_name, + COALESCE(tmpl.display_name, ''::text) AS current_job_template_display_name, + COALESCE(tmpl.icon, ''::text) AS current_job_template_icon FROM provisioner_daemons pd JOIN diff --git a/coderd/provisionerdaemons.go b/coderd/provisionerdaemons.go index 058cb8001e3df..bf4dfb6c4d7dd 100644 --- a/coderd/provisionerdaemons.go +++ b/coderd/provisionerdaemons.go @@ -61,9 +61,9 @@ func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) { currentJob = &codersdk.ProvisionerDaemonJob{ ID: dbDaemon.CurrentJobID.UUID, Status: codersdk.ProvisionerJobStatus(dbDaemon.CurrentJobStatus.ProvisionerJobStatus), - TemplateName: dbDaemon.CurrentJobTemplateName.String, - TemplateIcon: dbDaemon.CurrentJobTemplateIcon.String, - TemplateDisplayName: dbDaemon.CurrentJobTemplateDisplayName.String, + TemplateName: dbDaemon.CurrentJobTemplateName, + TemplateIcon: dbDaemon.CurrentJobTemplateIcon, + TemplateDisplayName: dbDaemon.CurrentJobTemplateDisplayName, } } if dbDaemon.PreviousJobID.Valid { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy