Skip to content

Commit 1d2bead

Browse files
committed
Merge remote-tracking branch 'origin/main' into jjs/presets
2 parents 50ccdb2 + 46e04c6 commit 1d2bead

File tree

29 files changed

+628
-162
lines changed

29 files changed

+628
-162
lines changed

cli/testdata/coder_provisioner_list_--output_json.golden

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"previous_job": {
2222
"id": "======[workspace build job ID]======",
2323
"status": "succeeded",
24-
"template_name": "",
24+
"template_name": "test-template",
2525
"template_icon": "",
2626
"template_display_name": ""
2727
},

coderd/apidoc/docs.go

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

coderd/apidoc/swagger.json

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

coderd/database/dbmem/dbmem.go

+68-8
Original file line numberDiff line numberDiff line change
@@ -3931,7 +3931,7 @@ func (q *FakeQuerier) GetProvisionerDaemonsByOrganization(_ context.Context, arg
39313931
return daemons, nil
39323932
}
39333933

3934-
func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Context, arg database.GetProvisionerDaemonsWithStatusByOrganizationParams) ([]database.GetProvisionerDaemonsWithStatusByOrganizationRow, error) {
3934+
func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context, arg database.GetProvisionerDaemonsWithStatusByOrganizationParams) ([]database.GetProvisionerDaemonsWithStatusByOrganizationRow, error) {
39353935
err := validateDatabaseType(arg)
39363936
if err != nil {
39373937
return nil, err
@@ -3981,6 +3981,31 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
39813981
status = database.ProvisionerDaemonStatusIdle
39823982
}
39833983
}
3984+
var currentTemplate database.Template
3985+
if currentJob.ID != uuid.Nil {
3986+
var input codersdk.ProvisionerJobInput
3987+
err := json.Unmarshal(currentJob.Input, &input)
3988+
if err != nil {
3989+
return nil, err
3990+
}
3991+
if input.WorkspaceBuildID != nil {
3992+
b, err := q.getWorkspaceBuildByIDNoLock(ctx, *input.WorkspaceBuildID)
3993+
if err != nil {
3994+
return nil, err
3995+
}
3996+
input.TemplateVersionID = &b.TemplateVersionID
3997+
}
3998+
if input.TemplateVersionID != nil {
3999+
v, err := q.getTemplateVersionByIDNoLock(ctx, *input.TemplateVersionID)
4000+
if err != nil {
4001+
return nil, err
4002+
}
4003+
currentTemplate, err = q.getTemplateByIDNoLock(ctx, v.TemplateID.UUID)
4004+
if err != nil {
4005+
return nil, err
4006+
}
4007+
}
4008+
}
39844009

39854010
var previousJob database.ProvisionerJob
39864011
for _, job := range q.provisionerJobs {
@@ -3997,6 +4022,31 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
39974022
}
39984023
}
39994024
}
4025+
var previousTemplate database.Template
4026+
if previousJob.ID != uuid.Nil {
4027+
var input codersdk.ProvisionerJobInput
4028+
err := json.Unmarshal(previousJob.Input, &input)
4029+
if err != nil {
4030+
return nil, err
4031+
}
4032+
if input.WorkspaceBuildID != nil {
4033+
b, err := q.getWorkspaceBuildByIDNoLock(ctx, *input.WorkspaceBuildID)
4034+
if err != nil {
4035+
return nil, err
4036+
}
4037+
input.TemplateVersionID = &b.TemplateVersionID
4038+
}
4039+
if input.TemplateVersionID != nil {
4040+
v, err := q.getTemplateVersionByIDNoLock(ctx, *input.TemplateVersionID)
4041+
if err != nil {
4042+
return nil, err
4043+
}
4044+
previousTemplate, err = q.getTemplateByIDNoLock(ctx, v.TemplateID.UUID)
4045+
if err != nil {
4046+
return nil, err
4047+
}
4048+
}
4049+
}
40004050

40014051
// Get the provisioner key name
40024052
var keyName string
@@ -4008,20 +4058,30 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
40084058
}
40094059

