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

Commitef1b04c

Browse files
committed
feat(coderd): add endpoint to list provisioner daemons
Updates#15190Updates#15084Supercedes#15940
1 parentf4994ca commitef1b04c

28 files changed

+930
-110
lines changed

‎coderd/apidoc/docs.go

Lines changed: 105 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: 97 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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3183,6 +3183,18 @@ func (s *MethodTestSuite) TestExtraMethods() {
31833183
s.NoError(err,"get provisioner daemon by org")
31843184
check.Args(database.GetProvisionerDaemonsByOrganizationParams{OrganizationID:org.ID}).Asserts(d,policy.ActionRead).Returns(ds)
31853185
}))
3186+
s.Run("GetProvisionerDaemonsWithStatusByOrganization",s.Subtest(func(db database.Store,check*expects) {
3187+
org:=dbgen.Organization(s.T(),db, database.Organization{})
3188+
d:=dbgen.ProvisionerDaemon(s.T(),db, database.ProvisionerDaemon{
3189+
OrganizationID:org.ID,
3190+
Tags:map[string]string{
3191+
provisionersdk.TagScope:provisionersdk.ScopeOrganization,
3192+
},
3193+
})
3194+
ds,err:=db.GetProvisionerDaemonsWithStatusByOrganization(context.Background(), database.GetProvisionerDaemonsWithStatusByOrganizationParams{OrganizationID:org.ID})
3195+
s.NoError(err,"get provisioner daemon with status by org")
3196+
check.Args(database.GetProvisionerDaemonsWithStatusByOrganizationParams{OrganizationID:org.ID}).Asserts(d,policy.ActionRead).Returns(ds)
3197+
}))
31863198
s.Run("GetEligibleProvisionerDaemonsByProvisionerJobIDs",s.Subtest(func(db database.Store,check*expects) {
31873199
dbtestutil.DisableForeignKeysAndTriggers(s.T(),db)
31883200
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