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

Commitf36fb67

Browse files
authored
chore: use static params when dynamic param metadata is missing (#17836)
Existing template versions do not have the metadata (modules + plan) inthe db. So revert to using static parameter information from theoriginal template import.This data will still be served over the websocket.
1 parentfb0e3d6 commitf36fb67

File tree

14 files changed

+553
-246
lines changed

14 files changed

+553
-246
lines changed

‎coderd/coderd.go

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1597,7 +1597,7 @@ type API struct {
15971597
// passed to dbauthz.
15981598
AccessControlStore*atomic.Pointer[dbauthz.AccessControlStore]
15991599
PortSharer atomic.Pointer[portsharing.PortSharer]
1600-
FileCache files.Cache
1600+
FileCache*files.Cache
16011601
PrebuildsClaimer atomic.Pointer[prebuilds.Claimer]
16021602
PrebuildsReconciler atomic.Pointer[prebuilds.ReconciliationOrchestrator]
16031603

@@ -1722,13 +1722,30 @@ func compressHandler(h http.Handler) http.Handler {
17221722
returncmp.Handler(h)
17231723
}
17241724

1725+
typeMemoryProvisionerDaemonOptionfunc(*memoryProvisionerDaemonOptions)
1726+
1727+
funcMemoryProvisionerWithVersionOverride(versionstring)MemoryProvisionerDaemonOption {
1728+
returnfunc(opts*memoryProvisionerDaemonOptions) {
1729+
opts.versionOverride=version
1730+
}
1731+
}
1732+
1733+
typememoryProvisionerDaemonOptionsstruct {
1734+
versionOverridestring
1735+
}
1736+
17251737
// CreateInMemoryProvisionerDaemon is an in-memory connection to a provisionerd.
17261738
// Useful when starting coderd and provisionerd in the same process.
17271739
func (api*API)CreateInMemoryProvisionerDaemon(dialCtx context.Context,namestring,provisionerTypes []codersdk.ProvisionerType) (client proto.DRPCProvisionerDaemonClient,errerror) {
17281740
returnapi.CreateInMemoryTaggedProvisionerDaemon(dialCtx,name,provisionerTypes,nil)
17291741
}
17301742

1731-
func (api*API)CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context,namestring,provisionerTypes []codersdk.ProvisionerType,provisionerTagsmap[string]string) (client proto.DRPCProvisionerDaemonClient,errerror) {
1743+
func (api*API)CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context,namestring,provisionerTypes []codersdk.ProvisionerType,provisionerTagsmap[string]string,opts...MemoryProvisionerDaemonOption) (client proto.DRPCProvisionerDaemonClient,errerror) {
1744+
options:=&memoryProvisionerDaemonOptions{}
1745+
for_,opt:=rangeopts {
1746+
opt(options)
1747+
}
1748+
17321749
tracer:=api.TracerProvider.Tracer(tracing.TracerName)
17331750
clientSession,serverSession:=drpcsdk.MemTransportPipe()
17341751
deferfunc() {
@@ -1755,6 +1772,12 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
17551772
returnnil,xerrors.Errorf("failed to parse built-in provisioner key ID: %w",err)
17561773
}
17571774

1775+
apiVersion:=proto.CurrentVersion.String()
1776+
ifoptions.versionOverride!=""&&flag.Lookup("test.v")!=nil {
1777+
// This should only be usable for unit testing. To fake a different provisioner version
1778+
apiVersion=options.versionOverride
1779+
}
1780+
17581781
//nolint:gocritic // in-memory provisioners are owned by system
17591782
daemon,err:=api.Database.UpsertProvisionerDaemon(dbauthz.AsSystemRestricted(dialCtx), database.UpsertProvisionerDaemonParams{
17601783
Name:name,
@@ -1764,7 +1787,7 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
17641787
Tags:provisionersdk.MutateTags(uuid.Nil,provisionerTags),
17651788
LastSeenAt: sql.NullTime{Time:dbtime.Now(),Valid:true},
17661789
Version:buildinfo.Version(),
1767-
APIVersion:proto.CurrentVersion.String(),
1790+
APIVersion:apiVersion,
17681791
KeyID:keyID,
17691792
})
17701793
iferr!=nil {

‎coderd/coderdtest/coderdtest.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ type Options struct {
135135

136136
// IncludeProvisionerDaemon when true means to start an in-memory provisionerD
137137
IncludeProvisionerDaemonbool
138+
ProvisionerDaemonVersionstring
138139
ProvisionerDaemonTagsmap[string]string
139140
MetricsCacheRefreshInterval time.Duration
140141
AgentStatsRefreshInterval time.Duration
@@ -601,7 +602,7 @@ func NewWithAPI(t testing.TB, options *Options) (*codersdk.Client, io.Closer, *c
601602
setHandler(rootHandler)
602603
varprovisionerCloser io.Closer=nopcloser{}
603604
ifoptions.IncludeProvisionerDaemon {
604-
provisionerCloser=NewTaggedProvisionerDaemon(t,coderAPI,"test",options.ProvisionerDaemonTags)
605+
provisionerCloser=NewTaggedProvisionerDaemon(t,coderAPI,"test",options.ProvisionerDaemonTags,coderd.MemoryProvisionerWithVersionOverride(options.ProvisionerDaemonVersion))
605606
}
606607
client:=codersdk.New(serverURL)
607608
t.Cleanup(func() {
@@ -648,7 +649,7 @@ func NewProvisionerDaemon(t testing.TB, coderAPI *coderd.API) io.Closer {
648649
returnNewTaggedProvisionerDaemon(t,coderAPI,"test",nil)
649650
}
650651

651-
funcNewTaggedProvisionerDaemon(t testing.TB,coderAPI*coderd.API,namestring,provisionerTagsmap[string]string) io.Closer {
652+
funcNewTaggedProvisionerDaemon(t testing.TB,coderAPI*coderd.API,namestring,provisionerTagsmap[string]string,opts...coderd.MemoryProvisionerDaemonOption) io.Closer {
652653
t.Helper()
653654

654655
// t.Cleanup runs in last added, first called order. t.TempDir() will delete
@@ -676,7 +677,7 @@ func NewTaggedProvisionerDaemon(t testing.TB, coderAPI *coderd.API, name string,
676677

677678
connectedCh:=make(chanstruct{})
678679
daemon:=provisionerd.New(func(dialCtx context.Context) (provisionerdproto.DRPCProvisionerDaemonClient,error) {
679-
returncoderAPI.CreateInMemoryTaggedProvisionerDaemon(dialCtx,name, []codersdk.ProvisionerType{codersdk.ProvisionerTypeEcho},provisionerTags)
680+
returncoderAPI.CreateInMemoryTaggedProvisionerDaemon(dialCtx,name, []codersdk.ProvisionerType{codersdk.ProvisionerTypeEcho},provisionerTags,opts...)
680681
},&provisionerd.Options{
681682
Logger:coderAPI.Logger.Named("provisionerd").Leveled(slog.LevelDebug),
682683
UpdateInterval:250*time.Millisecond,

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,8 +1214,8 @@ func (s *MethodTestSuite) TestTemplate() {
12141214
JobID:job.ID,
12151215
TemplateID: uuid.NullUUID{UUID:t.ID,Valid:true},
12161216
})
1217-
dbgen.TemplateVersionTerraformValues(s.T(),db, database.InsertTemplateVersionTerraformValuesByJobIDParams{
1218-
JobID:job.ID,
1217+
dbgen.TemplateVersionTerraformValues(s.T(),db, database.TemplateVersionTerraformValue{
1218+
TemplateVersionID:tv.ID,
12191219
})
12201220
check.Args(tv.ID).Asserts(t,policy.ActionRead)
12211221
}))

‎coderd/database/dbgen/dbgen.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,11 +998,19 @@ func TemplateVersionParameter(t testing.TB, db database.Store, orig database.Tem
998998
returnversion
999999
}
10001000

1001-
funcTemplateVersionTerraformValues(t testing.TB,db database.Store,orig database.InsertTemplateVersionTerraformValuesByJobIDParams) {
1001+
funcTemplateVersionTerraformValues(t testing.TB,db database.Store,orig database.TemplateVersionTerraformValue) database.TemplateVersionTerraformValue {
10021002
t.Helper()
10031003

1004+
jobID:=uuid.New()
1005+
iforig.TemplateVersionID!=uuid.Nil {
1006+
v,err:=db.GetTemplateVersionByID(genCtx,orig.TemplateVersionID)
1007+
iferr==nil {
1008+
jobID=v.JobID
1009+
}
1010+
}
1011+
10041012
params:= database.InsertTemplateVersionTerraformValuesByJobIDParams{
1005-
JobID:takeFirst(orig.JobID,uuid.New()),
1013+
JobID:jobID,
10061014
CachedPlan:takeFirstSlice(orig.CachedPlan, []byte("{}")),
10071015
CachedModuleFiles:orig.CachedModuleFiles,
10081016
UpdatedAt:takeFirst(orig.UpdatedAt,dbtime.Now()),
@@ -1011,6 +1019,11 @@ func TemplateVersionTerraformValues(t testing.TB, db database.Store, orig databa
10111019

10121020
err:=db.InsertTemplateVersionTerraformValuesByJobID(genCtx,params)
10131021
require.NoError(t,err,"insert template version parameter")
1022+
1023+
v,err:=db.GetTemplateVersionTerraformValues(genCtx,orig.TemplateVersionID)
1024+
require.NoError(t,err,"get template version values")
1025+
1026+
returnv
10141027
}
10151028

10161029
funcWorkspaceAgentStat(t testing.TB,db database.Store,orig database.WorkspaceAgentStat) database.WorkspaceAgentStat {

‎coderd/files/cache.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616

1717
// NewFromStore returns a file cache that will fetch files from the provided
1818
// database.
19-
funcNewFromStore(store database.Store)Cache {
19+
funcNewFromStore(store database.Store)*Cache {
2020
fetcher:=func(ctx context.Context,fileID uuid.UUID) (fs.FS,error) {
2121
file,err:=store.GetFileByID(ctx,fileID)
2222
iferr!=nil {
@@ -27,7 +27,7 @@ func NewFromStore(store database.Store) Cache {
2727
returnarchivefs.FromTarReader(content),nil
2828
}
2929

30-
returnCache{
30+
return&Cache{
3131
lock: sync.Mutex{},
3232
data:make(map[uuid.UUID]*cacheEntry),
3333
fetcher:fetcher,
@@ -112,3 +112,12 @@ func (c *Cache) Release(fileID uuid.UUID) {
112112

113113
delete(c.data,fileID)
114114
}
115+
116+
// Count returns the number of files currently in the cache.
117+
// Mainly used for unit testing assertions.
118+
func (c*Cache)Count()int {
119+
c.lock.Lock()
120+
deferc.lock.Unlock()
121+
122+
returnlen(c.data)
123+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp