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

Commited828f6

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

27 files changed

+870
-93
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
@@ -1928,6 +1928,10 @@ func (q *querier) GetProvisionerDaemonsByOrganization(ctx context.Context, organ
19281928
returnfetchWithPostFilter(q.auth,policy.ActionRead,q.db.GetProvisionerDaemonsByOrganization)(ctx,organizationID)
19291929
}
19301930

1931+
func (q*querier)GetProvisionerDaemonsWithStatusByOrganization(ctx context.Context,arg database.GetProvisionerDaemonsWithStatusByOrganizationParams) ([]database.GetProvisionerDaemonsWithStatusByOrganizationRow,error) {
1932+
returnfetchWithPostFilter(q.auth,policy.ActionRead,q.db.GetProvisionerDaemonsWithStatusByOrganization)(ctx,arg)
1933+
}
1934+
19311935
func (q*querier)GetProvisionerJobByID(ctx context.Context,id uuid.UUID) (database.ProvisionerJob,error) {
19321936
job,err:=q.db.GetProvisionerJobByID(ctx,id)
19331937
iferr!=nil {

‎coderd/database/dbauthz/dbauthz_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2119,6 +2119,18 @@ func (s *MethodTestSuite) TestExtraMethods() {
21192119
s.NoError(err,"get provisioner daemon by org")
21202120
check.Args(database.GetProvisionerDaemonsByOrganizationParams{OrganizationID:org.ID}).Asserts(d,policy.ActionRead).Returns(ds)
21212121
}))
2122+
s.Run("GetProvisionerDaemonsWithStatusByOrganization",s.Subtest(func(db database.Store,check*expects) {
2123+
org:=dbgen.Organization(s.T(),db, database.Organization{})
2124+
d:=dbgen.ProvisionerDaemon(s.T(),db, database.ProvisionerDaemon{
2125+
OrganizationID:org.ID,
2126+
Tags:map[string]string{
2127+
provisionersdk.TagScope:provisionersdk.ScopeOrganization,
2128+
},
2129+
})
2130+
ds,err:=db.GetProvisionerDaemonsWithStatusByOrganization(context.Background(), database.GetProvisionerDaemonsWithStatusByOrganizationParams{OrganizationID:org.ID})
2131+
s.NoError(err,"get provisioner daemon with status by org")
2132+
check.Args(database.GetProvisionerDaemonsWithStatusByOrganizationParams{OrganizationID:org.ID}).Asserts(d,policy.ActionRead).Returns(ds)
2133+
}))
21222134
s.Run("GetEligibleProvisionerDaemonsByProvisionerJobIDs",s.Subtest(func(db database.Store,check*expects) {
21232135
org:=dbgen.Organization(s.T(),db, database.Organization{})
21242136
tags:=database.StringMap(map[string]string{

‎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