mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
feat: reinitialize agents when a prebuilt workspace is claimed (#17475)
This pull request allows coder workspace agents to be reinitialized when a prebuilt workspace is claimed by a user. This facilitates the transfer of ownership between the anonymous prebuilds system user and the new owner of the workspace. Only a single agent per prebuilt workspace is supported for now, but plumbing has already been done to facilitate the seamless transition to multi-agent support. --------- Signed-off-by: Danny Kopping <dannykopping@gmail.com> Co-authored-by: Danny Kopping <dannykopping@gmail.com>
This commit is contained in:
@ -294,6 +294,8 @@ type TemplateVersionBuilder struct {
|
||||
ps pubsub.Pubsub
|
||||
resources []*sdkproto.Resource
|
||||
params []database.TemplateVersionParameter
|
||||
presets []database.TemplateVersionPreset
|
||||
presetParams []database.TemplateVersionPresetParameter
|
||||
promote bool
|
||||
autoCreateTemplate bool
|
||||
}
|
||||
@ -339,6 +341,13 @@ func (t TemplateVersionBuilder) Params(ps ...database.TemplateVersionParameter)
|
||||
return t
|
||||
}
|
||||
|
||||
func (t TemplateVersionBuilder) Preset(preset database.TemplateVersionPreset, params ...database.TemplateVersionPresetParameter) TemplateVersionBuilder {
|
||||
// nolint: revive // returns modified struct
|
||||
t.presets = append(t.presets, preset)
|
||||
t.presetParams = append(t.presetParams, params...)
|
||||
return t
|
||||
}
|
||||
|
||||
func (t TemplateVersionBuilder) SkipCreateTemplate() TemplateVersionBuilder {
|
||||
// nolint: revive // returns modified struct
|
||||
t.autoCreateTemplate = false
|
||||
@ -378,6 +387,25 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
|
||||
require.NoError(t.t, err)
|
||||
}
|
||||
|
||||
for _, preset := range t.presets {
|
||||
dbgen.Preset(t.t, t.db, database.InsertPresetParams{
|
||||
ID: preset.ID,
|
||||
TemplateVersionID: version.ID,
|
||||
Name: preset.Name,
|
||||
CreatedAt: version.CreatedAt,
|
||||
DesiredInstances: preset.DesiredInstances,
|
||||
InvalidateAfterSecs: preset.InvalidateAfterSecs,
|
||||
})
|
||||
}
|
||||
|
||||
for _, presetParam := range t.presetParams {
|
||||
dbgen.PresetParameter(t.t, t.db, database.InsertPresetParametersParams{
|
||||
TemplateVersionPresetID: presetParam.TemplateVersionPresetID,
|
||||
Names: []string{presetParam.Name},
|
||||
Values: []string{presetParam.Value},
|
||||
})
|
||||
}
|
||||
|
||||
payload, err := json.Marshal(provisionerdserver.TemplateVersionImportJob{
|
||||
TemplateVersionID: t.seed.ID,
|
||||
})
|
||||
|
Reference in New Issue
Block a user