mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd): add filters and fix template for provisioner daemons (#16558)
This change adds provisioner daemon ID filter to the provisioner daemons endpoint, and also implements the limiting to 50 results. Test coverage is greatly improved and template information for jobs associated to the daemon was also fixed. Updates #15084 Updates #15192 Related #16532
This commit is contained in:
@@ -3931,7 +3931,7 @@ func (q *FakeQuerier) GetProvisionerDaemonsByOrganization(_ context.Context, arg
|
||||
return daemons, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Context, arg database.GetProvisionerDaemonsWithStatusByOrganizationParams) ([]database.GetProvisionerDaemonsWithStatusByOrganizationRow, error) {
|
||||
func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context, arg database.GetProvisionerDaemonsWithStatusByOrganizationParams) ([]database.GetProvisionerDaemonsWithStatusByOrganizationRow, error) {
|
||||
err := validateDatabaseType(arg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -3981,6 +3981,31 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
|
||||
status = database.ProvisionerDaemonStatusIdle
|
||||
}
|
||||
}
|
||||
var currentTemplate database.Template
|
||||
if currentJob.ID != uuid.Nil {
|
||||
var input codersdk.ProvisionerJobInput
|
||||
err := json.Unmarshal(currentJob.Input, &input)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if input.WorkspaceBuildID != nil {
|
||||
b, err := q.getWorkspaceBuildByIDNoLock(ctx, *input.WorkspaceBuildID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
input.TemplateVersionID = &b.TemplateVersionID
|
||||
}
|
||||
if input.TemplateVersionID != nil {
|
||||
v, err := q.getTemplateVersionByIDNoLock(ctx, *input.TemplateVersionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
currentTemplate, err = q.getTemplateByIDNoLock(ctx, v.TemplateID.UUID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var previousJob database.ProvisionerJob
|
||||
for _, job := range q.provisionerJobs {
|
||||
@@ -3997,6 +4022,31 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
|
||||
}
|
||||
}
|
||||
}
|
||||
var previousTemplate database.Template
|
||||
if previousJob.ID != uuid.Nil {
|
||||
var input codersdk.ProvisionerJobInput
|
||||
err := json.Unmarshal(previousJob.Input, &input)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if input.WorkspaceBuildID != nil {
|
||||
b, err := q.getWorkspaceBuildByIDNoLock(ctx, *input.WorkspaceBuildID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
input.TemplateVersionID = &b.TemplateVersionID
|
||||
}
|
||||
if input.TemplateVersionID != nil {
|
||||
v, err := q.getTemplateVersionByIDNoLock(ctx, *input.TemplateVersionID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
previousTemplate, err = q.getTemplateByIDNoLock(ctx, v.TemplateID.UUID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the provisioner key name
|
||||
var keyName string
|
||||
@@ -4008,13 +4058,19 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
|
||||
}
|
||||
|
||||
rows = append(rows, database.GetProvisionerDaemonsWithStatusByOrganizationRow{
|
||||
ProvisionerDaemon: daemon,
|
||||
Status: status,
|
||||
KeyName: keyName,
|
||||
CurrentJobID: uuid.NullUUID{UUID: currentJob.ID, Valid: currentJob.ID != uuid.Nil},
|
||||
CurrentJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: currentJob.JobStatus, Valid: currentJob.ID != uuid.Nil},
|
||||
PreviousJobID: uuid.NullUUID{UUID: previousJob.ID, Valid: previousJob.ID != uuid.Nil},
|
||||
PreviousJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: previousJob.JobStatus, Valid: previousJob.ID != uuid.Nil},
|
||||
ProvisionerDaemon: daemon,
|
||||
Status: status,
|
||||
KeyName: keyName,
|
||||
CurrentJobID: uuid.NullUUID{UUID: currentJob.ID, Valid: currentJob.ID != uuid.Nil},
|
||||
CurrentJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: currentJob.JobStatus, Valid: currentJob.ID != uuid.Nil},
|
||||
CurrentJobTemplateName: currentTemplate.Name,
|
||||
CurrentJobTemplateDisplayName: currentTemplate.DisplayName,
|
||||
CurrentJobTemplateIcon: currentTemplate.Icon,
|
||||
PreviousJobID: uuid.NullUUID{UUID: previousJob.ID, Valid: previousJob.ID != uuid.Nil},
|
||||
PreviousJobStatus: database.NullProvisionerJobStatus{ProvisionerJobStatus: previousJob.JobStatus, Valid: previousJob.ID != uuid.Nil},
|
||||
PreviousJobTemplateName: previousTemplate.Name,
|
||||
PreviousJobTemplateDisplayName: previousTemplate.DisplayName,
|
||||
PreviousJobTemplateIcon: previousTemplate.Icon,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -4022,6 +4078,10 @@ func (q *FakeQuerier) GetProvisionerDaemonsWithStatusByOrganization(_ context.Co
|
||||
return a.ProvisionerDaemon.CreatedAt.Compare(b.ProvisionerDaemon.CreatedAt)
|
||||
})
|
||||
|
||||
if arg.Limit.Valid && arg.Limit.Int32 > 0 && len(rows) > int(arg.Limit.Int32) {
|
||||
rows = rows[:arg.Limit.Int32]
|
||||
}
|
||||
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user