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

Commit4859410

Browse files
committed
feat: add resource replacement notification
Signed-off-by: Danny Kopping <dannykopping@gmail.com>
1 parent192f75f commit4859410

26 files changed

+320
-136
lines changed

‎coderd/coderd.go‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,6 +1763,11 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
17631763
returnnil,xerrors.Errorf("failed to create in-memory provisioner daemon: %w",err)
17641764
}
17651765

1766+
varprebuildsOrchestrator prebuilds.ReconciliationOrchestrator
1767+
ifval:=api.PrebuildsReconciler.Load();val!=nil {
1768+
prebuildsOrchestrator=*val
1769+
}
1770+
17661771
mux:=drpcmux.New()
17671772
api.Logger.Debug(dialCtx,"starting in-memory provisioner daemon",slog.F("name",name))
17681773
logger:=api.Logger.Named(fmt.Sprintf("inmem-provisionerd-%s",name))
@@ -1790,6 +1795,7 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
17901795
Clock:api.Clock,
17911796
},
17921797
api.NotificationsEnqueuer,
1798+
prebuildsOrchestrator,
17931799
)
17941800
iferr!=nil {
17951801
returnnil,err

‎coderd/database/dbauthz/dbauthz.go‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2524,6 +2524,13 @@ func (q *querier) GetTemplateParameterInsights(ctx context.Context, arg database
25242524
returnq.db.GetTemplateParameterInsights(ctx,arg)
25252525
}
25262526

2527+
func (q*querier)GetTemplatePresetsByID(ctx context.Context,id uuid.UUID) (database.TemplateVersionPreset,error) {
2528+
iferr:=q.authorizeContext(ctx,policy.ActionRead,rbac.ResourceTemplate.All());err!=nil {
2529+
return database.TemplateVersionPreset{},err
2530+
}
2531+
returnq.db.GetTemplatePresetsByID(ctx,id)
2532+
}
2533+
25272534
func (q*querier)GetTemplatePresetsWithPrebuilds(ctx context.Context,templateID uuid.NullUUID) ([]database.GetTemplatePresetsWithPrebuildsRow,error) {
25282535
// GetTemplatePresetsWithPrebuilds retrieves template versions with configured presets and prebuilds.
25292536
// Presets and prebuilds are part of the template, so if you can access templates - you can access them as well.

‎coderd/database/dbauthz/dbauthz_test.go‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4873,6 +4873,27 @@ func (s *MethodTestSuite) TestPrebuilds() {
48734873
Asserts(rbac.ResourceTemplate.All(),policy.ActionRead).
48744874
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
48754875
}))
4876+
s.Run("GetTemplatePresetsByID",s.Subtest(func(db database.Store,check*expects) {
4877+
org:=dbgen.Organization(s.T(),db, database.Organization{})
4878+
user:=dbgen.User(s.T(),db, database.User{})
4879+
t:=dbgen.Template(s.T(),db, database.Template{
4880+
OrganizationID:org.ID,
4881+
CreatedBy:user.ID,
4882+
})
4883+
tv:=dbgen.TemplateVersion(s.T(),db, database.TemplateVersion{
4884+
TemplateID: uuid.NullUUID{UUID:t.ID,Valid:true},
4885+
OrganizationID:org.ID,
4886+
CreatedBy:user.ID,
4887+
})
4888+
preset:=dbgen.Preset(s.T(),db, database.InsertPresetParams{
4889+
TemplateVersionID:tv.ID,
4890+
Name:"my-preset",
4891+
DesiredInstances: sql.NullInt32{Int32:1,Valid:true},
4892+
})
4893+
check.Args(preset.ID).
4894+
Asserts(rbac.ResourceTemplate.All(),policy.ActionRead).
4895+
ErrorsWithInMemDB(dbmem.ErrUnimplemented)
4896+
}))
48764897
s.Run("GetPresetByID",s.Subtest(func(db database.Store,check*expects) {
48774898
org:=dbgen.Organization(s.T(),db, database.Organization{})
48784899
user:=dbgen.User(s.T(),db, database.User{})

‎coderd/database/dbmem/dbmem.go‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6072,6 +6072,10 @@ func (q *FakeQuerier) GetTemplateParameterInsights(ctx context.Context, arg data
60726072
returnrows,nil
60736073
}
60746074

6075+
func (q*FakeQuerier)GetTemplatePresetsByID(ctx context.Context,id uuid.UUID) (database.TemplateVersionPreset,error) {
6076+
return database.TemplateVersionPreset{},ErrUnimplemented
6077+
}
6078+
60756079
func (*FakeQuerier)GetTemplatePresetsWithPrebuilds(_ context.Context,_ uuid.NullUUID) ([]database.GetTemplatePresetsWithPrebuildsRow,error) {
60766080
returnnil,ErrUnimplemented
60776081
}

‎coderd/database/dbmetrics/querymetrics.go‎

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

‎coderd/database/dbmock/dbmock.go‎

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

‎coderd/database/migrations/000320_resource_replacements_notification.up.sql‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ VALUES ('89d9745a-816e-4695-a17f-3d0a229e2b8d',
55
E'There might be a problem with a recently claimed prebuilt workspace',
66
$$
77
Workspace**{{.Labels.workspace}}** was claimedfrom a prebuilt workspace by**{{.Labels.claimant}}**.
8+
89
During the claim, Terraform destroyedand recreated the following resources
910
because oneor more immutable attributes changed:
1011

@@ -16,12 +17,18 @@ When Terraform must change an immutable attribute, it replaces the entire resour
1617
If you’re using prebuilds to speed up provisioning, unexpected replacements will slow down
1718
workspace startup—even when claiming a prebuilt environment.
1819

19-
For tipson preventing replacementsand improving claim performance, see [this guide](https://coder.com/docs/TODO).
20+
For tipson preventing replacementsand improving claim performance, see [this guide](https://coder.com/docs/admin/templates/extending-templates/prebuilt-workspaces.md#preventing-resource-replacement).
21+
22+
NOTE: this prebuilt workspace used the**{{.Labels.preset}}** preset.
2023
$$,
21-
'Workspace Events',
24+
'Template Events',
2225
'[
2326
{
2427
"label": "View workspace build",
2528
"url": "{{base_url}}/@{{.Labels.claimant}}/{{.Labels.workspace}}/builds/{{.Labels.workspace_build_num}}"
29+
},
30+
{
31+
"label": "View template version",
32+
"url": "{{base_url}}/templates/{{.Labels.org}}/{{.Labels.template}}/versions/{{.Labels.template_version}}"
2633
}
2734
]'::jsonb);

‎coderd/database/querier.go‎

Lines changed: 1 addition & 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: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/prebuilds.sql‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ FROM templates t
4242
WHEREtvp.desired_instancesIS NOT NULL-- Consider only presets that have a prebuild configuration.
4343
AND (t.id=sqlc.narg('template_id')::uuidORsqlc.narg('template_id') ISNULL);
4444

45+
-- name: GetTemplatePresetsByID :one
46+
SELECT*
47+
FROM template_version_presets
48+
WHERE id= $1;
49+
4550
-- name: GetRunningPrebuiltWorkspaces :many
4651
SELECT
4752
p.id,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp