Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit77306f3

Browse files
authored
feat(coderd): add filters and fix template for provisioner daemons (#16558)
This change adds provisioner daemon ID filter to the provisioner daemonsendpoint, and also implements the limiting to 50 results.Test coverage is greatly improved and template information for jobsassociated to the daemon was also fixed.Updates#15084Updates#15192Related#16532
1 parenta69961b commit77306f3

File tree

13 files changed

+533
-65
lines changed

13 files changed

+533
-65
lines changed

‎cli/testdata/coder_provisioner_list_--output_json.golden

Lines changed: 1 addition & 1 deletion
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

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 37 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbmem/dbmem.go

Lines changed: 68 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3931,7 +3931,7 @@ func (q *FakeQuerier) GetProvisionerDaemonsByOrganization(_ context.Context, arg
39313931
returndaemons,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
iferr!=nil {
39373937
returnnil,err
@@ -3981,6 +3981,31 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
39813981
status=database.ProvisionerDaemonStatusIdle
39823982
}
39833983
}
3984+
varcurrentTemplate database.Template
3985+
ifcurrentJob.ID!=uuid.Nil {
3986+
varinput codersdk.ProvisionerJobInput
3987+
err:=json.Unmarshal(currentJob.Input,&input)
3988+
iferr!=nil {
3989+
returnnil,err
3990+
}
3991+
ifinput.WorkspaceBuildID!=nil {
3992+
b,err:=q.getWorkspaceBuildByIDNoLock(ctx,*input.WorkspaceBuildID)
3993+
iferr!=nil {
3994+
returnnil,err
3995+
}
3996+
input.TemplateVersionID=&b.TemplateVersionID
3997+
}
3998+
ifinput.TemplateVersionID!=nil {
3999+
v,err:=q.getTemplateVersionByIDNoLock(ctx,*input.TemplateVersionID)
4000+
iferr!=nil {
4001+
returnnil,err
4002+
}
4003+
currentTemplate,err=q.getTemplateByIDNoLock(ctx,v.TemplateID.UUID)
4004+
iferr!=nil {
4005+
returnnil,err
4006+
}
4007+
}
4008+
}
39844009

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

40014051
// Get the provisioner key name
40024052
varkeyNamestring
@@ -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
returna.ProvisionerDaemon.CreatedAt.Compare(b.ProvisionerDaemon.CreatedAt)
40234079
})
40244080

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

‎coderd/database/querier.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go

Lines changed: 46 additions & 21 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/provisionerdaemons.sql

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,12 @@ SELECT
4545
current_job.job_statusAS current_job_status,
4646
previous_job.idAS previous_job_id,
4747
previous_job.job_statusAS 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
LIMIT1
7376
)
7477
)
78+
-- Current job information.
7579
LEFT JOIN
76-
template_versions versionONversion.id= (current_job.input->>'template_version_id')::uuid
80+
workspace_builds current_buildONcurrent_build.id=CASE WHENcurrent_job.input ?'workspace_build_id' THEN(current_job.input->>'workspace_build_id')::uuid END
7781
LEFT JOIN
78-
templates tmplONtmpl.id=version.template_id
82+
-- We should always have a template version, either explicitly or implicitly via workspace build.
83+
template_versions current_versionONcurrent_version.id= CASE WHENcurrent_job.input ?'template_version_id' THEN (current_job.input->>'template_version_id')::uuid ELSEcurrent_build.template_version_id END
84+
LEFT JOIN
85+
templates current_templateONcurrent_template.id=current_version.template_id
86+
-- Previous job information.
87+
LEFT JOIN
88+
workspace_builds previous_buildONprevious_build.id= CASE WHENprevious_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_versionONprevious_version.id= CASE WHENprevious_job.input ?'template_version_id' THEN (previous_job.input->>'template_version_id')::uuid ELSEprevious_build.template_version_id END
92+
LEFT JOIN
93+
templates previous_templateONprevious_template.id=previous_version.template_id
7994
WHERE
8095
pd.organization_id= @organization_id::uuid
8196
AND (COALESCE(array_length(@ids::uuid[],1),0)=0ORpd.id= ANY(@ids::uuid[]))
8297
AND (@tags::tagset='null'::tagsetOR provisioner_tagset_contains(pd.tags::tagset, @tags::tagset))
8398
ORDER BY
84-
pd.created_atASC;
99+
pd.created_atASC
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)

[8]ページ先頭

©2009-2025 Movatter.jp