add support for coder workspace presets in the provisioners

This commit is contained in:
Sas Swart
2025-01-29 15:27:03 +00:00
parent 3d4552faaa
commit 3880dc8b93
15 changed files with 1142 additions and 775 deletions

View File

@ -3113,14 +3113,14 @@ func (q *querier) InsertOrganizationMember(ctx context.Context, arg database.Ins
}
func (q *querier) InsertPreset(ctx context.Context, arg database.InsertPresetParams) (database.TemplateVersionPreset, error) {
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceTemplate); err != nil {
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
return database.TemplateVersionPreset{}, err
}
return q.db.InsertPreset(ctx, arg)
}
func (q *querier) InsertPresetParameters(ctx context.Context, arg database.InsertPresetParametersParams) ([]database.TemplateVersionPresetParameter, error) {
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceTemplate); err != nil {
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
return nil, err
}
return q.db.InsertPresetParameters(ctx, arg)

View File

@ -8123,7 +8123,7 @@ func (q *FakeQuerier) InsertPreset(_ context.Context, arg database.InsertPresetP
return preset, nil
}
func (q *FakeQuerier) InsertPresetParameters(ctx context.Context, arg database.InsertPresetParametersParams) ([]database.TemplateVersionPresetParameter, error) {
func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.InsertPresetParametersParams) ([]database.TemplateVersionPresetParameter, error) {
err := validateDatabaseType(arg)
if err != nil {
return nil, err

View File

@ -67,7 +67,7 @@ func (api *API) templateVersionPresetParameters(rw http.ResponseWriter, r *http.
var res []codersdk.PresetParameter
for _, presetParam := range presetParams {
res = append(res, codersdk.PresetParameter{
PresetID: presetParam.ID,
PresetID: presetParam.TemplateVersionPresetID,
Name: presetParam.Name,
Value: presetParam.Value,
})

View File

@ -1340,6 +1340,37 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
}
}
for _, preset := range jobType.TemplateImport.Presets {
s.Logger.Info(ctx, "inserting template import job preset",
slog.F("job_id", job.ID.String()),
slog.F("preset_name", preset.Name),
)
dbPreset, err := s.Database.InsertPreset(ctx, database.InsertPresetParams{
TemplateVersionID: input.TemplateVersionID,
Name: preset.Name,
CreatedAt: s.timeNow(),
})
if err != nil {
return nil, xerrors.Errorf("insert preset: %w", err)
}
var presetParameterNames []string
var presetParameterValues []string
for _, parameter := range preset.Parameters {
presetParameterNames = append(presetParameterNames, parameter.Name)
presetParameterValues = append(presetParameterValues, parameter.Value)
}
_, err = s.Database.InsertPresetParameters(ctx, database.InsertPresetParametersParams{
TemplateVersionPresetID: dbPreset.ID,
Names: presetParameterNames,
Values: presetParameterValues,
})
if err != nil {
return nil, xerrors.Errorf("insert preset parameters: %w", err)
}
}
var completedError sql.NullString
for _, externalAuthProvider := range jobType.TemplateImport.ExternalAuthProviders {