40104060
rows = append(rows, database.GetProvisionerDaemonsWithStatusByOrganizationRow{
4011-
ProvisionerDaemon: daemon,
4012-
Status: status,
4013-
KeyName: keyName,
4014-
CurrentJobID: uuid.NullUUID{UUID: currentJob.ID, Valid: currentJob.ID != uuid.Nil},
4015-
CurrentJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: currentJob.JobStatus, Valid: currentJob.ID != uuid.Nil},
4016-
PreviousJobID: uuid.NullUUID{UUID: previousJob.ID, Valid: previousJob.ID != uuid.Nil},
4017-
PreviousJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: previousJob.JobStatus, Valid: previousJob.ID != uuid.Nil},
4061+
ProvisionerDaemon: daemon,
4062+
Status: status,
4063+
KeyName: keyName,
4064+
CurrentJobID: uuid.NullUUID{UUID: currentJob.ID, Valid: currentJob.ID != uuid.Nil},
4065+
CurrentJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: currentJob.JobStatus, Valid: currentJob.ID != uuid.Nil},
4066+
CurrentJobTemplateName: currentTemplate.Name,
4067+
CurrentJobTemplateDisplayName: currentTemplate.DisplayName,
4068+
CurrentJobTemplateIcon: currentTemplate.Icon,
4069+
PreviousJobID: uuid.NullUUID{UUID: previousJob.ID, Valid: previousJob.ID != uuid.Nil},
4070+
PreviousJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: previousJob.JobStatus, Valid: previousJob.ID != uuid.Nil},
4071+
PreviousJobTemplateName: previousTemplate.Name,
4072+
PreviousJobTemplateDisplayName: previousTemplate.DisplayName,
4073+
PreviousJobTemplateIcon: previousTemplate.Icon,
40184074
})
40194075
}
40204076

40214077
slices.SortFunc(rows, func(a, b database.GetProvisionerDaemonsWithStatusByOrganizationRow) int {
40224078
return a.ProvisionerDaemon.CreatedAt.Compare(b.ProvisionerDaemon.CreatedAt)
40234079
})
40244080

4081+
if arg.Limit.Valid && arg.Limit.Int32 > 0 && len(rows) > int(arg.Limit.Int32) {
4082+
rows = rows[:arg.Limit.Int32]
4083+
}
4084+
40254085
return rows, nil
40264086
}
40274087

coderd/database/querier.go

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

coderd/database/queries.sql.go

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

coderd/database/queries/provisionerdaemons.sql

+23-6
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,12 @@ SELECT
4545
current_job.job_status AS current_job_status,
4646
previous_job.id AS previous_job_id,
4747
previous_job.job_status AS previous_job_status,
48-
COALESCE(tmpl.name, ''::text) AS current_job_template_name,
49-
COALESCE(tmpl.display_name, ''::text) AS current_job_template_display_name,
50-
COALESCE(tmpl.icon, ''::text) AS current_job_template_icon
48+
COALESCE(current_template.name, ''::text) AS current_job_template_name,
49+
COALESCE(current_template.display_name, ''::text) AS current_job_template_display_name,
50+
COALESCE(current_template.icon, ''::text) AS current_job_template_icon,
51+
COALESCE(previous_template.name, ''::text) AS previous_job_template_name,
52+
COALESCE(previous_template.display_name, ''::text) AS previous_job_template_display_name,
53+
COALESCE(previous_template.icon, ''::text) AS previous_job_template_icon
5154
FROM
5255
provisioner_daemons pd
5356
JOIN
@@ -72,16 +75,30 @@ LEFT JOIN
7275
LIMIT 1
7376
)
7477
)
78+
-- Current job information.
7579
LEFT JOIN
76-
template_versions version ON version.id = (current_job.input->>'template_version_id')::uuid
80+
workspace_builds current_build ON current_build.id = CASE WHEN current_job.input ? 'workspace_build_id' THEN (current_job.input->>'workspace_build_id')::uuid END
7781
LEFT JOIN
78-
templates tmpl ON tmpl.id = version.template_id
82+
-- We should always have a template version, either explicitly or implicitly via workspace build.
83+
template_versions current_version ON current_version.id = CASE WHEN current_job.input ? 'template_version_id' THEN (current_job.input->>'template_version_id')::uuid ELSE current_build.template_version_id END
84+
LEFT JOIN
85+
templates current_template ON current_template.id = current_version.template_id
86+
-- Previous job information.
87+
LEFT JOIN
88+
workspace_builds previous_build ON previous_build.id = CASE WHEN previous_job.input ? 'workspace_build_id' THEN (previous_job.input->>'workspace_build_id')::uuid END
89+
LEFT JOIN
90+
-- We should always have a template version, either explicitly or implicitly via workspace build.
91+
template_versions previous_version ON previous_version.id = CASE WHEN previous_job.input ? 'template_version_id' THEN (previous_job.input->>'template_version_id')::uuid ELSE previous_build.template_version_id END
92+
LEFT JOIN
93+
templates previous_template ON previous_template.id = previous_version.template_id
7994
WHERE
8095
pd.organization_id = @organization_id::uuid
8196
AND (COALESCE(array_length(@ids::uuid[], 1), 0) = 0 OR pd.id = ANY(@ids::uuid[]))
8297
AND (@tags::tagset = 'null'::tagset OR provisioner_tagset_contains(pd.tags::tagset, @tags::tagset))
8398
ORDER BY
84-
pd.created_at ASC;
99+
pd.created_at ASC
100+
LIMIT
101+
sqlc.narg('limit')::int;
85102

86103
-- name: DeleteOldProvisionerDaemons :exec
87104
-- Delete provisioner daemons that have been created at least a week ago

0 commit comments

Comments
 (0)