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

Commit071bb26

Browse files
authored
feat(coderd): add endpoint to list provisioner daemons (#16028)
Updates#15190Updates#15084Supersedes#15940
1 parentd7809ec commit071bb26

31 files changed

+1106
-188
lines changed

‎coderd/apidoc/docs.go

Lines changed: 60 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 52 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/coderd.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,6 +1007,9 @@ func New(options *Options) *API {
10071007
})
10081008
})
10091009
})
1010+
r.Route("/provisionerdaemons",func(r chi.Router) {
1011+
r.Get("/",api.provisionerDaemons)
1012+
})
10101013
})
10111014
})
10121015
r.Route("/templates",func(r chi.Router) {

‎coderd/database/dbauthz/dbauthz.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,6 +1936,10 @@ func (q *querier) GetProvisionerDaemonsByOrganization(ctx context.Context, organ
19361936
returnfetchWithPostFilter(q.auth,policy.ActionRead,q.db.GetProvisionerDaemonsByOrganization)(ctx,organizationID)
19371937
}
19381938

1939+
func (q*querier)GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context,arg database.GetProvisionerDaemonsWithStatusByOrganizationParams) ([]database.GetProvisionerDaemonsWithStatusByOrganizationRow,error) {
1940+
returnfetchWithPostFilter(q.auth,policy.ActionRead,q.db.GetProvisionerDaemonsWithStatusByOrganization)(ctx,arg)
1941+
}
1942+
19391943
func (q*querier)GetProvisionerJobByID(ctx context.Context,id uuid.UUID) (database.ProvisionerJob,error) {
19401944
job,err:=q.db.GetProvisionerJobByID(ctx,id)
19411945
iferr!=nil {

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3189,6 +3189,24 @@ func (s *MethodTestSuite) TestExtraMethods() {
31893189
s.NoError(err,"get provisioner daemon by org")
31903190
check.Args(database.GetProvisionerDaemonsByOrganizationParams{OrganizationID:org.ID}).Asserts(d,policy.ActionRead).Returns(ds)
31913191
}))
3192+
s.Run("GetProvisionerDaemonsWithStatusByOrganization",s.Subtest(func(db database.Store,check*expects) {
3193+
org:=dbgen.Organization(s.T(),db, database.Organization{})
3194+
d:=dbgen.ProvisionerDaemon(s.T(),db, database.ProvisionerDaemon{
3195+
OrganizationID:org.ID,
3196+
Tags:map[string]string{
3197+
provisionersdk.TagScope:provisionersdk.ScopeOrganization,
3198+
},
3199+
})
3200+
ds,err:=db.GetProvisionerDaemonsWithStatusByOrganization(context.Background(), database.GetProvisionerDaemonsWithStatusByOrganizationParams{
3201+
OrganizationID:org.ID,
3202+
StaleIntervalMS:24*time.Hour.Milliseconds(),
3203+
})
3204+
s.NoError(err,"get provisioner daemon with status by org")
3205+
check.Args(database.GetProvisionerDaemonsWithStatusByOrganizationParams{
3206+
OrganizationID:org.ID,
3207+
StaleIntervalMS:24*time.Hour.Milliseconds(),
3208+
}).Asserts(d,policy.ActionRead).Returns(ds)
3209+
}))
31923210
s.Run("GetEligibleProvisionerDaemonsByProvisionerJobIDs",s.Subtest(func(db database.Store,check*expects) {
31933211
dbtestutil.DisableForeignKeysAndTriggers(s.T(),db)
31943212
org:=dbgen.Organization(s.T(),db, database.Organization{})

‎coderd/database/dbgen/dbgen.go

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,27 @@ func GroupMember(t testing.TB, db database.Store, member database.GroupMemberTab
505505

506506
// ProvisionerDaemon creates a provisioner daemon as far as the database is concerned. It does not run a provisioner daemon.
507507
// If no key is provided, it will create one.
508-
funcProvisionerDaemon(t testing.TB,db database.Store,daemon database.ProvisionerDaemon) database.ProvisionerDaemon {
508+
funcProvisionerDaemon(t testing.TB,db database.Store,orig database.ProvisionerDaemon) database.ProvisionerDaemon {
509509
t.Helper()
510510

511+
vardefOrgID uuid.UUID
512+
iforig.OrganizationID==uuid.Nil {
513+
defOrg,_:=db.GetDefaultOrganization(genCtx)
514+
defOrgID=defOrg.ID
515+
}
516+
517+
daemon:= database.UpsertProvisionerDaemonParams{
518+
Name:takeFirst(orig.Name,testutil.GetRandomName(t)),
519+
OrganizationID:takeFirst(orig.OrganizationID,defOrgID,uuid.New()),
520+
CreatedAt:takeFirst(orig.CreatedAt,dbtime.Now()),
521+
Provisioners:takeFirstSlice(orig.Provisioners, []database.ProvisionerType{database.ProvisionerTypeEcho}),
522+
Tags:takeFirstMap(orig.Tags, database.StringMap{}),
523+
KeyID:takeFirst(orig.KeyID,uuid.Nil),
524+
LastSeenAt:takeFirst(orig.LastSeenAt, sql.NullTime{Time:dbtime.Now(),Valid:true}),
525+
Version:takeFirst(orig.Version,"v0.0.0"),
526+
APIVersion:takeFirst(orig.APIVersion,"1.1"),
527+
}
528+
511529
ifdaemon.KeyID==uuid.Nil {
512530
key,err:=db.InsertProvisionerKey(genCtx, database.InsertProvisionerKeyParams{
513531
ID:uuid.New(),
@@ -521,24 +539,7 @@ func ProvisionerDaemon(t testing.TB, db database.Store, daemon database.Provisio
521539
daemon.KeyID=key.ID
522540
}
523541

524-
ifdaemon.CreatedAt.IsZero() {
525-
daemon.CreatedAt=dbtime.Now()
526-
}
527-
ifdaemon.Name=="" {
528-
daemon.Name="test-daemon"
529-
}
530-
531-
d,err:=db.UpsertProvisionerDaemon(genCtx, database.UpsertProvisionerDaemonParams{
532-
Name:daemon.Name,
533-
OrganizationID:daemon.OrganizationID,
534-
CreatedAt:daemon.CreatedAt,
535-
Provisioners:daemon.Provisioners,
536-
Tags:daemon.Tags,
537-
KeyID:daemon.KeyID,
538-
LastSeenAt:daemon.LastSeenAt,
539-
Version:daemon.Version,
540-
APIVersion:daemon.APIVersion,
541-
})
542+
d,err:=db.UpsertProvisionerDaemon(genCtx,daemon)
542543
require.NoError(t,err)
543544
returnd
544545
}
@@ -1109,6 +1110,12 @@ func takeFirstSlice[T any](values ...[]T) []T {
11091110
})
11101111
}
11111112

1113+
functakeFirstMap[T,Ecomparable](values...map[T]E)map[T]E {
1114+
returntakeFirstF(values,func(vmap[T]E)bool {
1115+
returnv!=nil
1116+
})
1117+
}
1118+
11121119
// takeFirstF takes the first value that returns true
11131120
functakeFirstF[Valueany](values []Value,takefunc(vValue)bool)Value {
11141121
for_,v:=rangevalues {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp